【问题标题】:How to dynamically create footnote with itext?如何使用 itext 动态创建脚注?
【发布时间】:2016-05-09 19:37:35
【问题描述】:

我需要将 XML 文件转换为 PDF。我选择 iText 和 XML Worker 来处理这个。

xml 包含我想在最终文档中用作脚注的标签。我读到了我已经用来设置页眉和页脚的 PdfPageEventHelper,但这不适合脚注,考虑到内容是动态的(脚注的可变列表,如果有的话)。

我无法固定所有页面的页边距:有些页面没有脚注,我不想在每个页面的底部保留很大的空白。

有没有办法告诉 iText 延迟处理特定标签或要求它在文档的不同表格/单元格/...中呈现它?

任何帮助/想法将不胜感激!

【问题讨论】:

    标签: itext footnotes


    【解决方案1】:

    据我所知,iText 中还没有用于创建脚注的高级机制(截至 5.5.8 版)。

    这方面的情况很可能仍与 2008 年 @BrunoLowagie 在 iText 支持邮件列表上写 this answer 时一样:

    回复:[iText-questions] 脚注

    Bruno Lowagie 2008 年 2 月 22 日星期五 10:49:20 -0800

    Markos Fragkakis 写道:

    Markos Fragkakis 写道:

    大家好,

    我需要为同一页面中的某些单词创建脚注。有没有 有办法吗?

    马科斯

    我是否需要使用上标在我的单词上画出 1,然后使用 onEndPage 事件来做剩下的事情吗?有没有更优雅的解决方案?

    没有提供脚注的内置机制。

    您建议的方法很接近,但您可能会遇到 底部没有足够空间的问题 显示脚注的页面。我害怕的更少 优雅的解决方案,您可以使用 2 个 ColumnText 对象, 一个用于内容,一个用于脚注 解决方案:您跟踪脚注的必要高度 使用后一列并将内容添加到前一列 只要两列的高度之和适合页面即可。

    最好的问候,

    布鲁诺

    因此看起来您必须切换到这种中级机制,创建两个ColumnText 实例,一个用于当前页面的常规内容,一个用于那里的脚注。


    可能有人想知道为什么 iText 中没有高级脚注机制。不过,考虑到我在谷歌上搜索 iText 和脚注时发现的点击量很少,似乎几乎没有任何对该功能的请求,至少在开放网络中是这样。


    如果尾注是您的替代选择,它们应该更容易实现,特别是您可以使用高级方法来实现。

    脚注是页面底部的注释,而尾注则收集在章节、卷或整部作品末尾的单独标题下。与脚注不同,尾注的优点是不影响正文的排版,但可能会给不得不在正文和尾注之间来回移动的读者带来不便。

    (维基百科中的Note (typography)

    在这里你只需要收集一些列表中的笔记,当你到达一个章节/卷/作品的结尾时,你添加一个标题,然后将所有笔记作为正常内容。

    【讨论】:

    • 感谢您的回复。确实,令我惊讶的是,没有关于我认为什么是文档的基本元素的讨论或操作方法。您能否解释一下尾注的含义以及如何实施?谢谢
    • 脚注是页面底部的注释,而尾注收集在页面末尾的单独标题下一章、一卷或整部作品。与脚注不同,尾注的优点是不影响正文的布局,但可能会给不得不在正文和尾注之间来回移动的读者带来不便,参见。 Note (typography) 在维基百科中。
    • 这确实可以直接实施,但它不符合我的需求。无论如何感谢您的帮助
    猜你喜欢
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多