当前位置: 首页 > 知识库问答 >
问题:

使用未在路由器视图中呈现的Vue.js组件制作pdf

颜华池
2023-03-14

我有一个带有永久按钮的网站,供人们下载pdf文档(我的简历)。永久性的意思是,它在网站的导航栏上随时显示,供人们下载。

但是我想控制pdf中包含的内容,所以我决定创建一个新的组件,名为MyCV,并使用json文档动态构建最终将被提取为pdf的html。

所以我这样处理这个问题:

  • 添加新的组件MyCVApp.vue
  • v-show="false"隐藏组件,因为我不想让它被看到
  • 点击下载按钮,触发自定义事件exportpdf,该事件将被MyCV组件拾取,并将触发实际的导出到pdf函数。

从理论上讲,它听起来很简单,也很合乎逻辑,但实际上它不起作用(或者我可能对Vue.js很生疏)。

守则:

App.vue

<template>
...
   <v-btn small v-on:click="emitExtractPDFEvent()">Download CV</v-btn>

...

   <MyCV
       v-show="false"
       v-on:extractpdf="printToPDF()"
   ></MyCV>
</template>

<script>

      emitExtractPDFEvent: function() {
          this.$emit('extractpdf');
      },
      printToPDF: function() {
        console.log('MAGIC! I'm ready to export the pdf!!!');
      }
</script>

这绝对不是由html2canvas或jspdf引起的,因为我去掉了任何html2canvas/jspdf代码的方法,只是为了确保我首先对整个定制事件都做了正确的处理。

提前感谢!

共有2个答案

能修谨
2023-03-14

您只能生成页面上显示的内容的PDF(可打印)。实际上,chrome会将视图转换为可以打印的图像。这可以通过使用window.print()函数来完成,但在内容显示在屏幕上之前,它不会工作。

为了从json数据生成PDF而不向用户显示,我建议您检查一些第三方库,如jsreport

解高昂
2023-03-14

我最终试图重新表述这个问题,并得到了这个问题和答案:如何在父事件上调用子组件上的函数

我放弃了整个定制事件解决方案,只是在触发click事件时从父组件触发子组件中存在的print to pdf方法。

 类似资料:
  • 我有一个React应用程序,目前正在使用react-router@4.2.0,当URL更改时,我正在努力渲染特定的组件。 当我尝试访问时,CityList组件返回一个PropTypes错误。我已经尝试在LocationsWrapper中的Route组件中添加,然后再添加Main config,但是,这会影响其他路由,例如,使其变为空。 //浏览器路由器 //路由器配置-(路由) 我最好避免

  • 我最近在我的路由中实现了反应路由器开关组件,以便呈现一个NoMatch组件(这只是一个404错误组件)。然而,在我的路由中实现这一点后,我注意到在我的主页上只有一个组件会呈现,标题组件。 标题和搜索栏都应该呈现到相同的路径。 我的代码如下: 我注意到如果我删除了Switch组件,那么一切都会渲染得很好,但是NoMatch组件也会渲染到路由。 问题:为什么我不能在交换机内部的同一路径上渲染多个组件?

  • 我使用Queue发送电子邮件,代码如下: 在控制器部分,我使用send- 我正在使用视图: 现在,当我尝试发送时,收到的电子邮件中没有任何内容。 我已经调试了整个供应商\laravel\framework\src\illighted\Mail\Mailer。php类并发现renderView函数中无法呈现视图。 我还将视图Doctype更改为HTML5,但得到了相同的结果,没有内容。 渲染视图正在

  • react&React-Router的新功能。我正在使用react-router-4 我有以下组件-login-home-header-sidebar-content 登录组件没有标题或侧栏。 这就是我的路由 应用程序JS 然后在我的Home组件中,我有侧边栏和内容。 home.js呈现方法 侧边栏组件有一个链接,该链接具有“to”值“/home/dashboard”。 不幸的是,这并不奏效。单击

  • 我意识到以前有人问过我这个问题,请容忍我,因为我还在学习这个问题。我想我已经尝试了所有的解决方案,但是没有运气。 问题是:当重定向到时,它没有呈现预期的组件() 我已经实现了一个,如下所示; privaterout.js 这就是我使用它的地方; index.js 在这个问题中要补充几点: 我确认重定向确实发生在(我通过将