CAD日記

主にAutoCADのことについて書いているけど、近頃は投資系ネタに注力している。自動売買、仮想通貨、PC関係、プログラミングなど。@caddiary

ソフト開発

PDFiumはPDFからテキスト抽出するのもちょー簡単

投稿日:2018年9月11日 更新日:

PDFiumを語るのに日本語はいらない。プログラマーはプログラム言語で語る。PDFiumの処理は、tryとfinallyのところだけを見てくれればよい。たったこれだけでPDFからテキストを抽出できるのだ。しかもかなり処理が速いぞ。

// テキスト抽出
private void button3_Click(object sender, EventArgs e)
{
    // 結果コントロール初期化
    UpdateResult("", "");
    Update();
    // Waitカーソル
    Cursor preCursor = Cursor.Current;
    Cursor.Current = Cursors.WaitCursor;
    // 時間計測開始
    System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
    sw.Start();

    bool stat = true;
    string text = "";
    string strSrc = textBox1.Text;
    int pos = strSrc.LastIndexOf('.');
    string strDst = strSrc.Substring(0, pos) + "[text]" + ".txt";
    try
    {
        pdfDoc = PdfDocument.Load(strSrc);
        for (int i = 0; i < pdfDoc.PageCount; i++)
            text += pdfDoc.GetPdfText(i);
        if (text != null)
        {
            Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS");
            using (StreamWriter writer = new StreamWriter(strDst, false, sjisEnc))
            {
                writer.WriteLine(text);
            }
        }
    }
    catch
    {
        UpdateResult("失敗", "PDFiumで例外エラー");
        stat = false;
    }
    finally
    {
        if (stat)
            UpdateResult("成功", "");
        Cursor.Current = preCursor;  // Waitカーソル解除
        if (!pdfDoc.Equals(null))
        {
            pdfDoc.Dispose();  // 明示的に破棄する必要あり(PDFがロックされてしまう)
            pdfDoc = null;
        }
    }
    // 時間計測終了
    sw.Stop();
    TimeSpan ts = sw.Elapsed;
    int t1 = (int)ts.TotalMilliseconds;
    double t2 = t1 / 1000.0;
    textBox5.Text = t2.ToString();
}

-ソフト開発

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

PDFアレコレがVectorに掲載されたよん

Vectorのカテゴリとしては文書作成⇒PDF。PDFアレコレというフリーソフトが掲載されたよん。

マルチスレッドプログラミング(C#編)

マルチスレッドプログラミング(C++編) マルチスレッドプログラミング(VB.net編) に続く第三弾はC#編。

no image

いたちごっこ1

ソフト開発者とクラッカー。その果てしない戦いの日々をここに記します。現在進行形のその戦いに終止符を打つべく、努力を重ねている今、臨場感をもって伝えられれば、と思います。 その前に、「いたちごっこ」とい …

no image

WinMergeのフィルタ

【2018/11/24追記】 この書きっぷりではあまりにもわかりずらいので、整理して追加情報を加えて新たな記事とした。 WinMegeのフィルタについて今すぐ知りたいならココを読め プログラマにとって …

no image

C++

プログラム言語で唯一まともに使えるのがC++だったりするおいらなわけだが、 C++のことをずいぶん知っているかというとそうでもなかったりする。 absという関数があって、絶対値を求めるものだっていうの …