18

私はゴーストスクリプトを使用して、PDFから単一ページのPDFを画像に生成しました。ここで、pdf から複数のページを取り出して、長い縦長の画像を生成できるようにする必要があります。

これを可能にするために私が見逃しているという議論はありますか?

これまでのところ、ghostscript を呼び出すときに次の引数を使用しています。

string[] args ={
                "-q",                     
                "-dQUIET",                   
                "-dPARANOIDSAFER", // Run this command in safe mode
                "-dBATCH", // Keep gs from going into interactive mode
                "-dNOPAUSE", // Do not prompt and pause for each page
                "-dNOPROMPT", // Disable prompts for user interaction                           
                "-dFirstPage="+start,
                "-dLastPage="+stop,   
                "-sDEVICE=png16m",
                "-dTextAlphaBits=4",
                "-dGraphicsAlphaBits=4",
                "-r300x300",                

                // Set the input and output files
                String.Format("-sOutputFile={0}", tempFile),
                originalPdfFile
            };
4

3 に答える 3

11

「%d」を「OutputFile」パラメーターに追加して、ページごとに 1 つのファイルを生成するようにしました。次に、すべてのファイルを読み取り、次のように C# コードでそれらをつなぎ合わせました。

var images =pdf.GetPreview(1,8); //All of the individual images read in one per file

using (Bitmap b = new Bitmap(images[0].Width, images.Sum(img=>img.Height))) {
    using (var g = Graphics.FromImage(b)) {
        for (int i = 0; i < images.Count; i++) {
            g.DrawImageUnscaled(images[i], 0, images.Take(i).Sum(img=>img.Height));
        }
    }
    //Do Stuff
}
于 2009-05-19T20:47:57.200 に答える
1

最初に出力デバイス オプションを確認します。しかし、そのためのオプションはないと思います。

ほとんどの場合、GhostScript で面付けを行うか (PostScript プログラムを作成する必要があります)、レンダリングされたページを ImageMagick などでステッチする必要があります。

PostScript ルート (最も効率的である可能性が高い) を試してみたい場合は、GhostScript パッケージに含まれている N-up の例を確認してください。

于 2009-05-19T19:59:11.040 に答える