有没有办法用pdf-lib库修改用drawtext编写的文本

问题描述 投票:0回答:1

有谁知道是否有办法使用 pdf-lib 库或其他我可以在脚本应用程序中使用的库来修改以drawtext 编写的文本?

我写了这段代码:

setTimeout = (func, sleep) => (Utilities.sleep(sleep),func())
async function modifyPdf() {
  //async
  const pdfData = new Uint8Array(DriveApp.getFileById("1Zy4Fbq__ubjX0NLs7J5WPGj7JlV_8-KJ").getBlob().getBytes());
 
  const { PDFDocument, StandardFonts, PDFName, PDFRawStream, decodePDFRawStream, arrayAsString, rgb, degrees} = PDFLib;

  const pdfDoc = await PDFDocument.load(pdfData);
  const helveticaFont = await pdfDoc.embedFont(StandardFonts.Helvetica);

  const pages = pdfDoc.getPages();
  const firstPage = pages[0];
  const { width, height } = firstPage.getSize();
  //firstPage.drawText(`This text was added with JavaScript\n\n${' '.repeat(10)}(Google Apps script)!`, {
 firstPage.drawText(`This text was added with JavaScript`, {
    x: 10,
    y: height - 10,
    size: 20,
    font: helveticaFont,
    color: rgb(0.95, 0.1, 0.1)
    //rotate: degrees(20),
    //opacity: 0.5,
  });

  const pdfBytes = await pdfDoc.save();
  Drive.Files.update(
    {
      title: "newpdf from apps script v22",
      mimeType: "application/pdf"
    },
    "1Zy4Fbq__ubjX0NLs7J5WPGj7JlV_8-KJ",
    Utilities.newBlob(pdfBytes)
  )

问题是,如果我第一次运行它,它会在 PDF 上写上“此文本已添加...”,但如果我第二次运行它,它会覆盖它...我希望能够更改文本,那么我们是否应该能够确保它替换它?

有没有办法通过这个库或另一个库或其他方法来实现这一目标?

目前每次都会重叠

javascript google-apps-script pdf-lib.js
1个回答
0
投票

pdf-lib 可以删除和编辑文本字段的内容(请参阅 PDFTextField.setText),但它不提供用于删除或编辑表单字段之外页面上的文本的 API。这也是一个很难实现的功能,但在 pdf-lib 的范围内,并且将来可能会添加。请参阅#93、#137、#177、#329 和#380。

pdf-lib 目前不支持加密文档。您不应该将 pdf-lib 与加密文档一起使用。

PDF-Lib 自 2021 年 11 月 12 日以来尚未更新。

因此,当前没有方法可以编辑现有的 PDF,除非它被解密并且您只使用文本字段(注释)。

© www.soinside.com 2019 - 2024. All rights reserved.