添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

今回紹介しようと思ったきっかけは、現在取り掛かっているプロジェクトで

どうしても 「PDFをTIFF」 に変換する必要があり、思ったりより苦労したので

同じように困っている人がいるのではないかと思ったからです。

それでは、いってみましょう!!

PDFを画像データ(TIFF)に変換するプロジェクトで使用した環境がこちら

  • Windows10
  • Visual Studio 2019
  • .Net Framwork 4.7.2 ( WPF )
  • 32bit / 64bit(どちらでもオッケー)
  • 「PdfiumViewer」PDFを画像データに変換するライブラリ

    開発始めた当初は、標準のライブラリで簡単にできるだろとなめていたんですが

    全然できなく、色々調べてみました。

    有料版のものであれば結構見つかったですが

    無料の物があまりなく、最終的に見つかった無料のものがこちら

    見つかったライブラリ

  • Ghostscript
  • Pdfium
  • 両方とも使ってみましたがどうしてもGhostscriptが動かなかったので

    消去法で 「Pdfium」 を使用することにしました。

    必要なNuGetライブラリ

    Visual Studio 2019で開発しているのであれば

    NuGetパッケージの管理から簡単にライブラリの追加が可能です。

    今回必要なライブラリは、最低でも2つ。必要な人は3つ。

    動作させるPCのシステムの種類(ビット数)によって違うので分けてあります。

    32Bit

  • PdfiumViewer
  • PdfiumViewer.Native.x86.v8-xfa
  • 64Bit

  • PdfiumViewer
  • PdfiumViewer.Native.x86_64.v8-xfa
  • 以上のライブラリをNuGetパッケージの管理から追加してください。

    私は、32と64両方に対応させるため3つともインストールしています。

    実装するコードサンプル

    using System;
    using System.Drawing.Imaging;
    private void Button_Click(object sender, RoutedEventArgs e)
                // 以下の変数にはお好きなファイルパスを入れてください。
                string pdfPath = ”@"C:\Users\サンプル\Documents\Example.pdf"”;
                string outputPath = @"C:\Users\サンプル\Documents\Example.tif";
                    // PDFをロード
                    PdfiumViewer.PdfDocument document = PdfiumViewer.PdfDocument.Load(pdfPath);
                    //PDFから画像データを作成
                    var image = document.Render(0, 600, 600, false);
              //画像をセーブ
                    image.Save(outputPath, ImageFormat.Tiff);
                catch (Exception ex)
                    // handle exception here;
    

    重要なのは、

  • PdfiumViewer.PdfDocument document = PdfiumViewer.PdfDocument.Load(pdfPath);
  • var image = document.Render(0, 600, 600, false);
  • 特にdocument.Renderの方は、引数をもっといじれるので色々試してみるといいと思います。

    ちなみに600というのはDPIです。

    次なる問題点

    まだ解決していないのですが、

    PDFをTIFFに変換すると画像が荒くなるので、できればそこを少しでも改善したいなと思っています。

    PDFの画像

    TIFFの画像

    document.Renderの引数のXとYのサイズを変えるとある程度改善されたが

    画像サイズが予定より大きくなってしまうのが気になるところ。

    OCR関連の開発をしている方は、結構必要になるのではないかなっと思っています

    少しでも困っている開発者様の助けになれば嬉しいです。

    最後まで読んで頂きありがとうございました。

    Metasploitable3 環境の構築手順 ~VMware Workstation Pro編~

    【AWS超初心者用】とにかくRDS(SQL Server)に接続したい!~初めてのAWS~

    1日PC作業を6時間以上している方必見!心と体のバランスの取る方法