2011-12-29 24 views
2

PDFをJPEG(またはPNG ...のような他の画像形式)に変換する必要があります。GhostScriptを使用したPDFへの画像。画像ファイルを作成する必要はありません

私はPDFへのパスがあります。画像。

私はGhostscriptとGhostscriptSharpでそれをすることができましたが、実際のイメージファイルを作成してから、このファイルを読んでMemoryStreamを作成しなければなりません。

この手順を実行しなくてもいいですか?

おかげ

答えて

3

はい、しかし、あなたは(あなたがC#のはもちろんのことから、私は、Windowsを仮定している)GhostscriptのDLLを使用してのGhostscriptに直接インタフェースする必要があります。

最も簡単な解決策は、インメモリのビットマップを親アプリケーションに戻す表示デバイスを使用することです。デフォルトのGSアプリケーションは、ウィンドウとデバイスコンテキストを作成し、その中にビットマップを描画します。

GSアプリケーションを使用して、これがどのように行われているかを確認することができます。独自のデバイスを作成する必要はありません。つまり、Ghostscriptバイナリを再コンパイルする必要はありません。

0

はい、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(); 
     } 
    } 
関連する問題