Ghostscript многостраничный PDF в PNG - PullRequest
15 голосов
/ 19 мая 2009

Я использую ghostscript, чтобы сделать 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
            };

Ответы [ 3 ]

10 голосов
/ 20 мая 2009

В итоге я добавил «% d» к параметру «OutputFile», чтобы он генерировал один файл на страницу. Затем я просто прочитал все файлы и соединил их вместе в своем коде на 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
}
8 голосов
/ 19 июня 2014

Если вы можете использовать ImageMagick, вы можете использовать одну из его хороших команд:

montage -mode Concatenate -tile 1x -density 144 -type Grayscale input.pdf output.png

где

  • -density 144 определяет разрешение в dpi, при необходимости увеличьте его, по умолчанию 72
  • -type Grayscale используйте его, если в вашем PDF нет цветов, вы сохраните несколько килобайт в полученном изображении
1 голос
/ 19 мая 2009

Сначала проверьте параметры устройства вывода; но я не думаю, что есть вариант для этого.

Скорее всего, вам нужно будет выполнить наложение самостоятельно, либо заставить GhostScript сделать это (вам придется написать программу PostScript), либо сшить получившиеся отрендеренные страницы с помощью ImageMagick или чего-то подобного.

Если вы хотите попробовать маршрут PostScript (вероятно, наиболее эффективный), проверьте примеры N-up, включенные в пакет GhostScript.

...