如何使用网站上的JavaScript在现有PDF上添加文本?

时间:2014-05-02 23:05:59

标签: javascript html pdf dynamically-generated

我正在寻找一种使用JavaScript在现有PDF上添加文本的方法。 我将其设想为用户点击按钮下载PDF并接收包含此原始PDF的文件以及在页面上写下的其他文本。

这有可能吗?

使用现有的PDF来保留原始设计非常重要,PDF还包括专门用不同字体排版的文本和各种各样的unicode字形。

将此文本从网页生成到PDF上也很重要,因为生成的每个文本都会略有不同,为最终用户创建一个独特的PDF。

我一直在网上研究这个主题并找到了jsPDF库,但这似乎只生成PDF,而不是在现有PDF上写,而我在PDF上需要的内容太复杂了,无法使用jsPDF来生成它所有。如果我不需要,我不想将现有的PDF用作背景图像。

我还发现了一些像PDFKit这样的后端库,但是如果可能的话,我希望避免使用后端库 - 而且它似乎也不会覆盖现有的PDF。

我在网上看到了一些关于文本字段的内容,但很难理解这是否是一条可行的路径 - 是否可以在PDF中添加文本字段,然后在网页的这些字段中插入文本在用户下载之前?

非常感谢。

4 个答案:

答案 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)

找到了这个解决方案。对不起,但确实涉及在服务器端做一些工作。 :)

涉及

  1. 使用pdf2htmlEX将pdf转换为html。

  2. 操作html然而你需要。您可以使用cheerio来更轻松地操作dom。

  3. 使用jspdf等内容将html转换回pdf。

  4. 有关它的更多信息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。