如何从PDF文件中提取动态加载的项目?

时间:2015-06-26 22:07:58

标签: c# pdf itextsharp text-extraction data-extraction

我需要获取PDF文件中多个控件中所有项目的列表。有一个下拉/组合框,根据选择的附属单选按钮动态填充。然后,当您从下拉列表/组合框中选择其中一个项目时,将填充其下方的三个控件。我想提取所有这些数据(否则我必须复制并粘贴它们 - blech!)

每次提取数据的尝试都失败了。我尝试过的一些事情:

在Notepad ++中打开文件。它给了我一些有趣的东西",例如:

%PDF-1.7
%âãÏÓ
34 0 obj
<</Linearized 1/L 234042/O 39/E 3596/N 1/T 233689/H [ 461 175]>>
endobj

42 0 obj
<</DecodeParms<</Columns 4/Predictor 12>>/Filter/FlateDecode/ID[<FB56CF3E25DF09408A0A82199D930FFC><0C6A1B8FEE941E4A8BB87F1D46F07BDE>]/Index[34 17]/Info 33 0 R/Length 58/Prev 233690/Root 35 0 R/Size 51/Type/XRef/W[1 2 1]>>stream
hÞbbd``b`ÊŒóAÄ=7
H0 ‚i?øz…‰‘aHŒ7ñŸqé/€  9 ò
endstream
endobj
startxref
0
%%EOF

50 0 obj
<</C 94/Filter/FlateDecode/I 116/Length 85/S 38/V 71>>stream
hÞb```c``Êa ®¨€ˆY8ÅØ ˜á8—ëI;© ¨bi' ÍÃÀ\Øæ3ƒ4ò20÷\€H3êÀM``žëµá@€ 8Å

endstream
endobj
35 0 obj

......但不是我需要的。

我尝试在互联网上运行几个实用程序,包括几个在线工具和几个下载,据说可以从PDF中提取文本,但在每种情况下,我得到的 - 如果有的话 - 是这个:

Please wait... 

If this message is not eventually replaced by the proper contents of the document, your PDF 
viewer may not be able to display this type of document. 

You can upgrade to the latest version of Adobe Reader for Windows®, Mac, or Linux® by 
visiting  http://www.adobe.com/products/acrobat/readstep2.html. 

For more assistance with Adobe Reader visit  http://www.adobe.com/support/products/
acrreader.html. 

Windows is either a registered trademark or a trademark of Microsoft Corporation in the United States and/or other countries. Mac is a trademark 
of Apple Inc., registered in the United States and other countries. Linux is the registered trademark of Linus Torvalds in the U.S. and other 
countries.

因此,当所有其他方法都失败时,请阅读错误信息。它说要升级到最新版的Adobe Reader&#34;并给出一个链接。我已经有了最新版本,但几周前下载/安装了。当我选择帮助&gt;检查更新...来自相关的PDF文件,我得到:

No updates available

Installed: Adobe Acrobat XI Pro (11.0.11)

我使用iTextSharp在互联网上找到了一些代码;我复制了它并创建了一个快速而又脏的实用程序,其中包含以下代码:

private void buttonExtractTextFromPDF_Click(object sender, EventArgs e)
{
    String filename = @"C:\Misc\Direct_Payment_Orig.pdf";
    if (File.Exists(filename))
    {
        try
        {
            StringBuilder text = new StringBuilder();
            PdfReader pdfReader = new PdfReader(filename);
            for (int page = 1; page <= pdfReader.NumberOfPages; page++)
            {
                ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
                string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy);
                text.Append(System.Environment.NewLine);
                text.Append("\n Page Number:" + page);
                text.Append(System.Environment.NewLine);
                currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText)));
                text.Append(currentText);
                pdfReader.Close();


            }
            pdfTextBox.Text += text.ToString();

        }
        catch (Exception ex)
        {
            MessageBox.Show("Error: " + ex.Message, "Error");
        }
    }
}

...但它只是给了我同样的蹩脚的消息,&#34; 请等待...... 如果此消息最终未被文档的正确内容替换,则您的PDF查看器可能无法显示此类文档.... &#34; msg - 没有错误的消息(没有到达catch块),只是一个看似虚假的消息。看来,我说,因为我确实可以看到这个文件与我的裸露的偷窥者一样好。

什么阻止它被&#34;看到&#34;编程?这是许可问题吗?这可能是我痛苦的根源吗?

0 个答案:

没有答案