【发布时间】:2018-07-19 04:47:05
【问题描述】:
我的 PDF 中有一个页面,该页面由几列组成。我希望屏幕阅读器在继续阅读下一列之前单独阅读每一列。目前它只读取从左到右出现的文本。有没有办法在 iText 7 中做到这一点?
【问题讨论】:
标签: pdf itext pdf-generation screen-readers itext7
我的 PDF 中有一个页面,该页面由几列组成。我希望屏幕阅读器在继续阅读下一列之前单独阅读每一列。目前它只读取从左到右出现的文本。有没有办法在 iText 7 中做到这一点?
【问题讨论】:
标签: pdf itext pdf-generation screen-readers itext7
答案取决于您是使用 iText 自己创建此文档,还是想在现有的 PDF 文档中修复此问题。
在第一种情况下,您只需指定要创建文档逻辑结构以及文档内容。为了实现这一点,您需要在创建PdfDocument 实例时调用PdfDocument#setTagged() 方法。文档逻辑结构是屏幕阅读器等工具为了获得内容的正确逻辑顺序而依赖的东西。
在第二种情况下,当您已经有一个包含多个列的文档,但是它的阅读顺序混乱时,很可能该文档中没有正确的逻辑结构(或者换句话说,它没有标记正确)。修复您在现有 PDF 文档中描述的问题的任务(此任务有时称为结构识别)在一般情况下非常困难,并且目前无法自动执行。有多种工具可让您手动或半自动修复此类文档(如 Adobe Acrobat),但 iText 7 目前不提供结构识别功能。
【讨论】:
com.itextpdf.layout.ColumnDocumentRenderer(它是一个java类,但是.net中有一个类似的)?有一个使用它的例子on itext website.