J'utilise Mac OS X Snow Leopard. J'ai un PDF avec des champs de formulaire, des annotations et des tampons dessus. Je voudrais figer (ou "aplatir") ce PDF afin que les champs du formulaire ne puissent pas être modifiés et que les annotations / tampons ne soient plus modifiables. Étant donné que j'ai en fait beaucoup de ces fichiers PDF, je veux le faire automatiquement sur la ligne de commande.
Certaines choses que j'ai essayées / envisagées, avec leur degré de réussite:
- Ouvrir dans l'aperçu et imprimer dans un fichier. Cela crée un PDF totalement plat sans changer la taille du fichier. La seule façon d'automatiser semble être d'écrire un AppleScript basé sur une interface utilisateur kludgy , que j'ai essayé d'éviter.
- Ouvrez dans Acrobat Pro et utilisez une fonction JavaScript pour aplatir . Encore une fois, vous ne savez pas comment automatiser cela sur la ligne de commande.
- À utiliser
pdftk
avec l'flatten
option. Mais cela n'aplatit que les champs de formulaire, pas les tampons et autres annotations. - Utilisation
cupsfilter
qui peut créer des PDF à partir de nombreux formats de fichiers. Commepdftk
cela n'aplatit que les champs du formulaire. - Utilisez-le
cups-pdf
pour vous connecter au serveur d'impression du Mac et enregistrer un fichier PDF au lieu d'imprimer. J'ai utilisé la version macports . Le fichier résultant est plat mais énorme. J'ai essayé ceci sur un fichier de 8 Mo; le PDF aplati était de 358 Mo! Peut-être que cela peut être combiné avec un appel ghostscript comme dans Ubuntu Astuce: Comment réduire la taille du fichier PDF à partir de la ligne de commande .
Toute autre suggestion serait appréciée.
Réponses:
Essayez d'utiliser
pdf2ps
etps2pdf
successivement. C'est un peu lourd mais cela m'a aidé à réduire mon document de 30 Mo à 17 Mo. Pas autant que je l'aurais souhaité mais encore mieux. J'ai eu cette idée d'un ami qui a utilisé cette méthode pour se débarrasser des autorisations de mot de passe sur un pdf.J'espère que cela pourra aider!
la source
pdf2ps file.pdf - | ps2pdf - file_flat.pdf
. Le fichier est passé de 300K à 500K, ce qui représente une forte augmentation en pourcentage, mais rien de tel que l'augmentation de 4400% que lacups-pdf
méthode a donnée.pdf2ps -q -sOutputFile=- file.pdf | ps2pdf - file_flat.pdf
.brew install ghostscript
.Voilà donc ce que j'utilise récemment. Je pense que fonctionnellement, cela fait la même chose que
pdf2ps file.pdf - | ps2pdf - file_flat.pdf
, mais cela semblait mieux fonctionner pour moi.la source
Cela peut être sous-optionnel, mais avez-vous envisagé de chaîner cups-pdf avec pdftk ou cupsfilter? Comme vous l'avez mentionné, cups-pdf produira un fichier pdf plat puis le passera par pdftk ou cupsfilter pour le ramener à une taille acceptable?
Sinon, jetez un œil à
/System/Library/Printers/Libraries/convert
Vous devriez être capable de faire quelque chose commela source
/System/Library/Printers/Libraries/convert
. J'ai essayécupsfilter
. Lors de la conversion de PDF en PDF, aucune modification n'a été apportée au fichier. Lors de la conversion de PDF en PS puis en PDF, les annotations ont été perdues.AVERTISSEMENT: gs et pdf2ps | ps2pdf NE PAS aplatir les PDF!
L'utilisation de gs ou pdf2ps suivie de ps2pdf produira un PDF multicouche avec le contenu sous des annotations présentes sous forme originale . Vous pouvez vérifier cette faille dans Aperçu en utilisant Sélectionner tout, puis Copier, puis Coller dans une fenêtre TextEdit (en mode texte enrichi). Vous verrez le texte ou les graphiques sous les annotations de rédaction par exemple. C'est clairement très mauvais si vous avez légalement besoin que ce contenu soit retiré de la sortie.
Une solution de travail
ImageMagick peut produire un PDF aplati monocouche multi-page de qualité configurable avec des rasters de chaque page à l'aide de la commande suivante:
Cette commande pixellise document_original.pdf, créant une image basée sur les pixels de chaque page, à 150 DPI, et génère le résultat sous la forme document_flat.pdf.
Une note sur la qualité de l'image
En raison de la pixellisation , il produit un PDF non évolutif (zoom et vous verrez le texte ou les images vectorielles originales devenir pixellisées). Il aura probablement une taille de fichier plus grande à moins que l'original n'ait un contenu vectoriel très complexe comme des diagrammes de dispersion à un million de points.
En modifiant la densité , vous pouvez échanger une plus grande taille de fichier pour une sortie de résolution plus élevée.
Tout le texte sera converti en pixels bruts dans chaque image de page. Les diagrammes de texte et de vecteurs souffrent le plus, alors expérimentez avec le DPI jusqu'à ce que vous obteniez des fichiers de sortie utilisables.
la source
Applescript est probablement le meilleur moyen / le plus rapide d'accéder à la ligne de commande. Une fois qu'il fonctionne, vous pouvez l'enregistrer en tant qu'application et créer un alias dans votre shell de commande pour l'exécuter. Par la suite, vous tapez simplement votre alias sur la ligne de commande.
la source