3 votes

Aplatissement des PDF sous Windows

J'ai un document PDF que j'ai généré à partir de R/ggplot2. Il comprend plusieurs graphiques qui ont des spécifications "alpha" ou de transparence. Le fichier PDF s'affiche sans problème dans divers lecteurs de PDF, mais sous Windows, lorsque j'essaie d'imprimer, le PDF tente d'"aplatir" les images. Cela dure un certain temps, et finalement (plus d'une heure pour un document de 30 pages), je dois abandonner.

Ce problème a déjà été signalé auparavant sans qu'une résolution claire n'ait été trouvée. ( Aplatir le canal alpha dans ggplot2 ) Lorsque j'essaie cette solution, R/Bookdown se plaint que j'essaie de glisser des éléments HTML (le PNG que je soupçonne) dans le PDF.

Existe-t-il un moyen de post-traiter la sortie PDF de R/ggplot2 de sorte que lorsque j'essaie d'imprimer le PDF, cela fonctionne ?

Bien que je distribue éventuellement un PDF qui peut s'imprimer dans des environnements Windows, je peux déplacer le PDF de Windows à Linux, "réparer" le PDF là-bas, et ré-importer le fichier à Windows pour l'impression,... si seulement il y a des outils linux appropriés. OSX est également disponible.

Suggestions ? Difficile de produire un exemple reproductible d'un problème de spooling d'impression.

1voto

KenS Points 9458

J'ai commencé par commenter la réponse de Maurits Evers ci-dessus, mais c'est devenu trop gros pour un commentaire.

En faisant cela (PDF->PS->PDF), on obtient généralement (pour un fichier PDF transparent) une image bitmap enveloppée dans un fichier PDF. Ce qui perd en qualité, n'est pas facilement extensible, etc.

Si le fichier PDF ne contient pas de véritable transparence (par exemple, un PDF produit au Caire où toute la transparence est 100% opaque), vous pouvez utiliser pdfwrite de Ghostscript et l'indicateur -dNOTRANSPARENCY pour produire un nouveau fichier PDF où toute la transparence a été supprimée.

Si vous voulez la préserver, la seule solution est de rendre les zones transparentes. Cependant, je vous suggère de régler CompatibilityLevel sur 1.3 et d'utiliser le dispositif pdfwrite, plutôt que la double-conversion via PostScript. Le passage au PostScript entraînera simplement le déversement d'un tas d'autres éléments dans le processus, ce qui est moins susceptible de se produire en passant au PDF.

Il existe également un nouveau dispositif (qui sera dans la prochaine version) appelé pdfimage qui rend simplement les pages en images bitmap, puis écrit un fichier PDF où chaque page est une image.

0voto

Maurits Evers Points 25003

Une possibilité serait d'utiliser Ghostscript 's pdf2ps et ps2pdf :

  1. Convertir un PDF en PS

    pdf2ps source.pdf source.ps
  2. Convertir PS en un PDF aplati

    ps2pdf source.ps source_flattened.pdf 

Cela devrait/va fonctionner sur tous les systèmes *nix et Windows (vous devrez peut-être installer Ghostscript).

J'ai aussi trouvé ce fil qui donne des détails supplémentaires et des méthodes alternatives.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X