2009-05-19 18 views
15

Ho utilizzato ghostscript per creare file PDF per la generazione di immagini di una singola pagina dal pdf. Ora ho bisogno di essere in grado di estrarre più pagine dal pdf e produrre una lunga immagine verticale.Ghostscript PDF multipagina PDF a PNG

C'è un argomento che mi manca che consentirebbe questo?

Finora mi sto utilizzando i seguenti parametri quando chiamo fuori per 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 
      }; 

risposta

10

Ho finito per aggiungere "% d" al parametro "OutputFile" in modo che generasse un file per pagina. Poi ho appena letto il backup di tutti i file e cuciti insieme nel mio codice C# in questo modo:

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 
} 
+0

È in qualche modo possibile farlo a livello di script/bash senza collegarlo con codice di alto livello, come C# sopra. – Supra

+0

@Supra 'man gs' ha una sezione sulla stampa di ogni pagina separatamente usando' -sOutputFile = 'con'% d' – dat

1

Prima controlla le opzioni del dispositivo di uscita; ma non penso che ci sia un'opzione per questo.

Probabilmente è necessario eseguire qualche imposizione da soli, fare in modo che GhostScript lo faccia (dovrete scrivere un programma PostScript), o cucire le pagine di rendering risultanti con ImageMagick o qualcosa di simile.

Se si desidera provare la route PostScript (probabilmente la più efficiente), controllare gli esempi di N-up inclusi nel pacchetto GhostScript.

6

Se è possibile utilizzare ImageMagick, è possibile utilizzare uno dei suoi buoni comandi:

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

dove

  • -density 144 risoluzione in dpi ne determina, di aumentare, se necessario, di default è 72
  • -type Grayscale usarlo se il PDF ha colori, salverai alcuni KB nell'immagine risultante
Problemi correlati