CAD日記

AutoCAD,DXF,DWG,SXFなどCADのことから、仮想通貨や投資関係、PC関係、プログラミング、国内海外旅行情報など何でもござれ。@caddiary

ソフト開発

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

投稿日:

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 を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

CADツール第2弾

 PMツールに続いてのCADツール第2弾を思いつきました。今まで、いくつかの企画があり、手をつけたものもあるのですが、いまいち乗り気にならなくてポシャってました。シリーズものとして継続したいところなの …

PDFアレコレVer1系は1.02で打ち止めとするにあたって最後の強化をした

iTextSharp7を組み込んでVer2にしようというプランに移行するにあたって、心残りだったところをVer1.02として強化しておいた。

Vectorに作者登録の申し込みをしてみた

Vectorとはフリーウェア、シェアウェアのダウンロードサイト。最近はあまり使わなくなった。もちろんフリーソフトはよく使っているんだけど、マイナーなものはあまり使わなくなってきていて、メジャーどころは …

no image

VisualStudio2005

帰国後の1週間を乗り切った。 バカンスモードの体からビジネスモードに切り替えるのは、 なかなか厳しかったが、この1週間で徐々に慣れてきた。 夢のような南国リゾートとは違い、現実世界は厳しい。 さて、V …

no image

メイリオが他のフォントとくらべて小さく表示される件

左側がMS Pゴシックで、右側がメイリオ。 高さを同じ80pixcelで書いているのに、メイリオは3割型小さくなる。 メイリオの場合、GetTextMetricsで取得できるtmInternalLea …