【问题标题】:Merging Documents iText7合并文档 iText7
【发布时间】:2021-07-08 12:07:36
【问题描述】:

我正在向现有的 pdf 添加文本。

到目前为止,我的代码会将文本添加到文件中,但它会删除之前 pdf 上的原始内容,有人知道如何解决这个问题吗?这样添加的文本在新页面上,而pdf的原始内容在另一个页面上。

String field1 = ("/Users/Desktop/") + selectedFile.getName();
System.out.println(field1);
PdfDocument pdfDoc = new PdfDocument(new PdfWriter(field1));
PdfPage page = pdfDoc.addNewPage();
PdfCanvas pdfCanvas = new PdfCanvas(page);
Rectangle rectangle = new Rectangle(1,1, 600, 843);
pdfCanvas.rectangle(rectangle);
pdfCanvas.stroke();
Canvas canvas = new Canvas( pdfCanvas, pdfDoc, rectangle);

Scanner myObj = new Scanner(System.in);  // Create a Scanner object
System.out.println("Enter text to add");
String addText = myObj.nextLine();  // Read user input
Paragraph p = new Paragraph(addText);
Scanner myObj1 = new Scanner(System.in);  // Create a Scanner object

PdfFont font = PdfFontFactory.createFont(FontConstants.HELVETICA_BOLD); 
p.setFont(font);                                
canvas.add(p);
pdfDoc.close();
canvas.close();

【问题讨论】:

  • 提示:一次删除一行,看看哪一行删除了原始内容。原始 PDF 中实际上是否有任何内容,如果您只打开并保存 pdf 而不添加任何内容会发生什么?如果您不添加新页面或不抚摸画布会发生什么?尝试像这样进行一些调试,您就能发现问题出在哪里。

标签: java pdf itext itext7


【解决方案1】:

使用PdfDocument pdfDoc = new PdfDocument(new PdfWriter(field1)),您将始终创建具有新内容的新文档。您现在忽略了原始内容。您必须以戳记模式打开 PDF。

参考 iText API:https://api.itextpdf.com/iText7/java/7.1.4/com/itextpdf/kernel/pdf/PdfDocument.html

构造函数和描述

PdfDocument(PdfReader reader) 以阅读模式打开 PDF 文档。

PdfDocument(PdfReader reader, DocumentProperties properties) 以阅读模式打开 PDF 文档。

PdfDocument(PdfReader reader, PdfWriter writer) 以戳记模式打开 PDF 文档。

PdfDocument(PdfReader reader, PdfWriter writer, StampingProperties properties) 以戳记模式打开 PDF 文档。

PdfDocument(PdfWriter writer) 以书写模式打开 PDF 文档。

PdfDocument(PdfWriter writer, DocumentProperties properties) 以书写模式打开 PDF 文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-18
    • 2022-01-12
    • 2019-11-17
    • 2020-04-07
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 2019-03-21
    相关资源
    最近更新 更多