Nodejs有啥支持生成中文pdf的包么,pdfkit我用了,不支持中文
Nodejs有啥支持生成中文pdf的包么,pdfkit我用了,不支持中文
Nodejs有啥支持生成中文PDF的包么,pdfkit我用了,不支持中文
在使用Node.js生成包含中文字符的PDF文件时,pdfkit
确实存在一些局限性,尤其是在处理中文字体方面。幸运的是,还有其他一些库可以满足你的需求。
推荐使用 html-pdf
和 phantomjs
一个较为简单的方法是利用html-pdf
结合phantomjs
来生成PDF文件。html-pdf
可以将HTML转换成PDF文件,而phantomjs
则是一个无头浏览器,能够渲染复杂的HTML和CSS。你可以将包含中文字符的HTML页面渲染为PDF。
示例代码:
首先安装必要的依赖:
npm install html-pdf phantom
然后创建一个简单的Node.js脚本:
const pdf = require('html-pdf');
const phantom = require('phantom');
// 创建HTML内容,包括中文字符
const content = `
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>示例PDF</title>
<style>
body {
font-family: "SimHei", sans-serif;
}
</style>
</head>
<body>
<h1>你好,世界!</h1>
<p>这是一个包含中文字符的段落。</p>
</body>
</html>
`;
// 使用phantom创建无头浏览器实例
(async () => {
const instance = await phantom.create();
const page = await instance.createPage();
// 设置页面内容
await page.setContent(content);
// 将页面转换为PDF并保存到文件
await page.render('example.pdf');
// 关闭实例
await instance.exit();
})();
使用 jspdf
和 jspdf-autotable
如果你更倾向于直接操作PDF,jspdf
是一个非常流行的JavaScript库,它支持生成PDF文件。结合jspdf-autotable
插件,可以更方便地处理表格数据,并且支持中文。
示例代码:
首先安装必要的依赖:
npm install jspdf jspdf-autotable
然后创建一个简单的Node.js脚本:
const { jsPDF } = require("jspdf");
require("jspdf-autotable");
const doc = new jsPDF();
doc.setFont("simhei"); // 设置字体为黑体
doc.text("你好,世界!", 20, 20); // 添加文本
// 创建表格
doc.autoTable({
head: [["姓名", "年龄"]],
body: [
["张三", "25"],
["李四", "30"]
],
styles: {
fontSize: 10,
cellPadding: 2
},
didDrawCell: data => {
if (data.column.index === 0) {
doc.setFont("simhei");
}
}
});
doc.save("example.pdf");
通过这些方法,你可以轻松地在Node.js中生成包含中文字符的PDF文件。希望这些示例对你有所帮助!
找不到好的支持unicode的字体库,找到了一些也都支持得不太好。 我这边后来换方案了,改成调用java来做了
看到你之前关于pdfkit的问题了。话说pdfkit如何换字体库(即使是支持的不好的)。小白一个,请指教。 我convert了几个.afm文件,然后到pdfkit里改了字体目录。但是一运行总是各种奇葩的错误。
我前几天刚做的,是html转pdf的,不知道跟你的需求是否一样,可以参考下这个 https://github.com/TJkrusinski/NodePDF
用pdf.js 有中文汉化js库
phantomjs 支持中文字体的pdf输出
可以的,前提是你得装phantomjs
pdfkit,加入一个支持中文的字体文件就可以支持中文了,方式:doc.font(‘xxxx.ttf’);
当然可以。pdfkit
确实存在对中文字符支持不友好的问题,不过你可以尝试使用其他 Node.js 库来生成包含中文字符的 PDF 文件。这里推荐使用 jspdf
结合 html2canvas
来实现这一需求。
示例代码
首先,你需要安装以下依赖:
npm install jspdf html2canvas
然后,你可以使用以下代码片段来创建一个包含中文字符的 PDF 文件:
const jsPDF = require('jspdf');
const html2canvas = require('html2canvas');
// 创建一个新的 PDF 文档
const doc = new jsPDF();
// 定义一个包含中文字符的 HTML 字符串
const content = `<div style="font-family: 'SimSun', sans-serif; font-size: 16px;">
这是一段测试文本。
</div>`;
// 将 HTML 转换为 canvas 元素
html2canvas(document.createElement('div'), {
onrendered: function(canvas) {
// 将 canvas 元素转换为图像数据
const imgData = canvas.toDataURL('image/png');
// 添加图像到 PDF 文档中
doc.addImage(imgData, 'PNG', 15, 40, 180, 160);
// 保存 PDF 文件
doc.save('带中文字符的PDF.pdf');
}
});
上述代码中,我们使用了 html2canvas
将包含中文字符的 HTML 内容渲染为 canvas 对象,再将该 canvas 对象转为图像,并添加到 PDF 文档中。
请注意,这种方法可能无法直接嵌入中文字体到 PDF 中,但它可以确保在 PDF 文件中正确显示中文字符。如果你需要更精确的控制,可以考虑使用 node-canvas
或 puppeteer
进行更复杂的操作。
希望这对你有所帮助!