Ajouter une gouttière (marge de reliure) au fichier PDF existant


4

Comment puis-je ajouter une marge de gouttière (différente pour les pages impaires et paires) à un document PDF afin qu'il y ait suffisamment de place pour le perforer après l'avoir imprimé? Je connais bien Ghostscript et le terminal Linux, mais je suis incapable de trouver des commandes pour répondre à ce besoin spécifique.

Actuellement, certains contenus sont trop proches du bord. Je pourrais utiliser la mise à l'échelle dans la boîte de dialogue d'impression pour créer de la place pour la reliure, mais cela réduirait la taille plus que nécessaire et laisserait un espace sur les deux côtés de la page.

Une solution qui ajoute simplement un centimètre supplémentaire de chaque côté de la page (à gauche pour les pages impaires et à droite pour les pages paires) conviendrait ici car je peux ensuite choisir l'option "redimensionner à la taille" lors de l'impression.

Ma question a d' abord été marquée comme un double de ce , mais ni réponse résout mon problème. J'ai essayé d'utiliser les ciseaux Briss et PDF, mais ce sont des outils de découpage PDF et ne peuvent que rendre les pages plus petites, pas plus grandes. Ma question est également différente car je dois redimensionner différemment les pages paires et impaires. Le demandeur de la question initiale n'avait pas cette exigence.


Avez-vous Adobe Acrobat? (Pas Adobe "Reader")
skub le

Non, malheureusement non. J'ai également essayé GhostScript comme indiqué dans cette réponse à une question connexe, mais le fichier PDF résultant semblait identique à l'original, comme l'a constaté l'auteur de la question lorsqu'il l'a essayé.
HullCityFan852

1
Voici une réponse partielle possible: utilisez pdftk( The PDF Toolkit ) pour diviser le fichier en un fichier avec les pages paires et un fichier avec les pages impaires, tamponnez les pages de chaque fichier de manière appropriée (je ne sais pas comment le faire). et les recombiner avec pdftk. Voir aussi [Comment] fusionner deux fichiers PDF contenant des pages paires et impaires d'un livre pour d'autres outils.
Scott

@ Scott Merci, cela fonctionnerait certainement. Le rembourrage pourrait être fait comme ça . (Remarquez que bien que la question se réfère au centrage de la réponse, ceci s'effectue à l'aide d'un décalage manuel.) Cependant, j'ai effectivement réussi à résoudre ce problème en une seule étape (c'est-à-dire sans scinder le fichier). Voir ma réponse ci-dessous.
HullCityFan852 le

Réponses:


7

J'ai l'intention de développer cela en une réponse appropriée lorsque j'en aurai le temps, mais voici la solution que j'ai trouvée, au cas où quelqu'un en aurait besoin entre-temps. L'idée est d'utiliser Ghostscript avec l' -coption de modifier le fichier PDF à l'aide de PostScript personnalisé.

Tout d'abord, vous devez connaître la hauteur et la largeur du PDF d'origine en points (il y a 72 points dans un pouce). Vous pouvez utiliser l'outil "pdfinfo" pour trouver cette information:

pdfinfo "inputFile.pdf"

Supposons que vous ayez un document A4 - A4 est de 595pts × 842pts (210mm × 297mm).

Si vous souhaitez ajouter une gouttière de 10 mm (= 1 cm = 28 pts) au document A4, vous devez donner les informations suivantes à Ghostscript:

-dDEVICEHEIGHTPOINTS=842 (hauteur de A4)
 -dDEVICEWIDTHPOINTS=623 (= 595 + 28, c'est-à-dire largeur de A4 + gouttière à ajouter)
   {28 0 translate} {}     ({décale les pages impaires 28pts à droite & 0pts vers le haut} {ne fait rien aux pages paires})

Remarque: La spécification de la largeur augmentée ajoute un espace sur le côté droit de la page. Seules les pages impaires numérotées doivent être traduites. Les pages paires sont déjà correctement agencées.

Voici la commande complète pour Linux:

gs -q -sDEVICE=pdfwrite -dBATCH -dNOPAUSE -sOutputFile=outputFile.pdf \
  -dDEVICEWIDTHPOINTS=623 -dDEVICEHEIGHTPOINTS=842 -dFIXEDMEDIA \
  -c "<< /CurrPageNum 1 def /Install { /CurrPageNum CurrPageNum 1 add def
   CurrPageNum 2 mod 1 eq {28 0 translate} {} ifelse } bind  >> setpagedevice" \
  -f "inputFile.pdf"

Remarque: Cette commande élargit le fichier PDF de 1 cm plus large que le format A4. Si vous imprimez ensuite au format A4, tout sera réduit et la gouttière sera légèrement plus fine que 1 cm (elle sera de 9,5 mm). Si cela ne suffit pas, vous devrez faire un peu d'algèbre pour obtenir le bon décalage. Dans ce cas, il faudrait 29,8pts, au lieu de 28pts, pour obtenir une gouttière imprimée de 10,0 mm (vous devrez également régler -dDEVICEWIDTHPOINTS=624.8). Toutefois, si la gouttière est inférieure à environ 2 cm, le calcul ne vaut probablement pas la peine, en particulier si l’on tient compte des tolérances d’impression et du format du papier.


1
Où avez-vous trouvé la solution d'origine? :-) (Bonne amélioration avec le codage PostScript de la traduction automatique des pages impaires, BTW) :)
Kurt Pfeifle

@Kurt Merci :) Mais je ne suis pas tout à fait sûr de ce que vous voulez dire. Je me suis inspiré de quelques autres réponses , notamment des pages de manuel GhostScript et du manuel de référence du langage PostScript d’Adobe . Comme vous l'avez dit, l'adapter pour n'affecter que les pages impaires était tout à fait de mon invention, et c'était en fait extrêmement difficile en raison des limitations des langages basés sur des piles tels que PostScript.
HullCityFan852

@Kurt Il est intéressant de noter que la page 414 du manuel Référence du langage PostScript mentionne une fonction intégrée ImageShift permettant d'effectuer cette tâche même, et la page 427 suggère d'utiliser BeginPage. Cependant, j'ai essayé les deux et aucun ne semble fonctionner avec Ghostscript, d'où le compteur de pages manuel de ma solution.
HullCityFan852

Cela devrait également fonctionner: gs -o out.pdf -sDEVICE=pdfwrite -c "<</PageOffset [100 -100]>>setpagedevice" -f in.pdf. Le /ImageShiftparamètre pagedevice est uniquement disponible dans PostScript 3 et peut ne pas être pris en charge par Ghostscript.
Kurt Pfeifle

@Kurt Cela semble donner le même décalage pour les pages impaires et paires, et non pas le décalage opposé, ce que j'essaie de réaliser et que ma solution permet.
HullCityFan852
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.