J'ai un PDF qui a déjà compressé et des images quelque peu artificielles, et j'utilise Ghostscript pour ajouter une page de titre à ce PDF.
Cependant, je ne trouve aucun moyen de dire à GS d'utiliser simplement les images existantes sans les retraiter, et maintenant j'ai l'impression que c'est quelque chose à voir avec le fonctionnement de GS, c'est-à-dire que vous ne pouvez pas recompiler / lier un PDF sans retraitement de ses images .. Est-ce vrai?
Je peux augmenter le paramètre DPI dans GS, mais il passera de 5 Mo à 60 Mo tout en ayant l' air pire.
Existe-t-il une meilleure alternative à GS qui fera ce dont j'ai besoin (de préférence qui se compilera sur OS X)?
pdf
ghostscript
pdftk
Mahmoud Al-Qudsi
la source
la source
Réponses:
Si vous souhaitez simplement concaténer deux fichiers PDF sans aucun retraitement de son contenu,
pdftk
c'est pour vous. (Sur Mac OS X, cela devrait être disponible via MacPorts ou Fink, pour Linux, il existe des packages natifs pour toutes les principales distributions; pour Windows, regardez ici. ) Essayez ceci:Cela ajoutera le titre.pdf au contenu.pdf et enregistrera le résultat dans book.pdf .
pdftk
est un moyen "stupide" mais très rapide de concaténer deux (ou plus) fichiers PDF. « Dumb » dans la mesure où , commepdftk
ne signifie en aucune façon d' interpréter le flux de données PDF, il est tout simplement en sorte que les numéros d'objet internes sont à nouveau rebattues au besoin et apparaissent dans le fichier PDFxref
structure (qui est essentiellement une sorte de PDF TdC pour objets).Ghostscript:
Si vous souhaitez utiliser Ghostscript, la commande de base pour concaténer les deux mêmes fichiers serait:
Cependant, comme vous l'avez constaté, cette simple ligne de commande peut gâcher la qualité de votre image. La raison en est que Ghostscript n'est pas un «vidage» lorsqu'il traite des PDF: il les interprète complètement lors de la lecture et crée un fichier complètement nouveau lors de l'écriture du résultat. Pour créer le résultat, il utilisera automatiquement les paramètres par défaut pour beaucoup de détails dans le traitement global. Ces valeurs par défaut s'appliqueront à tous les cas où ses invocations n'avaient pas indiqué à Ghostscript le contraire.
La méthode de Ghostscript pour créer le nouveau livre.pdf est donc beaucoup plus "intelligente" (mais aussi beaucoup plus lente) que
pdftk
la méthode de. (C'est aussi la raison pour laquelle Ghostscript est dans de nombreux cas capable - dans certaines limites - de "réparer" les fichiers PDF b0rken, ou d'incorporer des polices dans les PDF de sortie qui ne sont pas incorporées dans les PDF d'entrée, ou de supprimer les images en double, en remplaçant les par de simples références, etc. - et créé globalement des fichiers plus petits et mieux optimisés à partir de fichiers PDF gonflés en entrée ...)La solution est de ne pas laisser Ghostscript utiliser ses valeurs par défaut: en ajoutant plus de paramètres personnalisés à la ligne de commande.
Qu'est-ce que cela signifie "Ghostscript" interprète "son entrée PDF" ?
Tout le fichier et son contenu (objets, flux, polices, images, ...) sont lus, vérifiés et conservés dans sa propre représentation interne, avant de cracher à nouveau le PDF résultant avec ses objets PDF. Cependant, quand «crache», Ghostscript appliquera tous ses paramètres par défaut internes pour les centaines de paramètres [*] qui sont disponibles.
Malheureusement, cela provoque votre «retraitement» des images selon ces paramètres par défaut - qui ne peuvent être évités ou remplacés qu'en ajoutant vos propres paramètres de ligne de commande (souhaités).
Vos problèmes d'image pourraient être causés par le besoin de Ghostscript (en raison de problèmes de licence) de ré-encoder les images JPEG2000 en encodage JPEG. Si vous voulez éviter cela, ajoutez ce qui suit à votre ligne de commande:
Les autres options de ligne de commande liées à l'image à considérer pour l'inclusion sont:
Ainsi, la ligne de commande Ghostscript complète qui pourrait vous rendre heureux devrait se lire:
Vous pouvez également dire à Ghostscript de ne PAS compresser les images du tout dans le PDF de sortie, en utilisant cette ligne de commande:
.
[*]:
Si vous souhaitez en savoir plus sur la liste complète des paramètres par défaut utilisés par le périphérique pdfwrite de Ghostscript , exécutez la commande suivante. Il vous renvoie la liste complète :
Pour obtenir des explications sur la signification exacte de tous ces paramètres, vous devrez lire dans la documentation Adobe sur les "Paramètres Distiller" . Ghostscript essaie très fort d'imiter tout cela ...
la source
dEncodeColorImages
,dEncodeGrayImages
, ladEncodeMonoImages
cause du fichier de sortie à devenir beaucoup plus massive. En les supprimant, la taille du fichier est passée de 22 Mo à 3,1 Mo et la qualité d'image semble exactement identique à l'utilisation de ces indicateurs. Tous les uniques drapeaux avec I utilisation sont:dColorConversionStrategy=/LeaveColorUnchanged
,dDownsampleMonoImages=false
,dDownsampleGrayImages=false
,dDownsampleColorImages=false
,dAutoFilterColorImages=false
,dAutoFilterGrayImages=false
,dColorImageFilter=/FlateEncode
,dGrayImageFilter=/FlateEncode
-dColorImageFilter
? Je ne peux que trouverFlateEncode
etDCTEncode
. DCT semble faire du JPEG (pourquoi ont-ils chiffré cela?). Je pense que FLATE est une option obsolète pour les images depuis que le brevet de Bell Labs sur LZW n'est plus un problème? Cependant, après avoir passé un certain temps à chercher, je ne trouve pas comment utiliser le PNG (ou autre chose) ... Mes images originales sont au format PNG et je veux qu'elles restent inchangées. J'ai essayé l'option -c, mais cela me donne-c can only be used in a built with POSTSCRIPT included.
...