C#でPDFをさまざまな画像形式に変換する

概要

この記事では、C#を使用してPDFを異なる画像形式に変換する方法について説明します。次のトピックをカバーしています。

画像形式: TIFF

画像形式: BMP

画像形式: EMF

画像形式: JPG

画像形式: PNG

画像形式: GIF

画像形式: SVG

C# PDFを画像に変換

以下のコードスニペットは、Aspose.PDF.Drawing ライブラリでも機能します。

Aspose.PDF for .NET は、いくつかのアプローチを使用してPDFを画像に変換します。 Aspose.PDF for .NET は、PDFを画像に変換するためにいくつかのアプローチを使用しています。

このライブラリには、仮想デバイスを使用して画像を変換することを可能にするいくつかのクラスがあります。DocumentDeviceは文書全体の変換向けですが、ImageDeviceは特定のページ向けです。

DocumentDevice クラスを使用してPDFを変換する

Aspose.PDF for .NET は、PDFページをTIFF画像に変換することを可能にします。

TiffDevice(DocumentDeviceに基づく)クラスは、PDFページをTIFF画像に変換することを可能にします。このクラスは Process というメソッドを提供しており、PDFファイルのすべてのページを単一のTIFF画像に変換することができます。

PDFページを1つのTIFFイメージに変換する

Aspose.PDF for .NETについて、PDFファイル内の全ページを単一のTIFFイメージに変換する方法を説明します:

手順: C#でPDFをTIFFに変換する

  1. Document クラスのオブジェクトを作成します。
  2. TiffSettingsTiffDevice オブジェクトを作成します
  3. PDFドキュメントをTIFFに変換するために TiffDevice.Process() メソッドを呼び出します。
  4. 出力ファイルのプロパティを設定するために TiffSettings クラスを使用します。

以下のコードスニペットは、PDFの全ページを単一のTIFFイメージに変換する方法を示しています。

public static void ConvertPDFtoTIFF()
{
    // 文書を開く
    Document pdfDocument = new Document(_dataDir + "PageToTIFF.pdf");

    // Resolutionオブジェクトを作成
    Resolution resolution = new Resolution(300);

    // TiffSettingsオブジェクトを作成
    TiffSettings tiffSettings = new TiffSettings
    {
        Compression = CompressionType.None,
        Depth = ColorDepth.Default,
        Shape = ShapeType.Landscape,
        SkipBlankPages = false
    };

    // TIFFデバイスを作成
    TiffDevice tiffDevice = new TiffDevice(resolution, tiffSettings);

    // 特定のページを変換し、イメージをストリームに保存
    tiffDevice.Process(pdfDocument, _dataDir + "AllPagesToTIFF_out.tif");
}

PDFの1ページをTIFF画像に変換

Aspose.PDF for .NETは、PDFファイルの特定のページをTIFF画像に変換することができます。変換のためのページ番号を引数として取るProcess(..)メソッドのオーバーロード版を使用します。次のコードスニペットは、PDFの最初のページをTIFF形式に変換する方法を示しています。

手順: C#でPDFの単一または特定のページをTIFFに変換

  1. Document クラスのオブジェクトを作成します。
  2. TiffSettingsTiffDevice オブジェクトを作成します
  3. TiffDevice.Process() メソッドのオーバーロードを fromPagetoPage パラメーターで呼び出し、PDFドキュメントのページをTIFFに変換します。
public static void ConvertPDFtoTiffSinglePage()
{
    // ドキュメントを開く
    Document pdfDocument = new Document(_dataDir + "PageToTIFF.pdf");

    // Resolutionオブジェクトを作成
    Resolution resolution = new Resolution(300);

    // TiffSettingsオブジェクトを作成
    TiffSettings tiffSettings = new TiffSettings
    {
        Compression = CompressionType.None,
        Depth = ColorDepth.Default,
        Shape = ShapeType.Landscape,
    };

    // TIFFデバイスを作成
    TiffDevice tiffDevice = new TiffDevice(resolution, tiffSettings);

    // 特定のページを変換してイメージをストリームに保存
    tiffDevice.Process(pdfDocument, 1, 1, _dataDir + "PageToTIFF_out.tif");
}

Bradleyアルゴリズムを変換中に使用する

Aspose.PDF for .NETは、LZW圧縮を使用してPDFをTIFに変換する機能をサポートしており、AForgeを使用して2値化を適用できます。しかし、顧客の一人が画像に対してOtsuを使用してしきい値を取得する必要があるため、Bradleyの使用も希望しています。

  public static void ConvertPDFtoTiffBradleyBinarization()
{
     // ドキュメントを開く
     Document pdfDocument = new Document(_dataDir + "PageToTIFF.pdf");

    string outputImageFile = _dataDir + "resultant_out.tif";
    string outputBinImageFile = _dataDir + "37116-bin_out.tif";

    // Resolutionオブジェクトを作成する
    Resolution resolution = new Resolution(300);
    // TiffSettingsオブジェクトを作成する
    TiffSettings tiffSettings = new TiffSettings
    {
        Compression = CompressionType.LZW,
        Depth = Aspose.Pdf.Devices.ColorDepth.Format1bpp
    };
    // TIFFデバイスを作成する
    TiffDevice tiffDevice = new TiffDevice(resolution, tiffSettings);
    // 特定のページを変換して画像をストリームに保存する
    tiffDevice.Process(pdfDocument, outputImageFile);

    using (FileStream inStream = new FileStream(outputImageFile, FileMode.Open))
    {
        using (FileStream outStream = new FileStream(outputBinImageFile, FileMode.Create))
        {
            tiffDevice.BinarizeBradley(inStream, outStream, 0.1);
        }
    }
} 

