【问题标题】:jsPDF convert html to pdf: utf-8 works only with text, but not htmljsPDF 将 html 转换为 pdf:utf-8 仅适用于文本,但不适用于 html
【发布时间】:2020-04-15 12:14:30
【问题描述】:

我需要使用 jsPDF 将 html 转换为 pdf。 它包含 UTF-8 符号(西里尔文)。 我使用 fontconverter 为我的自定义字体生成 js 文件,如下所示: https://github.com/MrRio/jsPDF

所以现在带有文本的示例就像一个魅力。

var pdf = new jsPDF('p', 'pt', 'letter');
doc.setFont('PTSans');
doc.setFontSize(10);
doc.text("А ну чики брики и в дамки!", 10, 10);

html 示例会忽略我的自定义字体并导出不正确的符号。

var pdf = new jsPDF('p', 'pt', 'letter');
doc.setFont('PTSans');
doc.setFontSize(10);
pdf.html( "<html>А ну чики брики и в дамки!</html>", { callback: function (pdf) {
    var iframe = document.createElement('iframe');
    iframe.setAttribute('style', 'position:absolute;right:0; top:0; bottom:0; height:100%; width:500px');
    document.body.appendChild(iframe);
    iframe.src = pdf.output('datauristring');
    }
});

我需要做什么才能将 html 导出为带有 unicode 符号的 pdf?

【问题讨论】:

  • HTML 是什么样的?是否使用正确的字符集提供服务?
  • 我尝试了“А ну чики брики и в дамки!”和“А ну чики брики и в дамки!”。我应该如何提供字符集?
  • 你改变了问题。它不适用于字符串中的 HTML 而不是 document.body 吗?你在使用网络服务器吗?确保 HTTP 标头 Content-type 包含所有文件(HTML 和 JavaScript)的字符集。否则在 HTML 中设置元标记。见:w3.org/International/questions/qa-html-encoding-declarations.en
  • @RoToRa,感谢您的回答。它不适用于 document.body&lt;html&gt;А ну чики брики и в дамки!&lt;/html&gt; 如果我提供字符集也不起作用:&lt;html&gt;&lt;head&gt;&lt;meta charset=\"utf-8\"/&gt;&lt;/head&gt;А ну чики брики и в дамки!&lt;/html&gt;
  • 我什至试过这个 - 但同样的结果&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;html&gt;&lt;head&gt;&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"/&gt;&lt;/head&gt;А ну чики брики и в дамки!&lt;/html&gt;

标签: javascript jspdf


【解决方案1】:

我还没有找到如何解决这个问题,并在 jspdf github 上创建了问题。 而且我发现 pdfmake.org 可以正确使用 utf-8 符号,所以如果您有同样的问题,请使用 pdfmake。

【讨论】:

  • 我也有同样的问题
猜你喜欢
  • 2022-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多