我正在使用ITEX5.5,现在,我有一个PdfPageEventHelper的自定义实现,它将一个页脚添加到包含页码信息的页面中。
最近对我的申请作了修改,因而产生了必要的脚注。我创建PDF的方式(从组件列表动态创建)实际上不可能确定哪个页面包含哪些项,因为这是可定制样式选项的一部分。
然而,我需要在脚注标记中添加解释。我现在的方法是简单地通知PdfPageEventHelper,在文档中的某个地方,至少有一个元素需要(目前只有)脚注,然后我将解释性脚注添加到每个页面中。
这是我想避免的,因为未来可能会带来更多的脚注和解释。所以问题是:
我可以直接解析当前的页面内容并扫描标记文本的存在吗?或者,是否有其他方法来查看当前页是否需要解释性脚注?
到目前为止,我的失败方法(全部是在onEndPage(PdfWriter, Document)中):
PdfContentByte cb = writer.getDirectContent();
PdfReader reader = new PdfReader(cb.toPdf(writer());
// this led to InvalidPdfException
----
ColumnText ct = new ColumnText(cb);
ct.getCompositeElements();
// returned null, I expected the current page contents
----
OutputStreamCounter oc = writer.getOs();
// did not expose any useful methods. also, cannot read from OutputStream搜索这个问题产生了数十个结果--如何添加一个页码,或者如何添加一个文档--静态的、特定于用户的标题。但没什么要看的。
哦,还有这个,这没什么用:在多页pdf文档中的某些页面上有条件地添加pdf页脚
这基本上和我的问题是一样的。
发布于 2019-03-28 11:57:46
从本质上说,你必须用相反的方式去做:
只需在脚注标记块中添加一个通用标记即可。然后,页面事件侦听器将在页面开始到结束之间被告知这个通用标记。因此,如果您在onGenericTag中设置了一个标志,那么您的onEndPage方法只需检查(然后重新设置)该标志并相应地添加脚注。
您甚至可以使用泛型标记文本来区分不同的标记,并且只添加匹配的脚注。
对于泛型标记的使用示例,请查看使用Chunk.setGenericTag(String)方法的示例,例如沙箱示例GenericFields。
(我最初引用的是iText站点URL https://developers.itextpdf.com/examples/page-events-itext5/page-events-chunks,但由于对该站点进行了结构调整,因此没有任何特定的地方;但是您仍然可以使用回退机器找到https://web.archive.org/web/20170819135135/http://developers.itextpdf.com/examples/page-events-itext5/page-events-chunks。)
https://stackoverflow.com/questions/52491984
复制相似问题