【问题标题】:jsPDF generates a pdf with stretched elements insidejsPDF 生成一个带有拉伸元素的 pdf
【发布时间】:2019-04-08 05:56:21
【问题描述】:

我正在尝试将 Html2Canvas 与 jsPDF 一起使用以从 html 生成 pdf。归档我关注的this quick tutorial

我正在尝试渲染一个简单的 Hello World h1,实际上我得到了 pdf 和 Hello World,但是要拉伸,我不知道如何将其更改为正确显示,您可以看到下图:

我已经尝试将 PDF 对象的配置更改为:pdf.internal.scaleFactor = 2.25;

但这似乎并没有改变什么,我也尝试了一些其他的配置更改,但没有成功。

<template>
  <div>
    <a @click="print">Print</a>
    <div id="nodeToRenderAsPDF">
      <h1>Hello World</h1>
    </div>
  </div>
</template>

<script>
import jsPDF from 'jspdf'
import html2canvas from 'html2canvas'

export default {
  name: 'HelloWorld',
  props: {
    msg: String
  },
  methods: {
    print() {
      const filename  = 'ThisIsYourPDFFilename.pdf';

      html2canvas(document.querySelector('#nodeToRenderAsPDF')).then(canvas => {
        let pdf = new jsPDF('p', 'mm', 'a4');
        pdf.internal.scaleFactor = 2.25;
        pdf.addImage(canvas.toDataURL('image/png'), 'PNG', 0, 0, 211, 298);
        pdf.save(filename);
      });
    }
  }
}
</script>

我得到的实际结果是 pdf 中的拉伸元素,我期望得到的是一个显示 hello world 的 PDF,其大小与浏览器上显示的 h1 相同。

【问题讨论】:

  • 您通过在 addImage 方法中传递宽度和高度 (211, 298) 参数来拉伸图像。您是否尝试省略这些参数?

标签: javascript vue.js jspdf html2canvas


【解决方案1】:

jspdf 我也有类似的问题。然后我转到了一个名为 pdfmake 的库。你可以试试,它是一个很棒的图书馆。

【讨论】:

  • 看起来很好,但它允许css样式吗?我找到了一些 js 风格的文档,但似乎很基本
  • 是的,确实如此。查看 pdfmake 游乐场
猜你喜欢
  • 2014-11-19
  • 2021-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
相关资源
最近更新 更多