今回紹介しようと思ったきっかけは、現在取り掛かっているプロジェクトで
どうしても
「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関連の開発をしている方は、結構必要になるのではないかなっと思っています
少しでも困っている開発者様の助けになれば嬉しいです。
最後まで読んで頂きありがとうございました。
2022/03/27
Metasploitable3 環境の構築手順 ~VMware Workstation Pro編~
2021/06/05
【AWS超初心者用】とにかくRDS(SQL Server)に接続したい!~初めてのAWS~
2021/05/23
1日PC作業を6時間以上している方必見!心と体のバランスの取る方法
よーすの記事をもっと見る