PDFを画像に変換する(C#)- 2025/5/25
C#で、PDFファイルから画像ファイルに変換する。
なんか情報が少ない気がする。
ライブラリ
https://github.com/sungaila/PDFtoImage/tree/master
これを使ってみる。
趣味利用なので特に選定理由は無くて、ちゃんと更新されてるから、というくらい。
でも使い方が分かりづらかった。
READMEに書いておいて欲しいなぁ。
導入はNuGet Package Manager GUI(VSCodeの拡張機能)から。
使い方
code:csharp
using PDFtoImage;
・・・
resultPath = "hoge"; // <- どこかで定義しておく
byte[] pdfBytes = File.ReadAllBytes(target);
foreach(var (img, index) in Conversion.ToImages(pdfBytes).Select((img, idx) => (img, idx))) {
string fp = Path.Combine(resultPath, $"{index+1}.jpg"); // <- 保存する場所を指定
Console.WriteLine(fp);
using var data = img.Encode(SkiaSharp.SKEncodedImageFormat.Jpeg, 300); // <- JPEGにエンコード
using var stream = File.OpenWrite(fp);
data.SaveTo(stream); // <- 書き込む
}
ChatGPT先生にも聞きながら確認してみた。
PDFtoImage.Conversionを使え、というのはGitHubのREADMEにも書いてある。
複数ページがあるのでToImagesを呼び出す。
IEnumerable<SKBitmap>なイテレータが返ってくるので、foreachで回して一つずつ保存していく。
SkiaSharpとかいうの初めて見ました・・・
https://github.com/mono/SkiaSharp
Skiasharpは、GoogleのSkiaグラフィックライブラリ(skia.org)に基づいた.NETプラットフォーム用のクロスプラットフォーム2DグラフィックスAPIです。モバイル、サーバー、デスクトップモデル間で使用して画像をレンダリングできる包括的な2D APIを提供します。
参考
https://zenn.dev/nuits_jp/articles/2023-12-06-pdf-to-jpeg-benchmarks
https://github.com/nuitsjp/NuitsLabo/blob/master/PdfStudy/PdfStudy.PDFtoImage/PdfDocument.cs
#csharp
#dotnet