我有一个html文件,其中有一些像{Ticket}这样的变量。在nodejs中,我试图将该变量替换为我拥有的图像。所以基本上输出将是一个pdf文件。
到目前为止,我的代码看起来像这样
ticket.html看起来像这样
IDENTITY
但它创建了一个空白的pdf文件。 我正在使用html-pdf生成pdf文件。我正在努力完成这项任务,但它无法正常工作。所以任何帮助和建议都会非常明显
答案 0 :(得分:2)
您需要以不同方式将图像插入页面(使用file://
协议)。实际上,该项目的GitHub页面上有一个示例,向您展示如何执行此操作here和here。
在您的情况下,这将转化为以下内容:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<table>
<tr>
<td></td>
<td><img src="{Ticket}"></td>
</tr>
</table>
</body>
</html>
和JS文件:
const fs = require('fs');
const pdf = require('html-pdf');
const html = fs.readFileSync('./ticket.html', 'utf8');
const customHtml = html.replace('{Ticket}', `file://${require.resolve('./QRTicket.png')}`);
pdf.create(customHtml).toFile('QRImage.pdf', (err, res) => {
if (err) return console.log(err);
console.log(res);
});
修改强>
此示例假定以下文件夹结构。
.
├── index.js
├── node_modules
├── package.json
├── package-lock.json
├── QRTicket.png
└── ticket.html
使用命令node index.js
运行,它将生成带有图像的所需PDF。
答案 1 :(得分:0)
我修改了我的ticket.html,现在我想在一个地方搜索并替换多个字符串。所以现在我的ticket.html就像这样
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<table>
<tr>
<td></td>
<td><img src="{{Ticket}}"></td>
</tr>
<tr>
<td>asdf</td>
<td>tyui</td>
</tr>
</table>
</body>
</html>
现在express.js看起来像这样
const fs = require('fs');
const pdf = require('html-pdf');
const replaceOnce = require('replace-once');
const html = fs.readFileSync('ticket.html', 'utf8');
const image = 'file:///'+path.join(appRoot.path, 'file.png');
var find = ['{{Ticket}}', 'asdf', 'tyui'];
var replace = [image, 'Wills', 'Smith'];
const customHtml = replaceOnce(html, find, replace, 'gi')
pdf.create(customHtml).toFile('QRImage.pdf', (err, res) => {
if (err) return console.log(err);
console.log(res);
});