从Vue模板生成PDF

时间:2018-12-18 00:30:06

标签: ruby-on-rails pdf vue.js nuxt.js

我需要创建使用Vue呈现的页面的可下载pdf。我们正在使用的HTML模板API是DocRaptor。

  • 使用Rails构建的API
  • 使用Vue构建的客户端

两种方法都是可能的:

  1. 将URL传递到页面,然后将页面呈现为PDF。 问题。

    • 该页面位于我们的身份验证后面,我是否在标题中传递会话令牌?
    • 页面正在调用我们的API,这意味着上面的内容甚至都没有关系...我假设您该页面只会获取原始html,而不在DocRaptor POST请求中运行JS。
  2. 通过样式传递DocRaptor POST请求中的原始html。 问题

    • 我们不使用服务器端渲染,因此无法访问漂亮的预渲染html字符串
    • 弄清楚如何将vue编译为原始html

我要离开这里吗?

上面的两个选项似乎很可行。我希望选项1能够正常工作,但是我不知道如何使用-这让我有了选项2,但是除了服务器端渲染之外,没有什么谷歌搜索功能可以给我答案。我什至可以对单个页面执行此操作吗?我认为整个应用程序都会渲染。

2 个答案:

答案 0 :(得分:1)

如果您已经建立了某种身份验证机制(例如,短暂的令牌),则选项1可以工作。 DocRaptor确实会执行您的JavaScript,因此应该可以使用。

答案 1 :(得分:0)

您可以在客户端上渲染一个不可见的元素(或者甚至可见,并让用户认为这是预览),然后使用旧的innerHTML

let html = document.querySelector('#render-placeholder').innerHTML;

,然后将其发布到服务器以转发到pdf渲染器(以使服务访问令牌保密)。