parsing - 使用 PDFBox 的 .NET 版本从 PDF 解析注释/注释:PDFBox.NET-1.8.9
问题描述
我正在使用以下代码使用 .NET 版本的 PDFBox 解析 PDF 中的文本。
Imports org.apache.pdfbox.pdmodel
Imports org.apache.pdfbox.util
Private Shared Function parseUsingPDFBox(ByVal input As String) As String
Dim doc As PDDocument = Nothing
Try
doc = PDDocument.load(input)
Dim stripper As New PDFTextStripper()
Return stripper.getText(doc)
Finally
If doc IsNot Nothing Then
doc.close()
End If
End Try
End Function
http://www.squarepdf.net/how-to-convert-pdf-to-text-in-net-vb
该代码正在提取纯可见文本,但不提取注释。
我试过使用 FDFAnnotation.ToString() 但它警告说 ToString() 是模棱两可的......
doc = PDDocument.load(strFilename)
Dim stripper As New FDFAnnotationText
Return stripper.tostring(doc)
我已经尝试过 iTextSharp 并且我可以使用 PdfName.ANNOTS 类提取它们,但希望坚持使用 PDFBox。
我的首选语言是 VB,但我也很乐意接受 C# 中的答案。
解决方案
我假设“评论”是指带有Name值Comment的文本注释。以下代码输出所有文本注释的内容。如果您指的是不同的注释类型,则可能需要对其进行调整:
Dim doc As PDDocument = PDDocument.loadNonSeq(New java.io.File("..."), Nothing)
Dim pages As java.util.List = doc.getDocumentCatalog().getAllPages()
For i = 0 To pages.size() - 1
Dim page As PDPage = pages.get(i)
Dim annotations As java.util.List = page.getAnnotations()
For j = 0 To annotations.size() - 1
Dim annotation As PDAnnotation = annotations.get(j)
If annotation.getSubtype() = "Text" Then
Console.WriteLine("{0}-{1} : {2}", i, j, annotation.getContents())
End If
Next
Next
doc.close()
推荐阅读
- html - #section vs section:nth-of-type(1) 当 Css 选择时
- java - 为 sonarqube 配置 gradle 以使用 Lombok
- python - 使用 WMIC 的 Python 脚本。找不到所需的参数“标志”(位置 2)
- git - git reset --soft 和 git reset 之间的区别
- c++ - 为什么指针在对二维数组进行排序时不能正常工作?
- web-component - 模板标签内的html和body标签
- r - R:使省略号中的命名项在(可能是嵌套的)执行环境中可用
- mysql - 将查询从 MySQL V8.0 转换为 V5.6
- javascript - 如何在javascript中显示和隐藏表格的行
- c# - dotnet test 命令未显示来自 IOutputHelper 的消息