このページには自動翻訳されたテキストを含めることができます。

C# と VB.NET で PDF を画像に変換する

PDF を画像に変換する必要がある場合があります。たとえば、PDF からサムネイル画像を作成したり、いくつかの PDF ドキュメントに対して光学文字認識(OCR)を実行したりする必要があるかもしれません。

Docotic.Pdf ライブラリ を使うと、C# と VB.NET のプロジェクトで PDF ドキュメントを画像に変換できます。このライブラリは完全にマネージドで、外部依存関係はありません。PDF のラスター化に System.Drawing.dll や GDI+ は使用しません。そのため、Windows、Linux、macOS、iOS、Android で一貫した出力が得られます。

このライブラリは NuGet と当社サイトから入手できます。C# .NET PDF ライブラリをダウンロード ページで、ライブラリと無料の期間限定ライセンス キーを入手してください。

Docotic.Pdf は、PDF から画像への変換に関する多くのオプションを提供します。また、PDF ドキュメントをレンダリングして印刷することもできます。Docotic.Pdf ライブラリを使って PDF を画像に変換する方法を見ていきましょう。

C# と VB.NET で PDF を画像に変換する

PDF ページを PNG、JPG、または TIFF 画像として保存する

Docotic.Pdf ライブラリを使用すると、PDF ページを PNG、JPEG、または TIFF 画像に変換できます。結果の画像はストリームまたはファイルに書き込めます。次の C# スニペットは、白い背景と 300x300 dpi の解像度で PDF ページを PNG 画像として保存します:

using BitMiracle.Docotic.Pdf;

using var pdf = new PdfDocument("your_document.pdf");

PdfDrawOptions options = PdfDrawOptions.Create();
options.BackgroundColor = new PdfRgbColor(255, 255, 255);
options.HorizontalResolution = 300;
options.VerticalResolution = 300;

for (int i = 0; i < pdf.PageCount; ++i)
    pdf.Pages[i].Save($"page_{i}.png", options);

PdfDrawOptions.Compression プロパティを使うと、PNG の代わりに JPEG または TIFF 画像を生成するようライブラリに指示できます。次のスニペットは、JPEG 画像の生成に切り替える方法を示しています:

PdfDrawOptions options = PdfDrawOptions.Create();
options.Compression = ImageCompressionOptions.CreateJpeg();

関連する C# および VB.NET のサンプルは GitHub 上 にあります。

.NET で PDF ドキュメントを複数ページ TIFF にする

PdfDocument.SaveAsTiff メソッドを使用すると、ドキュメント全体を複数ページ TIFF 画像として保存できます。以下は、PDF から TIFF への変換を行う C# サンプルです:

using var pdf = new PdfDocument("document.pdf");
PdfDrawOptions options = PdfDrawOptions.Create();
options.BackgroundColor = new PdfRgbColor(255, 255, 255);

pdf.SaveAsTiff("result.tiff", options);

GitHub から PDF を複数ページ TIFF として保存 のサンプルコードをダウンロードして試してください。C# 版と VB.NET 版の両方が用意されています。

PDF からサムネイルを作成する

Docotic.Pdf ライブラリを使うと、PDF ページからサムネイルを生成できます。次の C# サンプルは、指定した PDF の最初のページから 200x200 ピクセルのサムネイルを作成し、そのサムネイルをメモリ ストリームに書き込みます:

using var pdf = new PdfDocument("document.pdf");
PdfDrawOptions options = PdfDrawOptions.CreateFitSize(new PdfSize(200, 200), false);
options.BackgroundColor = new PdfGrayColor(100);

using var stream = new MemoryStream();
pdf.Pages[0].Save(stream, options);

PdfDrawOptions.CreateFitWidth または PdfDrawOptions.CreateFitHeight メソッドを使って、指定した幅または高さのサムネイル画像を生成することもできます。

.NET で PDF を 2 値またはグレースケール画像に変換する

このライブラリは、PDF ドキュメントを 2 値(白黒)の TIFF 画像に変換できます。このサンプルは、C# で PDF ドキュメントから 2 値 TIFF 画像を生成する方法を示しています:

