【问题标题】:Using pdfbox in java to overlay text onto previously created pdf document在java中使用pdfbox将文本覆盖到先前创建的pdf文档上
【发布时间】:2015-08-24 18:24:34
【问题描述】:

我已经创建了几个 PDF 文档。我试图做的是使用 PDFBox。我需要将文本放在这些创建的文档的多个位置,但我不想修改这些区域内的文本。例如,可能有一个部分如下 -

姓名:______________________________

我会将文本放入该区域,但我需要下划线保持相同的长度。我相信最好的解决方案是在该区域上方创建一个文本框或类似的文本框,以便该行保持相同的长度。

换句话说,我不想编辑内联文本,所以它会保持相同的长度。我没有这方面的代码,因为我只是想了解 pdfbox 包。我一直在网上寻找示例,但其中大多数只是展示如何创建文档而不是如何更新以前的文档。我该怎么做?

【问题讨论】:

  • 假设您已经知道如何创建 pdf 并在其中写入文本:您可以简单地在现有页面上创建一个额外的内容流并将您的文本放置在您希望的位置,使用 new PDPageContentStream( doc, pdpage, false, false, true);
  • 如果您需要更多帮助,请说出来,我明天会创建一个小示例,除非其他人先这样做。
  • 用 List pages = doc.getDocumentCatalog().getAllPages(); 获取页面
  • 让我在接下来的 24 小时内解决这个问题,蒂尔曼,我会告诉你的。谢谢你为我指明了正确的方向!

标签: java pdfbox


【解决方案1】:

我找到了答案并想分享。

在 pdfbox 包中有一个类叫做 Overlay。

    PDDocument pdfDocument = new Overlay();
    PDDocument final = pdfDocument.overlay(PDDocument firstDoc, PDDocument otherDoc);

firstDoc 将覆盖在 otherDoc 上。十分简单。我只是不知道去哪里找。

【讨论】:

    【解决方案2】:

    如果需要具体的使用示例,可​​以参考PDFBox reposity中的OverlayPDF.java

    Overlay overlayer = new Overlay();
    overlayer.setInputFile(inputFile);  //the file to be overlayed
    
    PDDocument result = overlayer.overlay(overlayFile); //This will add overlays to a documents.
    result.save(outputFilename);
    result.close();
    overlayer.close();  //close the input files AFTER saving the resulting file
    

    【讨论】:

      【解决方案3】:

      如果我理解正确,您想在现有 pdf 文档中为文本添加下划线。您可以尝试使用 Java Itext,查看此示例,看看是否有帮助。

      http://tutorials.jenkov.com/java-itext/underline-strikethrough.html

      【讨论】:

      • 没有。更像这样:imgur.com/oUExlNk 我只是将该文本放在已经存在的文本上。另外,我不能使用 iText。这是一个商业项目,管理层在购买 iText 时很担心。他们看到 PDFBox 并相信我可以在该软件包中完成此操作,而无需使用其他 PDF 选项。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 2012-01-25
      相关资源
      最近更新 更多