18 Stimmen

Ghostscript Mehrseitige PDF zu PNG

Ich habe Ghostscript verwendet, um eine einzelne Seite aus dem PDF-Dokument in ein Bild zu verwandeln. Jetzt muss ich in der Lage sein, mehrere Seiten aus der PDF-Datei zu ziehen und ein langes vertikales Bild zu erzeugen.

Gibt es ein Argument, das ich übersehe, das dies erlauben würde?

Bislang verwende ich die folgenden Argumente, wenn ich ghostscript aufrufe:

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
            };

11voto

Josh Bush Punkte 2698

Schließlich fügte ich "%d" zum Parameter "OutputFile" hinzu, damit eine Datei pro Seite erzeugt wird. Dann habe ich nur lesen Sie alle Dateien und nähte sie zusammen in meinem c#-Code wie folgt:

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
}

9voto

bluish Punkte 24479

Wenn Sie ImageMagick verwenden können, können Sie einen seiner guten Befehle benutzen:

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

donde

  • -density 144 bestimmt die Auflösung in dpi, erhöhen Sie sie bei Bedarf, Standard ist 72
  • -type Grayscale Verwenden Sie diese Option, wenn Ihre PDF-Datei keine Farben hat, dann sparen Sie einige KB im resultierenden Bild.

1voto

Javier Punkte 58737

Überprüfen Sie zunächst die Optionen für das Ausgabegerät; ich glaube aber nicht, dass es dafür eine Option gibt.

Höchstwahrscheinlich müssen Sie das Ausschießen selbst vornehmen, entweder mit GhostScript (Sie müssen ein PostScript-Programm schreiben), oder Sie können die gerenderten Seiten mit ImageMagick oder etwas Ähnlichem zusammenfügen.

Wenn Sie den PostScript-Weg ausprobieren wollen (der wahrscheinlich am effizientesten ist), sehen Sie sich die N-up-Beispiele an, die im GhostScript-Paket enthalten sind.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X