小编典典
目前,iText是我选择的PDF工具。
完整的可见文字
“可见”是一个艰难的过程。您可以使用com.itextpdf.text.pdf.parse包的类来解析所有可分析的文本…但是这些类对CLIPPING不了解。您可以很容易地将解析器限制为页面大小。
// all text on the page, regardless of position
PdfTextExtractor.getTextFromPage(reader, pageNum);
实际上,您实际上需要采用TextExtractionStrategy(已过滤策略)的替代。它很快就变得很有趣,但是我认为您可以在这里“开箱即用”获得所需的一切。
图片
是的,通过相同的包类。图像侦听器不像文本侦听器那样受支持,但确实存在。
链接
是。链接是指向各种PDF页面的“注释”。找到它们很简单,只需遍历每个页面的“注释数组”并挑选链接注释即可。
PdfDictionary pageDict = myReader.getPageN(1);
PdfArray annots = pageDict.getAsArray(PdfName.ANNOTS);
ArrayList dests = new ArrayList();
if (annots != null) {
for (int i = 0; i < annots.size(); ++i) {
PdfDictionary annotDict = annots.getAsDict(i);
PdfName subType = annotDict.getAsName(PdfName.SUBTYPE);
if (subType != null && PdfName.LINK.equals(subType)) {
PdfDictionary action = annotDict.getAsDict(PdfName.A);
if (action != null && PdfName.URI.equals(action.getAsName(PdfName.S)) {
dests.add(action.getAsString(PdfName.URI).toString());
} // else { its an internal link, meh }
}
}
}
您可以在此处找到PDF规范。
输入元素
绝对是 对于XFA(LiveCycle Designer)或较旧技术的“ AcroForm”表单,iText可以找到所有字段及其值。
AcroFields fields = myReader.getAcroFields();
Set fieldNames = fields.getFields().keySet();
for (String fldName : fieldNames) {
System.out.println( fldName + “: ” + fields.getField( fldName ) );
}
多重选择列表将无法很好地处理。在冒号之后,您将在空白处输入空白文本字段和按钮。没有什么内容丰富…但是那会让您入门。
文档元标记,例如标题,描述或作者
很琐碎。是。
Map info = myPdfReader.getInfo();
System.out.println( info );
除了基本的author / title / etc外,还有一个相当复杂的XML模式,您可以通过访问reader.getMetadata()。
仅标题
A TextRenderFilter可以根据您希望的任何条件忽略文本。根据您的评论,字体大小听起来不错。
2020-09-16
今天的文章java pdf解析器_Java的高级PDF解析器分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/27477.html