我正在寻找一种使用JavaScript在现有PDF上添加文本的方法。 我将其设想为用户点击按钮下载PDF并接收包含此原始PDF的文件以及在页面上写下的其他文本。
这有可能吗?
使用现有的PDF来保留原始设计非常重要,PDF还包括专门用不同字体排版的文本和各种各样的unicode字形。
将此文本从网页生成到PDF上也很重要,因为生成的每个文本都会略有不同,为最终用户创建一个独特的PDF。
我一直在网上研究这个主题并找到了jsPDF库,但这似乎只生成PDF,而不是在现有PDF上写,而我在PDF上需要的内容太复杂了,无法使用jsPDF来生成它所有。如果我不需要,我不想将现有的PDF用作背景图像。
我还发现了一些像PDFKit这样的后端库,但是如果可能的话,我希望避免使用后端库 - 而且它似乎也不会覆盖现有的PDF。
我在网上看到了一些关于文本字段的内容,但很难理解这是否是一条可行的路径 - 是否可以在PDF中添加文本字段,然后在网页的这些字段中插入文本在用户下载之前?
非常感谢。
答案 0 :(得分:7)
我猜您可以将PDF文件转换为html,或者至少在画布上绘制它。如果可以,您可以使用jsPDF在现有html的基础上添加overlay html以生成新的PDF文件。
success:function(data){
var account_id = data.result.entry_date;
alert(account_id);
}

var doc = new jsPDF();
doc.addHTML(document.body, function() {
doc.text(20, 20, 'Hello world!');
doc.text(20, 30, 'This is client-side Javascript, pumping out a PDF.');
doc.addPage();
doc.text(20, 20, 'Do you like that?');
printData();
});
printData = function() {
var str = doc.output('datauristring');
console.log(str);
// window.open(str); Optional
}

答案 1 :(得分:3)
找到了这个解决方案。对不起,但确实涉及在服务器端做一些工作。 :)
涉及
使用pdf2htmlEX将pdf转换为html。
操作html然而你需要。您可以使用cheerio来更轻松地操作dom。
使用jspdf等内容将html转换回pdf。
有关它的更多信息here。
答案 2 :(得分:0)
https://pdf-lib.js.org/库支持对现有PDF文件的修改。
const pdfDoc = await PDFDocument.load(...)
const pages = pdfDoc.getPages()
pages[0].drawText('You can modify PDFs too!')
const pdfBytes = await pdfDoc.save()
答案 3 :(得分:-8)
PDF是只读的,因此一旦创建它们就无法编辑,只能读取。除了使用与创建第一个相同的步骤从头开始完全生成pdf之外,没有办法通过任何程序从不介意Javascript。