7

GhostScriptを使用してPDFから画像へ。画像ファイルを作成する必要はありません」を見ましたが、それは私の質問の半分しか答えませんでした。GhostScriptSharp (または通常の GhostScript dll) を使用して、MemoryStream の pdf を MemoryStream の jpg に変換することはできますか? iTextSharp を使用して動的に入力された pdf フォームについて話します。これは、既に MemoryStream に指示してデータベースに保存するか、http 応答にストリームします。できる。

私が参照した回答の唯一の回答は、後半を実行するには GhostScript dll にアクセスする必要があると主張していましたが、それが何を意味するのかを理解するには、かなりの足を運ぶ必要があることは明らかでした。この旅で私を助けることができる良いリソースを持っている人はいますか?

4

2 に答える 2

3

Ghostscript.Net は、Ghostscript dll のラッパーです。ストリーム オブジェクトを取り、ストリームに保存できる画像を返すことができるようになりました。これは、メモリ ストリームから PDF を生成するために ASP ページとして使用した例です。Ghostscript dll を処理する最良の方法と、サーバー上のどこに配置するかを完全には理解していません。

 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())
                {
                    Image 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();
        }
    }
于 2015-05-07T10:38:13.890 に答える
2

問題は、PostScript 言語とは異なり、PDF 言語は本質的にファイルへのランダム アクセスを必要とすることです。標準入力または PIPE 経由で PDF を直接提供する場合、Ghostscript は PDF を解釈する前に一時ファイルにコピーします。そのため、PDF を MemoryStream (またはバイト配列) として渡す意味はありません。解釈される前にいずれにせよディスク上に配置されるからです。

Ghostscript.NETを見てください。これは、「インメモリ」出力のGhostscriptRasterizerサンプルです。

于 2014-01-04T15:34:27.043 に答える