【问题标题】:PDFBox throws exception: NullReference ExceptionPDFBox 抛出异常:NullReference 异常
【发布时间】:2012-08-31 09:27:33
【问题描述】:

pdfbox问题

我使用 pdfbox 将 PDF 中的文本提取到我的 Richtextbox。

我不知道是什么问题,但是有一些 PDF 很好,但是有一些 PDF 会抛出异常,异常是:

对象引用未设置为对象的实例。

这是我的代码:

using org.pdfbox.pdmodel;
using org.pdfbox.util;

private void pdfButton_Click(object sender, EventArgs e)
{
    OpenFileDialog openFD = new OpenFileDialog();
    openFD.FileName = "";
    openFD.InitialDirectory = "C:\\";
    openFD.Filter = "All PDF Files|*.PDF";
    openFD.Title = "Browse all PDF files";

    if (openFD.ShowDialog() == DialogResult.OK)
    {
        try
        {
            pdf_filename = Path.GetFileNameWithoutExtension(openFD.Filename);
            PDDocument pdfFile = PDDocument.load(openFD.Filename);

            PDFTextStripper pdfStripper = new PDFTextStripper();
            richtextBox1.Text = pdfStripper.getText(pdfFile);
            textBox1.Text = Path.GetFileName(openFD.Filename);
        }
        catch (Exception error)
        {
            MessageBox.Show(error.ToString());
        }
    }
}

【问题讨论】:

  • 您在哪一行得到异常?
  • 似乎 pdfFile 或 pdfStripper 为空。异常发生在哪一行?
  • 异常被catch语句捕获
  • 这些人想知道的是它在哪一行之后跳到了catch?
  • 你调试过这个吗?当代码在您刚刚给我们的行上遇到断点时,检查该行中的所有对象是否都已实例化(pdfRT、pdfStripper 和 pdfFile)

标签: c# .net nullreferenceexception pdfbox


【解决方案1】:

我使用 iTextSharp 解决了这个问题。这是我的同事建议的,我用 iTextSharp 更改了 PDFBox。

如果有人和我有同样的问题,这里的工作代码:

using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;


private void pdfButton_Click(object sender, EventArgs e)
{
    OpenFileDialog openFD = new OpenFileDialog();
    openFD.FileName = "";
    openFD.InitialDirectory = "C:\\";
    openFD.Filter = "All PDF Files|*.PDF";
    openFD.Title = "Browse all PDF files";

    if (openFD.ShowDialog() == DialogResult.OK)
    {
        try
        {
            pdf_filename = Path.GetFileNameWithoutExtension(openFD.Filename);

            richtextBox1.Text = ReadPdf(openFD.FileName);
            textBox1.Text = Path.GetFileName(openFD.Filename);
        }

        catch (Exception error)
        {
            MessageBox.Show(error.ToString());
        }

    }
}


private string ReadPdf(string filename)
{

    if (!File.Exists(filename)) return string.Empty;

    PdfReader reader = new PdfReader(filename);

    string text = string.Empty;

    for (int page = 1; page <= reader.NumberOfPages; page++)
    {

        text += PdfTextExtractor.GetTextFromPage(reader, page);

    }

    return text;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 2020-03-25
    • 1970-01-01
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多