65.9K
CodeProject 正在变化。 阅读更多。
Home

PDF 转文本

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.94/5 (15投票s)

2007年10月9日

CPOL

2分钟阅读

viewsIcon

102856

downloadIcon

10747

将PDF转换为文本。

引言

在寻找如何从PDF中提取文本的示例时,我发现的并不多。当然,有一些,但需要付费。我找到一个用Java编写的示例,并将其转换为VB.NET,并添加了一些附加组件和不同的逻辑。这个应用程序中的代码非常不完整,最终将被用于一个自动化流程中,使用文件监视器从PDF中提取文本,然后格式化文本并将其放入SQL Server数据库中。我希望有人觉得这段代码以及推荐的更改或更新有用。

使用代码

代码非常易于使用。两个测试函数都存储在一个名为ExtractPDF的类中。提取文本的函数需要一个PDF文件名和一个密码。密码可以是Nothing,将被忽略。如果PDF文件有密码,则需要将有效的密码转换为Byte,然后传递。需要引用ItextSharp.dllitextsharp.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#编写的)。如果任何人有任何补充,请随时使用这段代码。

© . All rights reserved.