PDFをJPEG(またはPNG ...のような他の画像形式)に変換する必要があります。GhostScriptを使用したPDFへの画像。画像ファイルを作成する必要はありません
私はPDFへのパスがあります。画像。
私はGhostscriptとGhostscriptSharpでそれをすることができましたが、実際のイメージファイルを作成してから、このファイルを読んでMemoryStreamを作成しなければなりません。
この手順を実行しなくてもいいですか?
おかげ
PDFをJPEG(またはPNG ...のような他の画像形式)に変換する必要があります。GhostScriptを使用したPDFへの画像。画像ファイルを作成する必要はありません
私はPDFへのパスがあります。画像。
私はGhostscriptとGhostscriptSharpでそれをすることができましたが、実際のイメージファイルを作成してから、このファイルを読んでMemoryStreamを作成しなければなりません。
この手順を実行しなくてもいいですか?
おかげ
はい、しかし、あなたは(あなたがC#のはもちろんのことから、私は、Windowsを仮定している)GhostscriptのDLLを使用してのGhostscriptに直接インタフェースする必要があります。
最も簡単な解決策は、インメモリのビットマップを親アプリケーションに戻す表示デバイスを使用することです。デフォルトのGSアプリケーションは、ウィンドウとデバイスコンテキストを作成し、その中にビットマップを描画します。
GSアプリケーションを使用して、これがどのように行われているかを確認することができます。独自のデバイスを作成する必要はありません。つまり、Ghostscriptバイナリを再コンパイルする必要はありません。
はい、Ghostscript.Netラスタライズ機能からメモリストリームを作成できます。ここで私はasp.netサイトで使用されている例です。
void PDFToImage(MemoryStream inputMS, int dpi)
{
GhostscriptRasterizer rasterizer = null;
GhostscriptVersionInfo version = new GhostscriptVersionInfo(
new Version(0, 0, 0), @"C:\PathToDll\gsdll32.dll",
string.Empty, GhostscriptLicense.GPL);
using (rasterizer = new GhostscriptRasterizer())
{
rasterizer.Open(inputMS, version, false);
for (int i = 1; i <= rasterizer.PageCount; i++)
{
using (MemoryStream ms = new MemoryStream())
{
DrawImage img = rasterizer.GetPage(dpi, dpi, i);
img.Save(ms, ImageFormat.Jpeg);
ms.Close();
AspImage newPage = new AspImage();
newPage.ImageUrl = "data:image/png;base64," + Convert.ToBase64String((byte[])ms.ToArray());
Document1Image.Controls.Add(newPage);
}
}
rasterizer.Close();
}
}