J'ai récemment eu besoin d'une seule page PDF vierge (8,5 "x 11") et me suis rendu compte que je ne savais pas comment en créer une à partir de la ligne de commande.
L'émission touch blank.pdf
produit un fichier PDF vide . Existe-t-il un outil de ligne de commande produisant une page PDF vide ?
command-line
pdf
Brian Fitzpatrick
la source
la source
Réponses:
convert
, l'utilitaire ImageMagick utilisé dans la réponse de Ketan, vous permet également d'écrire quelque chose commeou
ou (pour le papier A4 horizontal)
etc. , sans créer de fichier texte vide. @chbrown a remarqué que cela crée un fichier pdf plus petit.
"xc:" signifie "X Constant Image" mais pourrait être considéré comme "x canvas". C'est un moyen de spécifier un seul bloc d'une couleur, dans ce cas rien. Plus d'informations sur http://imagemagick.org/Usage/canvas/#solid qui est le manuel "de facto" pour ImageMagick. [complétées par des informations de conduite] ( Des choses comme
pdf:a
peut être utilisé pour déclarer explicitement le format d'un fichier.label:'some text'
,gradient:
,rose:
etlogo:
semblent être d' autres exemples de formats de fichiers spéciaux.)Anko a suggéré d'afficher cette modification séparément, alors je le fais.
la source
~/bin
convert-im6.q16: not authorized 'blank.pdf' @ error/constitute.c/WriteImage/1037
, mais j'ai trouvé la solution ici: askubuntu.com/questions/1081895/… .Comme le plus petit possible GIF , le plus petit a besoin de la page blanche PDF peut être travaillé à la main, car il est si petit que les bits inutiles mais Inoffensif de métadonnées deviennent une partie importante de la taille du fichier et la compression fait réellement des choses plus . Cela nécessite également une attention particulière aux règles de la spécification PDF concernant les éléments de la structure de fichier qui sont ou non requis. (Saviez-vous que les objets de page doivent contenir un
/Resources
dictionnaire, même s'il est vide, mais ne sont pas obligés d'inclure un/Contents
flux?)Si vous n'utilisez pas d'objet PDF 1.5 ni de flux de références croisées (ce qui présente l'avantage que le fichier peut être complètement imprimable en ASCII), je pense que le mieux que vous puissiez faire est de 317 octets. Si vous copiez et collez, notez qu'il doit y avoir un espace de fin sur les quatre entrées du tableau de références croisées (les lignes entre
0 4
ettrailer<<...
), et qu’il n’est pas supposé être un retour à la ligne final après le%%EOF
.Le remplacement de la table de références croisées par un flux de références croisées v1.5 conçu manuellement rend le fichier légèrement plus petit, au prix où il n'est plus imprimable ASCII: 294 octets. (Par souci de lisibilité, sans oublier de pouvoir le saisir du tout, le flux de xréf ci-dessous a été hexdumpé, mais cela ne figure pas dans son dictionnaire de flux. Pour récupérer un fichier PDF valide, vous devez remplacer le fichier hexadécimal par le correspondant octets binaires brutes, ou le changement
/Length 15
à/Length 30/Filter/ASCIIHexDecode
et accepter un fichier qui est de 328 octets.)J'ai également essayé d'encapsuler les objets 1 à 3 dans un flux d'objet, mais cela ajoute plus de temps système qu'il n'enregistre, même lorsque le flux est compressé.
Une formulation alternative possible du flux de xréf est
Malheureusement, malgré les économies substantielles réalisées sur la longueur des données de flux réelles, l’addition supplémentaire
/Index[1 4]
absorbe la totalité des économies réalisées sauf un octet. En outre, il m'est difficile de savoir si vous êtes autorisé à laisser l'objet 0 complètement en dehors du fichier. (Il m'est également difficile de savoir si l'objet 0 doit avoir le numéro de génération -1. Si cela n'est pas nécessaire, vous enregistrez davantage d'octets avec.)
Pour modifier le format du papier, remplacez-le
612 792
par la largeur et la hauteur appropriées, exprimées en points PostScript (72 points PostScript = 1 pouce américain ou 25,4 millimètres). Par exemple,595 842
pour A4. Vous pouvez l'intégrer dans un script shell qui crée un fichier PDF vierge, quel que soit le format de papier souhaité. la seule difficulté consiste à s'assurer que lestartxref
décalage reste précis même si la taille de l'objet 3 change.la source
Si vous avez
convert
(un utilitaire ImageMagick) installé, vous pouvez faire ceci:la source
convert
a également une-size
option que vous pouvez utiliser pour définir la taille du fichier PDF en sortie.convert xc:none -page Letter a.pdf
sans créer de fichier txt vide.(null)
erreur de police.convert.im6: improper image header
eu.txt '@ error / txt.c / ReadTXTImage / 429. convert.im6: aucune image définiea.pdf' @ error/convert.c/ConvertImageCommand/3044.
echo .bp | groff -T pdf > t.pdf
Présenté par groff, le logiciel le plus sous-estimé du monde.
la source
groff: can't find `DESC' file
etgroff:fatal error: invalid device `pdf'
avec groff version 1.22.2 sur CentOS 7.2.bash 4.1.2
runninggroff 1.18.1.4
.bp
signifie simplement "casser la page", raison pour laquelle cela produit un document de 2 pages. Pour produire un document d'une page, il suffit de faire encore plus simpleecho | groff -T pdf > blank.pdf
.echo .bp
devrait en effet être remplacé parecho
, tout comme @FaheemMitha ditVous pouvez utiliser pdfTeX:
qui produit une seule page vierge
texput.pdf
d'environ 900 octets, soit la moitié de ce qu'utilise ImageMagick.Cela vous met cependant à la merci du format de papier par défaut de votre installation TeX. Pour définir explicitement la taille, vous pouvez plutôt vous rendre à LaTeX:
Une autre option consisterait à utiliser le pilote PDF de Ghostscript, bien que le
ps2pdf
script pratique :ce qui est beaucoup plus silencieux que TeX mais produit une sortie moins compacte (environ 2300 octets).
la source
echo "" | ps2pdf -sPAPERSIZE=a4 - blank.pdf
. C'est légèrement plus petit, à 2200 octets.echo '\documentclass[letterpaper]{article}\usepackage[pass]{geometry} \begin{document}\shipout\hbox{}\end{document}' | pdflatex
créearticle.pdf
. Est-il possible de le créerblank.pdf
directement?-jobname <basename>
sur la ligne de commande.\shipout\hbox{}
oushowpage
produit une page. TeX et Postscript ont des constructions en boucle que vous pouvez utiliser, mais il est probablement plus simple d'utiliser le langage de script de votre choix pour dupliquer la commande un nombre de fois approprié.Un moyen simple de créer un PDF avec une page vierge consiste à
rst2pdf
:écho dans un seul espace ne fera pas, vous vous retrouverez avec un fichier PDF sans pages (qui n'est pas la même chose qu'un fichier vide).
la source
Sur la ligne de commande, tapez:
la commande
ps2pdf
est utilisée pour convertir un fichier PostScript en pdfla source
ps2pdf blank.pdf
renvoie une erreur, car il attend un fichier Postscript en tant qu'argument. Et la deuxième commande nécessite un pré-existantfile.pdf
. Est-ce que je manque quelque chose?touch blank.ps
.; 2ps2pdf blank.ps blank.pdf
.; 3.pdftk A=1.pdf B=blank.pdf cat A1-end B output 2.pdf
Enfin, voici la méthode Ghostscript pour créer un PDF affichant une page vide:
La taille de la page sera probablement Lettre. Si vous voulez A4, utilisez ceci:
Arrière-plan: le
-c
paramètre peut être suivi de n’importe quelle chaîne PostScript valide, que Ghostscript essaiera d’interpréter. Et une page vide en PostScript est représentée par ce bloc de code court:la source