using var pdf = new PdfDocument("colored.pdf");
PdfDrawOptions options = PdfDrawOptions.Create();
options.BackgroundColor = new PdfRgbColor(255, 255, 255);
options.Compression = ImageCompressionOptions.CreateTiff().SetBitonal();

pdf.SaveAsTiff("bitonal.tiff", options);

TiffImageCompressionOptions.SetBitonalThreshold メソッドを使用すると、しきい値レベルを指定することもできます。しきい値レベルは、グレースケール、RGB、または CMYK の色を白黒に変換する方法を定義します。

Docotic.Pdf は、PDF からグレースケールの PNG、JPG、または TIFF 画像への変換もサポートしています。次のスニペットのように、PngImageCompressionOptions.SetGrayscaleJpegImageCompressionOptions.SetGrayscaleTiffImageCompressionOptions.SetGrayscale のいずれかのメソッドを使用するだけです:

PdfDrawOptions options = PdfDrawOptions.Create();
options.Compression = ImageCompressionOptions.CreatePng().SetGrayscale();

PDF をズームする

PdfDrawOptions.CreateZoom メソッドを使用すると、指定したズーム レベルで PDF ページの画像を取得できます。この C# サンプルは、PDF ページを 400% のズーム レベルで画像に変換します:

using var pdf = new PdfDocument(@"document.pdf");
PdfDrawOptions options = PdfDrawOptions.CreateZoom(400);
pdf.Pages[0].Save("zoomed.png", options);

PDF の部分的な画像レンダリング

PDF ページの一部だけを画像に変換したい場合があります。たとえば、大きな PDF ページをタイルに分割する場合や、不要なコンテンツを切り抜く場合です。

次の C# コードは、PDF ページの左上隅にある 256x256 ポイントの領域の画像を保存します:

using var pdf = new PdfDocument("large.pdf");
PdfDrawOptions options = PdfDrawOptions.Create();
options.BackgroundColor = new PdfRgbColor(255, 255, 255);

PdfPage page = pdf.Pages[0];
PdfBox cropBoxBefore = page.CropBox;

page.CropBox = new PdfBox(0, cropBoxBefore.Height - 256, 256, cropBoxBefore.Height);
page.Save("part.png", options);

page.CropBox = cropBoxBefore;

タイル分割した PDF の画像レンダリング

Docotic.Pdf には、PDF を TIFF にタイル分割してレンダリングするための組み込みサポートがあります。この方法は、固定量のメモリで大きな PDF ページを処理する必要がある場合に便利です。

たとえば、PDF ドキュメントに 10000x10000 ポイントのページが含まれているとします。このページを 300 DPI の解像度で RGB 画像に通常変換すると、中間の非圧縮 RGB 画像データだけで 1 Gb (= 10000 * 10000 * 3 * 300 / 72.0 bytes) を超えるメモリが必要になります。1024x1024 のタイルを使ったタイル分割レンダリングを使用すると、非圧縮 RGB 画像データのメモリ消費を 12 Mb (= 1024 * 1024 * 3 * 300 / 72.0 bytes) に抑えられます。

タイル分割した PDF から画像への変換は、通常の変換よりも遅い点に注意してください。各タイルごとに、ライブラリは現在のタイルに影響しない操作であっても、PDF ページ上のすべての操作を処理する必要があります。

次の C# サンプルは、512x512 のタイルを使用して PDF を画像に変換する方法を示しています:

using var pdf = new PdfDocument("large.pdf");
PdfDrawOptions options = PdfDrawOptions.Create();
options.Compression = ImageCompressionOptions.CreateTiff().SetTileSize(512, 512);
options.BackgroundColor = new PdfGrayColor(100);
options.HorizontalResolution = 300;
options.VerticalResolution = 300;

pdf.Pages[0].Save("tiled.tiff", options);

結論

Docotic.Pdf library は、.NET で PDF を画像に変換するためのさまざまなオプションを提供します。PDF ページをフルサイズまたはサムネイル画像として PNG、TIFF、JPEG 形式で変換できます。また、PDF ドキュメントを複数ページ TIFF ファイルとして保存することもできます。このライブラリは、2 値画像やグレースケール画像も生成できます。

GitHub から PDF to image のサンプルをダウンロードして試してください。

PDF から画像への変換について質問がある場合は、お問い合わせ ください。