0

pdfboxの問題

pdfbox を使用して、PDF からリッチテキストボックスにテキストを抽出しました。

何が問題なのかわかりませんが、良い 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());
        }
    }
}
4

1 に答える 1

0

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;
}
于 2012-09-03T04:45:34.717 に答える