mpa*_*c89 10 html javascript pdf utf-8 jspdf
我很高兴使用jsPDF库帮助我将我的HTML页面导出为PDF文件.我遇到了一些困难.我从http://parall.ax/products/jspdf/下载了这个库.当我使用像š,ć(UTF-8)这样的字符时,在pdf中它们看起来像错误.即使我通过doc.text插入.在图书馆的网站上,当我使用他们的例子并使用其中一些字符更改文本时 - 它可以工作.因此,假设使用UTF-8.为什么它不能在我的电脑上工作.
我提供了我的代码.这里缺少的是lib(可以从网站上下载),你会看到我的问题.为什么CSS在pdf中消失了?
testing.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>TESTING JSPDF LIB</title>
<script type="text/javascript" src="pdffile.js" charset="utf-8"></script>
<script type="text/javascript" src="jspdf/jquery/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="jspdf/jspdf.js"></script>
<script type="text/javascript" src="jspdf/libs/Deflate/adler32cs.js"></script>
<script type="text/javascript" src="jspdf/libs/FileSaver.js/FileSaver.js"></script>
<script type="text/javascript" src="jspdf/libs/Blob.js/BlobBuilder.js"></script>
<script type="text/javascript" src="jspdf/jspdf.plugin.addimage.js"></script>
<script type="text/javascript" src="jspdf/jspdf.plugin.standard_fonts_metrics.js"></script>
<script type="text/javascript" src="jspdf/jspdf.plugin.split_text_to_size.js"></script>
<script type="text/javascript" src="jspdf/jspdf.plugin.from_html.js"></script>
<script>
function redirect() {
document.write("Hello world" + '<br />');
}
</script>
</head>
<body>
<div id="box" class="box-shadow">
<input type="submit" name="ok" id="ok" value="LETS TRY" onClick="redirect();pdf();" /> </div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
pdffile.js
function pdf() {
document.write('<div id="mydiv" style="background-color:#CCC; width:780px;640px;"><p>Open these letters š and c in PDF file and see error</p></div><br />');
document.write('<button id="export">OPEN IN PDF FILE</button>');
$(function () {
var doc = new jsPDF();
doc.text(35, 25, "Text with the letter Š");
var specialElementHandlers = {
'body': function (element, renderer) {
return true;
}
};
$('#export').click(function () {
doc.fromHTML($('#mydiv').html(), 15, 15, {
'width': 170,
'elementHandlers': specialElementHandlers
});
doc.save('sample-file.pdf');
});
});
}
Run Code Online (Sandbox Code Playgroud)
截至2015年,jsPDF不能正确支持UTF-8,解决方法是使用html2canvas渲染jpg或png并将其添加到pdf.您可以使用以下代码段来获得一个想法:
var doc = new jsPDF();
var utf_8_string_to_render = 'any_value_you_want';
Promise.all(
[
new Promise(function (resolve)
{
var temp = document.createElement("div");
temp.id = "temp";
temp.style = "color: black;margin:0px;font-size:20px;";
phrase = utf_8_string_to_render;
temp.innerHTML= phrase;
//need to render element, otherwise it won't be displayed
document.body.appendChild(temp);
html2canvas($("#temp"), {
onrendered: function(canvas) {
$("#temp").remove();
resolve(canvas.toDataURL('image/png'));
},
});
})
]).then(function (ru_text) {
doc.addImage(ru_text[0], 'JPEG', 0,0);
doc.text(0, 10, 'Non-utf-8-string' );
doc.save('filename.pdf');
});
};
Run Code Online (Sandbox Code Playgroud)
另一个支持utf-8编码的库是:
小智 6
经过一天的搜索后我得到了答案,扔掉了所有网站。
\n\ntoPDF(): void {\n const AmiriRegular = \'AAEAAAASAQAABAAgRFNJR2D2zXQA.....A\';\n\n const doc = new jsPDF({ filters: ["ASCIIHexEncode"] });\n\n doc.addFileToVFS("Amiri-Regular.ttf", AmiriRegular);\n doc.addFont("Amiri-Regular.ttf", "Amiri", "normal");\n\n doc.setFont("Amiri"); // set font\n doc.setFontSize(10);\n\n doc.text(10,10,\'\xd7\x90\xd7\x95\xd7\x94\xd7\x91 \xd7\x90\xd7\x95\xd7\xaa\xd7\x9a\'.split(\'\').reverse().join(\'\'));\n this.CAccounts.forEach(function (AccountsBody, i) {\n doc.text(20, 20 + (i * 10),\n\n\n "ID: " + AccountsBody.ID +\n "NAME: " + AccountsBody.NAME.split(\'\').reverse().join(\'\'));\n });\n doc.save(\'employee.pdf\');\n\n }\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
38331 次 |
| 最近记录: |