ImageDevice クラスを使用して PDF を変換する

ImageDeviceBmpDeviceJpegDeviceGifDevicePngDeviceEmfDevice の祖先です。

  • BmpDevice クラスは、PDF ページを BMP 画像に変換することができます。
  • EmfDevice クラスは、PDF ページを EMF 画像に変換することができます。
  • JpegDevice クラスは、PDF ページを JPEG 画像に変換することができます。
  • PngDevice クラスは、PDF ページを PNG 画像に変換することができます。
  • GifDevice クラスは、PDF ページを GIF 画像に変換することができます。

PDF ページを画像に変換する方法を見てみましょう。 PDFページを画像に変換する方法を見てみましょう。

BmpDevice クラスは、PDFファイルの特定のページをBMP画像形式に変換するためのメソッド Process を提供しています。他のクラスも同じメソッドを持っています。したがって、PDFページを画像に変換する必要がある場合は、必要なクラスをインスタンス化するだけです。

次の手順とC#のコードスニペットでこの可能性を示します

手順: C#でPDFから画像(BMP, EMF, JPG, PNG, GIF)への変換

  1. ImageDevice のサブクラスのインスタンスを作成します。
    • BmpDevice (PDFをBMPに変換するため)
    • EmfDevice (PDFをEmfに変換するため)
    • JpegDevice (PDFをJPGに変換するため)
    • PngDevice (PDFをPNGに変換するため)
    • GifDevice (PDFをGIFに変換するため)
  2. PDFから画像への変換を実行するために ImageDevice.Process() メソッドを呼び出します。
public static class ExampleConvertPdfToImage
{
     private static readonly string _dataDir = @"C:\Samples\";
    // BMP, JPEG, GIF, PNG, EMF
    public static void ConvertPDFusingImageDevice()
    {
        // 解像度オブジェクトを作成            
        Resolution resolution = new Resolution(300);
        BmpDevice bmpDevice = new BmpDevice(resolution);
        JpegDevice jpegDevice = new JpegDevice(resolution);
        GifDevice gifDevice = new GifDevice(resolution);
        PngDevice pngDevice = new PngDevice(resolution);
        EmfDevice emfDevice = new EmfDevice(resolution);

        Document document = new Document(_dataDir + 
            "ConvertAllPagesToBmp.pdf");
            
        ConvertPDFtoImage(bmpDevice, "bmp", document);
        ConvertPDFtoImage(jpegDevice,"jpeg", document);
        ConvertPDFtoImage(gifDevice, "gif", document);
        ConvertPDFtoImage(pngDevice, "png", document);
        ConvertPDFtoImage(emfDevice, "emf", document);
            
    }
}

public static void ConvertPDFtoImage(ImageDevice imageDevice, 
        string ext, Document pdfDocument)
{
    for (int pageCount = 1; pageCount <= pdfDocument.Pages.Count; pageCount++)
    {
        using (FileStream imageStream = 
        new FileStream($"{_dataDir}image{pageCount}_out.{ext}", 
        FileMode.Create))
        {
            // 特定のページを変換して画像をストリームに保存
            imageDevice.Process(pdfDocument.Pages[pageCount], imageStream);

            // ストリームを閉じる
            imageStream.Close();
        }
    }
}

SaveOptionsクラスを使用してPDFを変換

この記事の部分では、C#とSaveOptionsクラスを使用してPDFをSVGに変換する方法を示しています。

スケーラブルベクターグラフィックス (SVG) は、静的および動的(インタラクティブまたはアニメーション)の二次元ベクターグラフィックスのためのXMLベースのファイル形式の仕様ファミリーです。SVG仕様は、1999年からWorld Wide Web Consortium (W3C)によって開発が進められているオープンスタンダードです。

SVG画像とその振る舞いは、XMLテキストファイルで定義されます。これは、検索、インデックス作成、スクリプト化、必要に応じて圧縮が可能であることを意味します。XMLファイルとして、SVG画像は任意のテキストエディタで作成および編集できますが、Inkscapeのようなドロープログラムで作成する方が便利な場合が多いです。

Aspose.PDF for .NETは、SVG画像をPDF形式に変換する機能をサポートしており、PDFファイルをSVG形式に変換する機能も提供しています。 Aspose.PDF for .NETは、SVGイメージをPDF形式に変換する機能をサポートしており、PDFファイルをSVG形式に変換する機能も提供しています。

次のコードスニペットは、.NETでPDFファイルをSVG形式に変換する手順を示しています。

手順: C#でPDFをSVGに変換

  1. Document クラスのオブジェクトを作成します。
  2. 必要な設定で SvgSaveOptions オブジェクトを作成します。
  3. Document.Save() メソッドを呼び出し、PDFドキュメントをSVGに変換するために SvgSaveOptions オブジェクトを渡します。
public static void ConvertPDFtoSVG()
{
    // PDFドキュメントをロード
    Document document = new Document(System.IO.Path.Combine(_dataDir, "input.pdf"));
    // SvgSaveOptionsのオブジェクトをインスタンス化
    SvgSaveOptions saveOptions = new SvgSaveOptions
    {
        // SVGイメージをZipアーカイブに圧縮しない
        CompressOutputToZipArchive = false,
        TreatTargetFileNameAsDirectory = true                
    };
            
    // 出力をSVGファイルで保存
    document.Save(System.IO.Path.Combine(_dataDir, "PDFToSVG_out.svg"), saveOptions);
}