Foxtable(狐表)用户栏目专家坐堂 → 如何提取PDF文件中表格数据


  共有2894人关注过本帖树形打印复制链接

主题:如何提取PDF文件中表格数据

帅哥哟,离线,有人找我吗?
ZJZK2018
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
如何提取PDF文件中表格数据  发帖心情 Post By:2023/9/15 17:41:00 [显示全部帖子]

如何提取PDF文件中表格数据到数据库中
[此贴子已经被作者于2023/9/15 19:11:12编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2023/9/15 18:21:00 [显示全部帖子]

Dim reader As New iTextSharp.text.pdf.PdfReader("d:\test.pdf")

Dim n As Integer = reader.NumberOfPages
Dim str As String = ""
For i As Integer = 1 To n
    Dim strategy As object = New iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy()
    Dim currentText As String = iTextSharp.text.pdf.parser.PdfTextExtractor.GetTextFromPage(Reader, i, strategy)
   
    currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.[Default], Encoding.UTF8, Encoding.[Default].GetBytes(currentText)))
    str &= currentText
   
Next
msgbox(str)
reader.Close()


图片点击可在新窗口打开查看此主题相关图片如下:1694773476332.jpg
图片点击可在新窗口打开查看



图片点击可在新窗口打开查看此主题相关图片如下:rrr.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2023/9/15 18:29:49编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2023/10/18 22:09:00 [显示全部帖子]

Dim doc As org.apache.pdfbox.pdmodel.PDDocument = Nothing
Try
    doc = org.apache.pdfbox.pdmodel.PDDocument.load("d:\AAA.pdf")
    Dim pages = doc.getDocumentCatalog().getAllPages()
    Dim pdfStripper = new org.apache.pdfbox.util.PDFTextStripper
    Dim text = pdfStripper.getText(doc)
    msgbox(text)
catch ex As exception
    msgbox(ex.message)
Finally
    If doc IsNot Nothing Then
        doc.close()
    End If
End Try


图片点击可在新窗口打开查看此主题相关图片如下:1697638434719.jpg
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2023/10/18 23:36:00 [显示全部帖子]

我用的是net4.0,
itextsharp.dll已复制了,但还是出错

我用下面代码是可以的

Dim reader As New iTextSharp.text.pdf.PdfReader("d:\AAA.pdf")

 

Dim n As Integer = reader.NumberOfPages

Dim str As String = ""

For i As Integer = 1 To n

    Dim strategy As object = New iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy()

    Dim currentText As String = iTextSharp.text.pdf.parser.PdfTextExtractor.GetTextFromPage(Reader, i, strategy)

   

    currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.[Default], Encoding.UTF8, Encoding.[Default].GetBytes(currentText)))

    str &= currentText

   

Next

'msgbox(str)

Output.Show(str)

reader.Close()


但为什么用4楼时会出错???
[此贴子已经被作者于2023/10/18 23:39:18编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2023/10/19 9:33:00 [显示全部帖子]

使用的第三方dll是.net 4.0的吗?复制到Foxtable安装目录了吗?
我用net4.0的, 其他如何处理??

 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2023/10/19 10:03:00 [显示全部帖子]

使用的第三方dll是.net 4.0的吗?复制到Foxtable安装目录了吗?  Net4.0如何复制到Foxtable安装目录

 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2023/10/19 10:41:00 [显示全部帖子]

使用到的组件的dll文件能否提供一下


 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2023/11/12 21:48:00 [显示全部帖子]

老师:下面代码如何优化,提取速度有点慢,还有红色代码出错?请指教
Dim red As New iTextSharp.Text.pdf.PdfReader("D:\BBB.PDF")
'msgbox(red.NumberOfPages(2).text)
Dim n As Integer = red.NumberOfPages
Dim str As String
Dim pag,pag1 As Integer
For i As Integer = 1 To n
    Dim stry As object = New iTextSharp.Text.pdf.Parser.SimpleTextExtractionStrategy()
    Dim ctxt As String = iTextSharp.Text.pdf.Parser.PdfTextExtractor.GetTextFromPage(red, i, stry).Replace(" ","")
    ctxt = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.[Default], Encoding.UTF8, Encoding.[Default].GetBytes(ctxt)))
    If ctxt.IndexOf("投标人须知前附表") > -1 AndAlso ctxt.IndexOf("条款名称") > -1 Then
        pag = i
    End If
    If ctxt.IndexOf("中标候选人公示媒介") > -1 AndAlso ctxt.IndexOf("公示媒介") > -1 Then
        pag1 = i
    End If
Next
'msgbox(pag1)
For m As Integer = pag To pag1
    Dim stry As object = New iTextSharp.Text.pdf.Parser.SimpleTextExtractionStrategy()
    Dim ctxt As String = iTextSharp.Text.pdf.Parser.PdfTextExtractor.GetTextFromPage(red, m, stry).Replace(" ","")
    ctxt = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.[Default], Encoding.UTF8, Encoding.[Default].GetBytes(ctxt)))
    str &= ctxt
Next
Output.Show(str)
red.Close()

 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2023/11/12 22:00:00 [显示全部帖子]

这个文件有136页啊

msgbox(red.NumberOfPages(2).text) 这个代码有没有错??


图片点击可在新窗口打开查看此主题相关图片如下:1699798317645.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2023/11/12 22:06:04编辑过]

 回到顶部