De toutes les méthodes pour ajouter une image à un document pdf que j'ai essayé (et j'en ai fatigué beaucoup, y compris la plupart de celles mentionnées sur cette page), la seule qui constamment produit de haute qualité Le résultat est une méthode utilisant LaTeX, que je décris ci-dessous. Vous n'avez pas besoin de connaître LaTeX au-delà de ce que je vais dire ici. Vous n'avez même pas besoin d'avoir une installation LaTeX fonctionnelle sur votre ordinateur : vous pouvez utiliser le programme entièrement gratuit éditeur LaTeX en ligne Au verso .
C'est une solution viable fourni par vous êtes prêt à se débarrasser de toutes les fonctions interactives dans votre document pdf : champs de formulaire à remplir, surlignages, commentaires, liens, signets, etc. Si votre document pdf original contient déjà du contenu interactif, vous devrez d'abord produire une version "simple" de celui-ci, c'est-à-dire une version qui ne comporte pas de fonctions interactives.
Vous pouvez produire un pdf "ordinaire" en imprimant, par exemple, votre document pdf original dans un nouveau fichier pdf (cf. ici ). De cette façon, les formulaires interactifs que vous avez remplis, par exemple, seront présents sous forme de texte normal dans le pdf imprimé, "simple". Vous pourrez maintenant utiliser LaTeX pour ajouter une image à ce pdf "ordinaire". Le fichier pdf résultant (produit par LaTeX) sera également "ordinaire". (Il puede Il est possible de restaurer les fonctions interactives en utilisant un outil appelé pax
voir par exemple ici mais je ne l'ai pas essayé moi-même).
La raison pour laquelle les solutions basées sur LaTeX ne peuvent pas préserver les caractéristiques interactives du document pdf original est expliquée. ici .
Si votre pdf d'entrée n'est pas 'plain', tout le contenu des fonctions interactives sera ignoré par LaTeX. Ainsi, si par exemple vous avez mis du texte dans un champ de formulaire à remplir, le document produit par LaTeX ne le montrera pas - il affichera un blanc.
Outre le fait qu'elle ne permet pas d'inclure des éléments interactifs dans le résultat, cette solution est potentiellement très puissante, puisqu'elle permet par exemple de redimensionner et de faire pivoter les images, et d'obtenir des résultats plus précis. programmatique insertion d'images multiples sur plusieurs pages. (Bien que je ne fournirai pas de détails pour la dernière, je donnerai une indication de la façon dont cela peut être fait).
En outre, cette solution est par ailleurs illimitée, entièrement gratuit, y source ouverte. Et, comme je l'ai dit, il devrait introduire aucune dégradation de la qualité par rapport à vos fichiers d'entrée.
(En dehors de la méthode décrite ici, il existe en fait de nombreuses façons de procéder dans LaTeX ; cf. ici .)
Procédure
Le but est de prendre un fichier pdf 'ordinaire' de dix pages, dans notre cas appelé 'sample_pdf_letter_format.pdf', et d'ajouter une certaine image png au milieu de la page 5. Cette image sera ce png d'un 'globe bleu', qui a un fond transparent :
(J'ai téléchargé ce png à partir de ici .)
Je vais décrire la procédure en supposant que vous travaillez avec des pdf au format lettre. L'adaptation au format A4 ne nécessite qu'une modification minime ; en tout cas, je fournirai des scripts pour les deux.
Je vais tout expliquer en utilisant Overleaf, mais bien sûr tout peut être fait en utilisant une installation LaTeX sur votre propre ordinateur, ou en utilisant un autre éditeur LaTeX en ligne.
J'ai activé le partage pour un "projet" sur Overleaf. Ce projet contient des exemples de fichiers sur lesquels je vais expliquer ce qu'il faut faire. Vous pourrez visualiser et télécharger tous les fichiers, et aussi "compiler" tous les fichiers dont le nom se termine par ".tex".
Cependant, vous no être capable de télécharger tout fichier ou à modifier ceux qui existent déjà.
Afin d'ajouter vos propres images à vos propres fichiers pdf, tout ce que vous devez faire est de vous inscrire pour un compte Overleaf gratuit et de télécharger tous les fichiers pertinents à votre projet (y compris les fichiers pertinents .tex
de mon projet). Vous pouvez également utiliser une installation de LaTeX sur votre propre ordinateur.
Alors, cliquez ici .
Une fois que vous avez cliqué sur ce lien, vous devriez voir l'espace de travail d'Overleaf, comme ceci :
Sur la gauche, vous pouvez voir un tas de fichiers. L'un d'entre eux doit être mis en évidence. Assurez-vous qu'il s'agit de 'main_letter_format.tex' (cliquez dessus si ce n'est pas le cas). Une fois que ce fichier est en surbrillance, son contenu devrait apparaître dans la partie centrale de l'écran. Dans la partie droite de l'écran, vous devriez voir un document joliment formaté avec le titre 'A sample pdf document' ; si ce n'est pas le cas, appuyez sur le bouton 'Recompile' qui se trouve au-dessus de cette partie de l'écran. Au final, la page devrait ressembler à la capture d'écran ci-dessus.
Dans la partie droite de l'écran, faites défiler le document jusqu'à la page 5. Vous devriez voir ceci :
Le globe bleu,
,
est le png qui est superposé au pdf.
Vous pouvez télécharger le pdf de sortie complet (avec le png ajouté) en cliquant sur l'icône suivante, à droite du bouton 'Recompile' :
Voyons maintenant ce que fait réellement ce "projet".
Notre fichier pdf original, auquel l'image doit être ajoutée, est 'sample_pdf_letter_format.pdf'. L'image à ajouter s'appelle 'blue_globe.png'. C'est le "globe bleu" que j'ai montré ci-dessus, avec un fond transparent.
Ces deux fichiers ont été téléchargés vers Overleaf à l'aide du bouton de téléchargement situé dans la partie gauche de l'écran (vous ne le verrez pas tout de suite - vous devez être connecté à votre propre projet Overleaf pour pouvoir télécharger des fichiers) :
Examinons maintenant le fichier 'main_letter_format.tex', qui contient le code LaTeX qui permet d'ajouter l'image au document PDF. (Pour être complet, j'ai également reproduit le contenu de ce fichier ici ; voir ci-dessous).
Notez que les noms du document pdf original ('sample_pdf_letter_format.pdf') et du fichier image ('blue_globe.png') sont saisis aux lignes 12 et 13 :
\newcommand{\originalPDFfilename}{sample_pdf_letter_format.pdf}
\newcommand{\imagename}{blue_globe.png}
Supposons que nous voulions ajouter le fichier image à la page 5 du document pdf. Nous commençons alors par inclure, sans modification, les pages 1 à 4 du fichier pdf original. Ceci est fait à la ligne 16 :
\includepdf[pages=1-4]{\originalPDFfilename}
.
De même, nous inclurons les pages 6 à 10 à la fin, à la ligne 27 :
\includepdf[pages=6-last]{\originalPDFfilename}
.
(Notez que vous pouvez utiliser le mot-clé last
au lieu de dire explicitement quelle page est la dernière).
Nous abordons maintenant la page 5 aux lignes 17-26.
Le numéro de page est spécifié à la ligne 26 :
,pages=5]{\originalPDFfilename}
.
Notez que la ligne 20 est "commentée" en la faisant commencer par "%" :
%\includegraphics[scale=1]{gridlines_letter_bp.png} %comment out before producing the final version
Si vous supprimez le "%" initial et recompilez, vous verrez apparaître des lignes de grille à la page 5 (pour pouvoir supprimer le "%" initial, vous devez être connecté à votre propre compte Overleaf et le faire dans votre propre copie de ce fichier). Ces lignes de grille peuvent être utiles pour positionner l'image sur la page. Voici à quoi elles ressemblent :
Actuellement, l'espacement des lignes de la grille est exprimé en unités 'bp', qui sont des points PostScript (1/72 de pouce). J'ai également produit (voir ci-dessous pour une explication de la méthode) des fichiers de lignes de grille avec un espacement en pouces ('gridlines_letter_in.png') et en millimètres ('gridlines_letter_mm.png'). Pour le format A4, j'ai produit des fichiers de lignes de grille avec des espacements en pb et en millimètres. Si vous préférez certaines de ces autres lignes de grille, il suffit de remplacer leurs noms de fichiers respectifs à la ligne 20. Mais assurez-vous de commenter à nouveau la ligne 20 (et de recompiler) avant de télécharger le document final, afin que les lignes de la grille n'y apparaissent pas.
L'insertion effective de l'image se fait aux lignes 22-24 :
\begin{textblock*}{0in}[0,1](-15pt+300bp,11in-500bp)
\includegraphics[width=1in,origin=c,angle=0]{\imagename}
\end{textblock*}
Si vous regardez la capture d'écran avec les lignes de la grille (ci-dessus), vous verrez que le png contenant le 'globe bleu' a une largeur de 72 pb ( = 1 in), s'étendant de 300 pb à 372 pb. La largeur est spécifiée dans width=1in
à la ligne 23, et la hauteur est mise à l'échelle afin que le rapport d'aspect soit le même que dans l'image originale. Vous pouvez également fournir la hauteur ( height=1in
), puis la largeur sera mise à l'échelle. Vous pouvez également indiquer à la fois la largeur et la hauteur (en général, cela déforme l'image, mais c'est parfois utile). Une autre façon de redimensionner l'image est d'utiliser la commande 'scale=' ; par exemple, 'scale=0.1' donne à l'image une taille égale à 10% de sa taille originale. Enfin, on peut faire pivoter l'image en spécifiant angle
en degrés (la rotation se fait autour du centre de l'image). Pour plus de détails, voir ici .
Cela prend en charge la taille et la rotation de l'image. Son placement sur la page est fait à la ligne 22 :
\begin{textblock*}{0in}[0,1](-15pt+300bp,11in-500bp)
.
El {0in}
n'est pas pertinent pour nous. Le site [0,1]
indique que ce que nous allons positionner - le "point de référence" de l'image - est le coin inférieur gauche de l'image.
Le point de référence par défaut est le coin supérieur gauche. Les deux chiffres entre parenthèses indiquent de combien, en unités de largeur et de hauteur de l'image, vous souhaitez déplacer le point de référence. Ainsi, [0.2,0.7]
signifierait que le point de référence se situe à 20 % de la largeur de l'image à droite, et à 70 % de la hauteur de l'image en dessous, dans le coin supérieur gauche.
Maintenant vient -15pt+300bp,11in-500bp
. Les -15pt et 11in sont des décalages. La signification de ce dernier est claire : c'est la hauteur du papier de format lettre. Par contre, je ne sais pas d'où vient le -15pt ; j'ai découvert sa valeur en expérimentant.
L'unité 'pt' est le 'point TeX', égal à 1/72,27 pouce, tandis que le 'bp' est égal à 1/72 pouce. Dans Adobe InDesign, le pt est appelé "point traditionnel de l'imprimante", cf. ici .
Au final, si vous mettez
\begin{textblock*}{0in}[0,1](-15pt+0bp,11in-0bp)
alors le globe bleu apparaîtra dans le coin inférieur gauche de la page.
Par conséquent, -15pt+300bp,11in-500bp
signifie que le point de référence de l'image (que nous avons défini comme étant son coin inférieur gauche) se trouve à 300 pb à droite du bord gauche de la page, et à 500 pb au-dessus du bord inférieur de la page (comme vous pouvez le vérifier sur la capture d'écran avec les lignes de la grille).
Pourquoi "11in-500bp" ? LaTeX aime mesurer les choses à partir du supérieur coin gauche, mais les lignes de la grille que j'ai ont toutes leur origine dans le coin gauche. inférieur gauche. Ainsi, si nous voulons être 500 pb au-dessus de le site inférieur nous devons mettre 11in-500pb ; en mettant seulement 500pb, on placerait le point de référence à 500pb. en dessous de le site supérieur le bord de la page.
Plus d'images sur plus de pages
Si vous voulez inclure plus d'une image sur la page 5, pour chaque image supplémentaire, vous devrez ajouter, à partir de la ligne 25, un autre bloc comme celui des lignes 22-24 (un bloc pour chaque image supplémentaire). Bien sûr, au lieu de \imagename vous utiliseriez les noms des autres images, au lieu de 300bp et 500bp vous utiliseriez les coordonnées appropriées pour les nouvelles images, et au lieu de 'width=1in' et 'angle=0' vous utiliseriez les largeurs et angles appropriés pour ces images.
Si vous souhaitez ajouter la ou les mêmes images aux pages 5 à 7, par exemple, vous devez modifier la ligne 26 comme suit
,pages=5-7]{\originalPDFfilename}
et la ligne 27 comme suit
includepdf[pages=8-last]{\originalPDFfilename}
.
Si les pages sur lesquelles vous souhaitez ajouter des images ne sont pas consécutives, vous devrez produire des commandes distinctes pour chaque page. Par exemple, imaginez que vous souhaitiez ajouter le même globe bleu (au même endroit) à toutes les pages du site numéros pairs pages. À l'heure actuelle, dans LaTex, je ne sais comment le faire qu'en utilisant la "force brute", c'est-à-dire en utilisant la méthode suivante
\includepdf[pages=1]{\originalPDFfilename}
\includepdf[pagecommand= {…},pages=2]{\originalPDFfilename}
\includepdf[pages=3]{\originalPDFfilename}
\includepdf[pagecommand= {…},pages=4]{\originalPDFfilename}
…
Ici …
sur pagecommand= {…}
représente le bloc des lignes 22-24.
Bien sûr, on peut certainement écrire un script (en unix bash, ou en Python, ou en perl, ou autre) qui fera de manière programmatique un fichier .tex approprié.
Une option plus élégante (et potentiellement plus puissante) est de passer le compilateur de pdfLaTeX à LuaLaTex, qui permet d'ajouter des scripts dans le langage de script Lua directement dans le fichier .tex. Dans Overleaf, le changement de compilateur se fait comme suit : Menu->Compilateur->LuaLaTeX. Le LuaLaTeX compilera normalement tous les fichiers LaTeX standard (en particulier, notre 'main_letter_format.tex' compilera normalement, bien que plus lentement), mais il vous permet en plus (entre autres choses) d'ajouter du code dans le langage de script Lua. En utilisant du code Lua, on devrait être capable de faire par programme des choses comme celles qui précèdent. (Du moins, je suppose que le langage de script Lua permettrait de le faire, sur la base d'exemples tels que ceux-ci ici (En fait, je n'ai aucune expérience des scripts Lua).
Modifications pour le format A4
Cliquez sur 'main_A4_format.tex'. Vous devriez pouvoir le compiler en cliquant sur le bouton 'Recompile'. Les seules différences sont qu'il faut remplacer letterpaper
por a4paper
dans les lignes 1 et 2, et on devrait remplacer 11in
por 297mm
aux lignes 19 et 22.
Et c'est tout : il vous suffit de fournir votre propre document source, votre propre image et vos propres spécifications concernant la taille, l'orientation et la position de l'image.
Les codes LaTeX
Pour être complet, voici le contenu du fichier 'main_letter_format.tex'. Les modifications pour le format A4 sont celles expliquées ci-dessus.
\documentclass[letterpaper]{article}
\usepackage[letterpaper,left=0in,right=0in,top=0in,bottom=0in]{geometry}
\usepackage{graphicx}
\usepackage{pdfpages}
\usepackage[absolute,overlay]{textpos}
\usepackage{calc}
\begin{document}
\newcommand{\originalPDFfilename}{sample_pdf_letter_format.pdf}
\newcommand{\imagename}{blue_globe.png}
\includepdf[pages=1-4]{\originalPDFfilename}
\includepdf[pagecommand=
{
\begin{textblock*}{0in}[0,1](-15pt+0in,11in)
%\includegraphics[scale=1]{gridlines_letter_bp.png} %comment out before producing the final version
\end{textblock*}
\begin{textblock*}{0in}[0,1](-15pt+300bp,11in-500bp)
\includegraphics[width=1in,origin=c,angle=0]{\imagename}
\end{textblock*}
}
,pages=5]{\originalPDFfilename}
\includepdf[pages=6-last]{\originalPDFfilename}
\end{document}
Les lignes de la grille ont été produites en utilisant ce code (que j'ai trouvé ici ) :
\documentclass[letterpaper]{article}
\usepackage{xcolor}
\usepackage[grid, gridunit=bp, gridcolor=blue!40, subgridcolor=blue!20]{eso-pic}
\begin{document}
\thispagestyle{empty}
\mbox{} %need to have *something* on a page to render it, so we put an empty box of zero width
\end{document}
Une fois que le pdf avec les lignes de la grille est produit, vous devez le convertir en fichier image png avec le blanc remplacé par la transparence. Ceci peut être fait en utilisant le programme gratuit GIMP (Programme de manipulation d'images GNU) :
- Ouvrez la page pdf contenant les lignes de la grille dans GIMP. Vous pouvez faire un clic droit dessus et sélectionner "Ouvrir avec", puis cliquer sur "GNU Image Manipulation Program".
- Vous serez invité à importer des pdf. Cliquez sur le bouton "Importer".
- Assurez-vous qu'il y a une couche transparente : Calque->Transparence->Ajouter un canal Alpha. En fait, 'Add Alpha Channel' devrait être grisé, ce qui signifie que le canal alpha (c'est-à-dire le calque transparent) est déjà présent. Si c'est le cas, quittez ce dialogue en cliquant n'importe où ailleurs sur l'écran. Si l'option "Ajouter un canal alpha" n'est pas grisée, cliquez dessus.
- Couleurs->Color to Alpha . Dans la nouvelle fenêtre de dialogue, vérifiez que le champ "Couleur" est défini sur blanc, que le "Seuil de transparence" est égal à 0 et que le "Seuil d'opacité" est égal à 1. Si c'est le cas, cliquez sur "OK".
- Fichier->Exporter sous . Assurez-vous de changer l'extension du nom en '.png'. Cliquez sur le bouton 'Exporter'. Une nouvelle fenêtre de dialogue apparaît ; cliquez sur "Exporter" dans cette fenêtre également.