PDF 转文本
将PDF转换为文本。
引言
在寻找如何从PDF中提取文本的示例时,我发现的并不多。当然,有一些,但需要付费。我找到一个用Java编写的示例,并将其转换为VB.NET,并添加了一些附加组件和不同的逻辑。这个应用程序中的代码非常不完整,最终将被用于一个自动化流程中,使用文件监视器从PDF中提取文本,然后格式化文本并将其放入SQL Server数据库中。我希望有人觉得这段代码以及推荐的更改或更新有用。
使用代码
代码非常易于使用。两个测试函数都存储在一个名为ExtractPDF
的类中。提取文本的函数需要一个PDF文件名和一个密码。密码可以是Nothing
,将被忽略。如果PDF文件有密码,则需要将有效的密码转换为Byte
,然后传递。需要引用ItextSharp.dll。itextsharp.dll的源代码也可用。
我在函数中有两个Case
语句,因此可以读取PDF文件中新的或更多的选项/格式或其他内容,并采取适当的操作。
While (Token.NextToken)
Select Case Token.TokenType
Case Token.TK_STRING
StrBuf.Append(Token.StringValue)
Case Token.TK_OTHER
' What to do with other characters
Select Case Token.StringValue
Case "ET"
StrBuf.Append(vbCrLf)
End Select
'Could add more here
End Select
End While
更新
我已经更新了程序,并弄清楚了为什么会出现转换错误。有时对象返回的是数组而不是单个对象。可能有一种更聪明的方法用一个循环来正确处理,但我将流存储在ArrayList
中,稍后对其进行处理。
Dim Stream As New ArrayList
If objectref.IsArray Then
Dim Counter As Integer
For Counter = 0 To objectref.ArrayList.Count - 1
Stream.Add(Reader.GetPdfObject(objectref.arraylist(Counter)))
Next
Else
Stream.Add(Reader.GetPdfObject(objectref))
End If
这段代码离完整还差很远,但我认为它可以帮助一些VB程序员,因为我找到的其他示例都是用C#编写的(有趣的是ItextSharp.dll完全是用C#编写的)。如果任何人有任何补充,请随时使用这段代码。