当前位置: 首页 > 知识库问答 >
问题:

IText writer返回上一页

魏煜祺
2023-03-14

我正在使用itext创建pdf,如下所示:

Document document = new Document();
PdfWriter writer=  PdfWriter.getInstance(document, new FileOutputStream(test+ "/"+filename));

现在,在整个程序中,有许多地方我正在使用document创建一个新页面。newPage()

我正在用canvas.showText(我nteger.toString(123))在新页面上写一些文本;

是否可以返回到第3页,在不使用PDFReader阅读创建的pdf的情况下向该页添加文本?

我已经试过了。setPageCount(3),但它似乎不起作用(我不确定这是否是我需要的方法)。

共有1个答案

林星华
2023-03-14

你的问题的答案是肯定和否定。

不,不可能返回到上一页,因为iText最初是(由我)设计用于internet上下文的。只要是文档。newPage()被触发,包含上一页内容的字节流被刷新到输出流中。通过这样设计,我故意打破了基于MVC的PDF库(如ApacheFop)使用的设计模式,以创建一个真正快速的PDF库。

是的,可以在页面上引入占位符。在iText术语中,我们称它们为PdfTemplate对象。在PDF术语中,它们被称为表单XObject。最常见的用例是MovieCountries示例1中演示的第X页/Y页问题。当您动态创建PDF时,您不知道文档最终会有多少页面。您需要添加页码,如total的第1页、total的第2页等。但是,当这些页面被刷新到最终用户的浏览器时,您不知道total的值。您将添加一个没有任何内容的PdfTemplate对象,而不是添加值(未知)。只有当您知道total的值时,才会将该值写入PdfTemplate。在内部,每个页面都有一个从页面流到外部对象的引用(这就是为什么它被称为XObject)。

所以回答你的问题:如果你想在第3页添加一个值,但是直到第4页你才知道这个值,你需要在第3页添加一个PdfTem板,将内容添加到该PdfTem板当你在第4页的时候。一旦您确定PdfTemboard上的值不会再更改,您就可以释放PdfTemboard。当您发布PdfTemboard时,XObject的内容流将被写入OutputStream

 类似资料:
  • 有没有一种聪明的方法可以回到Angular 2的最后一页? 像这样的东西 例如,C页有一个返回按钮, > A页- 第B页- 路由器是否有此历史信息?

  • 本文向大家介绍html5点击返回键怎样不让它返回上一页?相关面试题,主要包含被问及html5点击返回键怎样不让它返回上一页?时的应答技巧和注意事项,需要的朋友参考一下 参考资料

  • 问题内容: 我是否可以附加功能作为按钮的单击事件,以使浏览器返回上一页? 问题答案: 在您的输入元素中添加

  • 本文向大家介绍JS本地刷新返回上一页代码,包括了JS本地刷新返回上一页代码的使用技巧和注意事项,需要的朋友参考一下 长话短说,今天介绍实现此功能的一个方法,需要了解的朋友可以参考下: 一、JS 重载页面,本地刷新,返回上一页 代码如下:  返回前二页并刷新的JS代码应该怎样写。 代码如下: history.go(-2); location.reload(); 二、js 方法 代码如下: <a hr

  • 我想回到上一页。 上一页:作业。html当前页面:jobDetail。html 按照说明,我从“@角度/公共”添加了<代码>导入{Location} 至作业详细信息。组成部分ts文件位于顶部,后跟 我在jobDetail中有一个html代码。html,但不知道如何继续。如何正确添加上一个按钮。像我这样的新手没有简单的教程。

  • 我正在尝试使用appium测试第三方应用程序。在检查屏幕上是否存在元素时,appium无法找到该元素,即使它存在于屏幕上。 尝试了以下作为根原因的一部分: 1。使用Appium驱动器getpageSource()获取页面xml层次结构。这将返回上一个屏幕的xml转储 2。使用Android的uiAutomator转储获取页面xml层次结构。这也返回与appium输出相同的结果。 其他观察结果: 1