当前位置: 首页 > 面试题库 >

iText-将内容添加到现有的PDF文件

鄢承运
2023-03-14
问题内容

我想对iText执行以下操作:

(1)解析现有的PDF文件

(2)在文档的现有单页上添加一些数据(例如时间戳)

(3)写出文件

我似乎无法弄清楚如何使用iText做到这一点。用伪代码可以做到这一点:

Document document = reader.read(input);
document.add(new Paragraph(“my timestamp”));
writer.write(document, output);
但是由于某种原因,iText的API如此复杂,以至于我无法解决。PdfReader实际上保存文档模型或其他内容(而不是吐出文档),并且您需要一个PdfWriter来从中读取页面……是吗?


问题答案:

iText有多种方法可以做到这一点。该PdfStamper班是一个选项。但是我发现最简单的方法是创建一个新的PDF文档,然后将现有文档中的各个页面导入到新的PDF中。

// Create output PDF
Document document = new Document(PageSize.A4);
PdfWriter writer = PdfWriter.getInstance(document, outputStream);
document.open();
PdfContentByte cb = writer.getDirectContent();

// Load existing PDF
PdfReader reader = new PdfReader(templateInputStream);
PdfImportedPage page = writer.getImportedPage(reader, 1); 

// Copy first page of existing PDF into output PDF
document.newPage();
cb.addTemplate(page, 0, 0);

// Add your new data / text here
// for example...
document.add(new Paragraph("my timestamp")); 

document.close();

它将从中读取PDFtemplateInputStream并将其写入outputStream。这些可能是文件流或内存流,或任何适合您的应用程序的流。



 类似资料:
  • 问题内容: 我想在PDF文件的每一页中添加一段文字。这样的答案很好。但是,文本将添加到页面顶部。我想在每页底部添加我的文字。我该怎么做呢? 这是代码的相关部分。 该代码是功能的一部分,该功能接受一个文件夹,读取其中的PDF文件,然后将它们合并为一个文件。因此,我想在上述循环本身中添加文本,而不是再次迭代文件。 问题答案: 请参阅《 iText in Action,第二版》的第6章,尤其是在6.4.

  • 我正在尝试向PDF文档的第一页添加一些内容。这样做的合适方式是什么? 目前,我的代码可以工作,但它会在文档的第一页之前添加(插入)一个新页面。这里可以用什么来代替 因此,我正在阅读的文档中的内容将作为内容而不是新页面添加到现有的第一页

  • 我正在使用iText生成Pdf。但当我试图在pdf中添加图像时, 我mage.get实例(新的URL(timetableResource.getImageUrl()));document.add(学校标志); 但我得到的错误是 HTTP状态500-服务器为URL返回了HTTP响应代码400:http://139.59.72.150:8080/sms/attachments/23/42/school

  • 我不需要添加书签或其他动态内容,只需要添加一些具有名称的目的地,从而注入一个/Dests集合,该集合具有在生成的PDF中定义的名称。 我使用了iText 5.3.0并且阅读了iText Inaction(第2版)的第7章,但是我仍然不知道如何添加目的地,所以在浏览器中使用#namedest。 我正在用PdfReader和PDFStamper阅读和操作文档。在使用定制的侦听器和PdfContentS

  • 问题内容: 我的java项目分为两部分。 我需要填充pdf的字段 我需要在页面空白区域的填充部分下方添加一个表(并且该表需要能够移到下一页)。 我能够分别执行这些操作(填充pdf并创建表)。但是我无法有效地合并它们。我尝试做一个doc.add(table),这将导致该表在pdf的下一页上,这是我不想要的。 我基本上只需要能够指定表格在页面上的起始位置(这样它就不会与现有内容重叠),然后将表格标记到

  • 我需要添加一些文本内容的底部现有的。带有iText的pdf文档。我有一个工作方法,但新内容显示在左上角,与现有内容重叠: 如何“移动”最后一页底部的,而不是第一页的开头?我对iText不熟悉,令人惊讶的是,在网上找不到解决方案。