2009-05-19 9 views
15

J'ai utilisé ghostscript pour faire des pdf pour générer une image d'une seule page à partir du pdf. Maintenant, je dois être capable de tirer plusieurs pages du pdf et de produire une longue image verticale.Ghostscript Multipage PDF vers PNG

Y a-t-il un argument qui me manque qui permettrait cela?

Jusqu'à présent, je suis en utilisant les arguments suivants quand je crie à 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 
      }; 

Répondre

10

J'ai fini par ajouter "% d" au paramètre "OutputFile" afin qu'il génère un fichier par page. Alors, je viens de lire jusqu'à tous les fichiers et les piquées ensemble dans mon C# code comme ceci:

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

Est-il possible de faire au niveau script/bash sans le câbler avec du code de haut niveau, comme C# ci-dessus. – Supra

+0

@Supra 'man gs' a une section sur l'impression de chaque page séparément en utilisant' -sOutputFile = 'avec'% d' – dat

1

Vérifiez d'abord les options de l'appareil de sortie; mais je ne pense pas qu'il y ait une option pour ça. Il est très probable que vous deviez vous-même vous faire imposer, que ce soit GhostScript (vous devrez écrire un programme PostScript), ou assembler les pages restantes avec ImageMagick ou quelque chose de similaire.

Si vous souhaitez essayer la route PostScript (qui sera probablement la plus efficace), consultez les exemples N-up inclus dans le package GhostScript.

6

Si vous pouvez utiliser ImageMagick, vous pouvez utiliser l'une de ses bonnes commandes:

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

  • -density 144 résolution en dpi décrit que, augmenter le cas échéant, par défaut est 72
  • -type Grayscale utiliser si votre PDF n'a pas couleurs, vous économiserez quelques Ko dans l'image résultante
Questions connexes