Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/03/2020, à 16:18

bergeronnette

script avec pdftk plante et tourne longtemps

Voici une ligne de code, qui m'a été donnée il y a assez longtemps, pour modifier la mise en page d'un fichier pdf réalisé avec LaTeX.

$(echo -n "pdftk S=DOC.pdf cat";for k in {1..X/2..2};do echo -n " S$k S$((X/2+k)) S$((X/2+1+k)) S$((k+1))";done;echo " output DOC-FINAL.pdf")

En général, ce code fonctionne très bien mais ici, ça bloque.
Mon fichier fait 340 pages et 3,3 Mo. J'obtiens ce message que je ne sais pas interpréter.
Le fichier est-il trop lourd ?

Error: Unexpected Exception in open_reader()
java.lang.OutOfMemoryError: GC overhead limit exceeded
	at pdftk.com.lowagie.text.pdf.ByteBuffer.toByteArray(ByteBuffer.java:543)
	at pdftk.com.lowagie.text.pdf.PdfName.encodeName(PdfName.java:1935)
	at pdftk.com.lowagie.text.pdf.PdfName.<init>(PdfName.java:1814)
	at pdftk.com.lowagie.text.pdf.PdfReader.readDictionary(PdfReader.java:1533)
	at pdftk.com.lowagie.text.pdf.PdfReader.readPRObject(PdfReader.java:1570)
	at pdftk.com.lowagie.text.pdf.PdfReader.readObjStm(PdfReader.java:1203)
	at pdftk.com.lowagie.text.pdf.PdfReader.readDocObj(PdfReader.java:1115)
	at pdftk.com.lowagie.text.pdf.PdfReader.readPdf(PdfReader.java:508)
	at pdftk.com.lowagie.text.pdf.PdfReader.<init>(PdfReader.java:172)
	at pdftk.com.lowagie.text.pdf.PdfReader.<init>(PdfReader.java:161)
	at com.gitlab.pdftk_java.TK_Session.add_reader(TK_Session.java:122)
	at com.gitlab.pdftk_java.TK_Session.add_reader(TK_Session.java:217)
	at com.gitlab.pdftk_java.TK_Session.<init>(TK_Session.java:1201)
	at com.gitlab.pdftk_java.pdftk.main(pdftk.java:171)
Error: Failed to open PDF file: 
   DOC.pdf
Internal Error: unable to add reader
Errors encountered.  No output created.
Done.  Input errors, so no output created.

Y a-t-il une solution ?
Je pensais à qpdf mais je ne sais pas plus comment adapter ce code.

Je suis sous xubuntu 18.04 à jour.
Merci

Hors ligne

#2 Le 02/03/2020, à 19:06

kamaris

Re : script avec pdftk plante et tourne longtemps

Un peu bizarre ta commande, tu dois être obligé de remplacer X/2 par sa valeur, au moins pour la première occurrence, dans : {1..X/2..2}.
Tu ferais mieux de l'écrire comme ça :

pdftk S=DOC.pdf cat $(for ((k=1;k<=X/2;k+=2)); do echo -n "S$k S$((X/2+k)) S$((X/2+1+k)) S$((k+1)) "; done) output DOC-FINAL.pdf

Comme ça, il te suffit d'affecter à X une valeur paire au préalable, et c'est bon.

Maintenant, concernant ton message d'erreur, on y voit

Error: Failed to open PDF file: 
   DOC.pdf

Es-tu sûr que le fichier DOC.pdf existe là où tu exécutes cette commande ?

Hors ligne

#3 Le 02/03/2020, à 19:53

bergeronnette

Re : script avec pdftk plante et tourne longtemps

Je modifie manuellement le nombre X/2 après création du fichier pdf.
Le fichier est bien là.
Le code fonctionne jusqu'à X/2=120 puis à 130 donne une erreur. Je n'ai pas fait entre chaque valeur. Il faut à peu près 5 minutes de traitement (échec ou pas).
Je vais devoir couper en 2 le fichier pour faire le traitement mais à la sortie de la photocopieuse j'aurai un manipulation de tri supplémentaire.

Hors ligne

#4 Le 02/03/2020, à 20:04

kamaris

Re : script avec pdftk plante et tourne longtemps

Ah oui, j'avais commencé à lire le message d'erreur par le bas (logique…), mais en haut, on a :

java.lang.OutOfMemoryError: GC overhead limit exceeded

Donc il faudrait probablement couper ton fichier pdf en deux, oui.

Hors ligne