Conversion de PDF en PDF / A?

11

Étant donné un PDF d'origine aléatoire, comment puis-je, sous Linux:

  • confirmer s'il est déjà au format PDF / A ?
  • s'il n'est pas au format PDF / A, le convertir en PDF / A avec un minimum de perte de fidélité?

Je suis conscient que la conversion peut entraîner la perte d'éléments exotiques du document, mais supposons que la possibilité d'ouvrir le document dans un avenir relativement lointain est plus importante que de telles fonctionnalités spiffy (qui pourraient ne pas être disponibles / lisibles à un tel une fois quand même). Je préfère être en mesure de confirmer visuellement l'exactitude de la conversion lorsque je peux visualiser trivialement les documents côte à côte plutôt que de risquer de ne pas pouvoir ouvrir le fichier d'origine.

un CVn
la source

Réponses:

9

Identification

J'ai trouvé cet outil qui semble être ce que vous pouvez utiliser pour identifier les fichiers PDF / A. Cela s'appelle DROID (Digital Record and Object Identification) . Il est basé sur Java et peut être exécuté à partir d'une interface graphique ou de la ligne de commande.

extrait

DROID est un outil logiciel développé par les Archives nationales pour effectuer une identification automatisée par lots des formats de fichiers. Développé par son service de préservation numérique dans le cadre de ses activités de conservation numérique plus larges, DROID est conçu pour répondre aux exigences fondamentales de tout référentiel numérique pour pouvoir identifier le format précis de tous les objets numériques stockés, et pour relier cette identification à un registre central d'informations techniques sur ce format et ses dépendances.

Étant donné qu'il est parrainé par les Archives nationales, je suppose que c'est le bon outil pour le faire, compte tenu de l'objectif prévu du format PDF / A. Le projet est également open source et le code est disponible sur Github ainsi que sous forme binaire sur le site Web des Archives nationales .

Validation et conversion

Si vous cherchez un outil pour effectuer la validation et la conversion, je crois que PDFBox peut le faire. PDFBox répertorie la validation PDF / A directement sur la première page de leur site Web. C'est une autre application Java 8-).

extrait du site web

Validation PDF / A
Validez les PDF par rapport à la norme ISO PDF / A.

Sous la section des outils de ligne de commande à gauche de leur page principale, affichez l'utilisation suivante de l'outil:

$ java -jar pdfbox-app-x.y.z.jar org.apache.pdfbox.ConvertColorspace [OPTIONS] <inputfile> <outputfile>

veraPDF est un autre outil capable de valider PDF / A; il fait partie de l'ensemble d'outils de référence de l'Open Preservation Foundation. C'est aussi une application Java.

Conversion

Pour faire juste la conversion, j'ai trouvé cette méthode à partir d'un article de blog intitulé: moyen gratuit de convertir un PDF existant en PDF / A , qui utilise les outils suivants:

  • Ghostscript 8.64 uniquement.
  • PDFBox 0.7.3
  • pdfmarks (fichier pour fournir des métadonnées supplémentaires)
  • PDFA_def.ps
  • USWebCoatedSWOP.icc

Avec ce qui précède en place, vous utilisez la commande suivante:

$ gs -sDEVICE=pdfwrite -q -dNOPAUSE -dBATCH -dNOSAFER     \
-dPDFA -dUseCIEColor -sProcessColorModel=DeviceCMYK       \
-sOutputFile=Out_PDFA.pdf PDFA_def.ps pdfmarks IN_PDF.pdf

Ce n'est pas sans ses verrues. L'article discute de l'un d'eux, en fixant les indicateurs d'impression sur les hyperliens étant l'un d'entre eux. L'article fournit une application Java que vous pouvez utiliser pour résoudre ces problèmes:

$ java FixPrintFlag Out_PDFA.pdf New_verifiablePDFA.pdf

Ce n'est pas joli mais semble être réalisable. Voir l' article pour plus de détails.

Les références

slm
la source
Je vais devoir essayer ceci - cela semble terriblement prometteur. Avec un peu de violon, il pourrait même être possible de l'intégrer dans l'imprimante CUPS-PDF; il y a des paramètres dans /etc/cups/cups-pdf.conf qui semblent prometteurs à cet effet. Merci de prendre le temps! Pas vraiment prêt à le tester en ce moment, mais j'y reviendrai (j'espère demain).
un CVn du
@ MichaelKjörling - merci pour la question. Je n'avais jamais entendu parler du format PDF / A auparavant et nous avons besoin de cette chose exacte au travail. Vous m'avez donc aidé à ressembler à un génie pour savoir ce genre de choses maintenant 8-).
slm
Quoi pdfmarks?
Andrew
1

Pour l'identification des fichiers, la commande fileest souvent utile. Il recherchera dans votre fichier des nombres magiques, des identificateurs de fichier, des informations d'encodage, etc. pour donner toutes les informations utiles qu'il peut.

Dans le cas particulier des fichiers PDF, l'utilitaire pdfinfoest particulièrement utile. Dans mon cas, une distribution Gentoo, elle est livrée avec poppler, une bibliothèque de rendu PDF.

lgeorget
la source
1
pdfinfo -metaet regarder xmpmeta/RDF/Description/conformancesemble dire si le PDF est PDF / A (ce nœud est A) ou non (le nœud n'existe pas ou a une autre valeur). C'est un début!
un CVn le
0

Voici un script de ligne de commande bash qui fait exactement cela:

#!/bin/bash

pdf_input=$1
ps_output=${pdf_input%.*}.ps
pdfa_output=${pdf_input%.*}_a.pdf
pdftops $input $ps_output

gs -dPDFA -dBATCH -dNOPAUSE -dNOOUTERSAVE -dUseCIEColor -sProcessColorModel=DeviceCMYK -sDEVICE=pdfwrite -sPDFACompatibilityPolicy=1 -sOutputFile=$pdfa_output $ps_output

Enregistrez-le dans un fichier appelé pdf2pdfa.sh qui se trouve sur votre chemin, puis appelez-le comme ceci:

pdf2pdfa.sh input.pdf

Il créera input_a.pdf.

Daruma
la source
2
(1) Veuillez expliquer ce que cela signifie. (2) Qu'est-ce que c'est input? Je vois pdf_input, mais qu'est-ce que c'est input? (3) Vous devez toujours citer les variables du shell, sauf si vous avez une bonne raison de ne pas le faire, et vous êtes sûr de savoir ce que vous faites. Veuillez ne pas répondre dans les commentaires; modifiez  votre réponse pour la rendre plus claire et plus complète.
G-Man dit `` Réinstalle Monica ''