以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于PDF文件的处理  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=118014)

--  作者:ap9709130
--  发布时间:2018/4/23 13:51:00
--  关于PDF文件的处理
老师

PDF文件用Acrobat Pro 可以另存为文本,也可以存为WORD. 如果用代码把PDF 能变为文本?

我试过论坛上的方法 :

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()


不会报错,但str 为空。 还有其它的方法吗?


--  作者:有点甜
--  发布时间:2018/4/23 14:34:00
--  

如果读取为空,则是你的pdf是图片,不是文本,不能读取。

 

试试使用这种方式 http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=117794&authorid=0&page=0&star=1

 

识别图片文字,参考 http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=108960&skin=0

 

 

 


--  作者:ap9709130
--  发布时间:2018/4/23 14:35:00
--  
老师,

我的PDF不是图片,用Acrobat Pro可以转变成TXT,也可以转成WORD 和 excl .都是文字。但不知道为什么,用代码读不出来?

--  作者:ap9709130
--  发布时间:2018/4/23 15:23:00
--  
老师

我在网上看到还有一个方法,

1、下载PDFBox

下载地址:http://sourceforge.net/projects/pdfbox/

2、引用动态链接库

解压缩下载的PDFBox,找到其中的Bin目录,需要在项目中添加引用的dll文件有: IKVM.GNU.Classpath.dll PDFBox-0.7.3.dll FontBox-0.1.0-dev.dll IKVM.Runtime.dll 将以上4个文件引用到项目中,在文件中需要引入以下2个命名空间: using org.pdfbox.pdmodel; using org.pdfbox.util;

3、API的使用方法看代码:

  1. using org.pdfbox.pdmodel;  
  2. using org.pdfbox.util;  
  3. public void pdf2txt(FileInfo file,FileInfo txtfile)  
  4. {  
  5.         PDDocument doc = PDDocument.load(file.FullName);  
  6.         PDFTextStripper pdfStripper = new PDFTextStripper();  
  7.         string text = pdfStripper.getText(doc);  
  8.         StreamWriter swPdfChange = new StreamWriter(txtfile.FullName, false, Encoding.GetEncoding("gb2312"));  
  9.         swPdfChange.Write(text);  
  10.         swPdfChange.Close();  
  11. }  
using org.pdfbox.pdmodel;
using org.pdfbox.util;
public void pdf2txt(FileInfo file,FileInfo txtfile)
{
        PDDocument doc = PDDocument.load(file.FullName);
        PDFTextStripper pdfStripper = new PDFTextStripper();
        string text = pdfStripper.getText(doc);
        StreamWriter swPdfChange = new StreamWriter(txtfile.FullName, false, Encoding.GetEncoding("gb2312"));
        swPdfChange.Write(text);
        swPdfChange.Close();
}
但本人水平有限,DLL我也下载下来了,麻烦看怎么转成FOX 代码,我看看这种方法行不行?多谢!

--  作者:ap9709130
--  发布时间:2018/4/23 15:24:00
--  
怎么传不了附件?
--  作者:有点甜
--  发布时间:2018/4/23 15:26:00
--  

看2楼的方法测试。

 

如果还有疑问,上传实例测试。


--  作者:ap9709130
--  发布时间:2018/4/23 16:05:00
--  
老师,
我下载你2楼的例子,运行出错:

见图片。是不是有什么DLL 没有引用。多谢!
图片点击可在新窗口打开查看此主题相关图片如下:kwi){y~cx)c2$@06(q`hi.png
图片点击可在新窗口打开查看

--  作者:ap9709130
--  发布时间:2018/4/23 17:07:00
--  
老师

请看附件我要读的PDF,我下载了例子,但是用不了。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:othertaxcertificate(13).zip


--  作者:有点甜
--  发布时间:2018/4/23 19:04:00
--  

2楼例子,你需要引用dll的,去看原帖;

 

pdfbox的例子,参考 http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=104162&skin=0

 

 


--  作者:ap9709130
--  发布时间:2018/4/24 10:28:00
--  
有点甜老师

今天早上认真的试了你给我的2楼的例子.我的PDF文件在8楼. 用2楼的例子,直接弹框OK.但是D盘什么也没有?能帮我看看吗?