C#PDFファイルのバイト配列を変換する

バイト配列は、データの保存または送信に役立ちます。同様に、PDFファイル形式はその機能と互換性のために人気があります。 C#言語を使用して、PDFファイルをバイト配列に変換したり、バイト配列をPDFファイルに変換したりできます。これにより、PDFファイルをデータベースに効率的に保存およびアーカイブできます。バイト配列を使用してデータをシリアル化することもできます。これらのフォーマットの相互変換性を調べてみましょう。

PDFファイルからバイト配列およびバイト配列からPDFファイルへの変換–APIのインストール

Aspose.PDF for .NET APIは、PDFドキュメントを操作するための多くの機能を提供します。シンプルで簡単なAPI呼び出しを使用して、PDFファイルを作成、編集、操作、または変換できます。 PDFファイルをバイト配列に、またはその逆に変換するには、公式Webサイトからダウンロードするか、Visual Studio IDEの以下のインストールコマンドを使用してNuGetギャラリーからAPIをダウンロードする必要があります。

PM> Install-Package Aspose.Pdf

C#を使用してPDFファイルをバイト配列に変換する

PDFをバイト配列に変換して、さらに処理するために送信または保存することができます。たとえば、PDFドキュメントをシリアル化してから、バイト配列に変換する必要がある場合があります。 PDFをバイト配列に変換するには、以下の手順に従う必要があります。

  1. 入力PDFファイルをロード
  2. バイト配列を初期化する
  3. FileStreamオブジェクトを初期化します
  4. バイト配列にファイルの内容をロードします

これらすべての手順を実行すると、PDFファイルをバイト配列の形式で処理できるようになります。たとえば、次の例のような別の関数に渡すことができます。

次のコードは、C#を使用してPDFファイルをバイト配列に変換する方法を示しています。ここで、結果のByteArrayは、入力ファイルを画像に変換するメソッドに渡されます。

dataDir = @"D:\Test\";

// 入力PDFファイルをロードします
string inputFile = dataDir + @"testpdf.pdf";

// バイト配列を初期化します
byte[] buff = null;

// FileStreamオブジェクトを初期化します
FileStream fs = new FileStream(inputFile, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
long numBytes = new FileInfo(inputFile).Length;

// バイト配列にファイルの内容をロードします
buff = br.ReadBytes((int) numBytes);
fs.Close();

// バイト配列でPDFファイルを操作する
ConvertPDFToJPEG(buff, 300, dataDir);


public static void ConvertPDFToJPEG(Byte[] PDFBlob, int resolution, string dataDir)
{
    // ドキュメントを開く
    using (MemoryStream InputStream = new MemoryStream(PDFBlob))
    {
        Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document(InputStream);

        for (int pageCount = 1; pageCount <= pdfDocument.Pages.Count; pageCount++)
        {

            using (FileStream imageStream = new FileStream(dataDir + "image" + pageCount + "_out" + ".jpg", FileMode.Create))
            {
                // 指定された属性でJPEGデバイスを作成します
                // 幅、高さ、解像度、品質
                // 品質[0-100]、100が最大
                // 解決オブジェクトの作成

                Aspose.Pdf.Devices.Resolution res = new Aspose.Pdf.Devices.Resolution(resolution);
                // JpegDevice jpegDevice = new JpegDevice(500、700、resolution、100);

                // 風景かどうかを判断するために以下を追加しました
                Int32 height, width = 0;

                PdfFileInfo info = new PdfFileInfo(pdfDocument);
                width = Convert.ToInt32(info.GetPageWidth(pdfDocument.Pages[pageCount].Number));
                height = Convert.ToInt32(info.GetPageHeight(pdfDocument.Pages[pageCount].Number));


                Aspose.Pdf.Devices.JpegDevice jpegDevice =
                //new Aspose.Pdf.Devices.JpegDevice(Aspose.Pdf.PageSize.A4、res、100);
                new Aspose.Pdf.Devices.JpegDevice(width, height, res, 100);
                // 特定のページを変換し、画像を保存してストリーミングする

                //Aspose.Pdf.PageSize.A4.IsLandscape = true;
                jpegDevice.Process(pdfDocument.Pages[pageCount], imageStream);
                // ストリームを閉じる
                imageStream.Close();
            }
        }
    }
}

C#を使用してバイト配列をPDFファイルに変換する

さらに別のステップに進みましょう。バイト配列をPDFファイルに変換できます。画像をバイト配列としてPDFファイルに変換する例でこれを学びましょう。バイト配列をPDFファイルに変換するには、次の手順に従う必要があります。

  1. 入力ファイルをロードします
  2. バイト配列を初期化します
  3. 入力画像をバイト配列にロードします
  4. Documentクラスのインスタンスを初期化します
  5. PDFページに画像を追加する
  6. 出力PDFファイルを保存

次のコードは、C#を使用してプログラムでバイト配列をPDFファイルに変換する方法を説明しています。

// 入力ファイルをロードします
string inputFile = dataDir + @"Test.PNG";

// バイト配列を初期化します
byte[] buff = null;
FileStream fs = new FileStream(inputFile, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
long numBytes = new FileInfo(inputFile).Length;

// 入力画像をバイト配列にロードします
buff = br.ReadBytes((int)numBytes);


Document doc = new Document();
// ドキュメントのページコレクションにページを追加する
Page page = doc.Pages.Add();
// ソース画像ファイルをStreamオブジェクトにロードします
MemoryStream outstream = new MemoryStream();
MemoryStream mystream = new MemoryStream(buff);
// ロードされた画像ストリームでBitMapオブジェクトをインスタンス化します
Bitmap b = new Bitmap(mystream);

// 画像が収まるように余白を設定します。
page.PageInfo.Margin.Bottom = 0;
page.PageInfo.Margin.Top = 0;
page.PageInfo.Margin.Left = 0;
page.PageInfo.Margin.Right = 0;

page.CropBox = new Aspose.Pdf.Rectangle(0, 0, b.Width, b.Height);
// 画像オブジェクトを作成する
Aspose.Pdf.Image image1 = new Aspose.Pdf.Image();
// セクションの段落コレクションに画像を追加します
page.Paragraphs.Add(image1);
// 画像ファイルストリームを設定する
image1.ImageStream = mystream;

// 結果のPDFファイルを保存します
doc.Save(outstream, SaveFormat.Pdf);
//doc.Save(dataDir + "outstream.pdf"、SaveFormat.Pdf);

// memoryStreamオブジェクトを閉じます
mystream.Close();

結論

この記事では、C#プログラミング言語を使用してPDFファイルをバイト配列に変換する方法とバイト配列をPDFファイルに変換する方法について説明しました。 PDFファイルをさらに操作することに興味がある場合は、無料サポートフォーラムを介して要件を共有してください。さらに、APIドキュメントおよびAPIリファレンスを調べて、APIが提供する機能の詳細な分析を行うこともできます。ご連絡をお待ちしております!

関連項目