#1 Le 01/05/2007, à 09:07
- greguti
[résolu] Convertir plusieurs fichiers TXT en un seul fichier PDF
Hello,
j'ai des tonnes de fichiers au format TXT (des courts textes) que je souhaiterais agréger dans un seul fichier PDF (pour que tous ces textes soient réunis en un seul fichier). Y a-t-il une commande pratique qui me permettrait de faire ça simplement ? J'ai bien essayé "convert *.txt archives.pdf" mais bien sûr ça n'a pas fonctionné ("convert" est prévu pour modifier des fichiers d'image, pas des fichiers txt).
Si jamais ce n'est pas possible, je veux bien un conseil pour réunir tous ces fichiers en un seul gros fichier HTML par exemple, voire en un seul gros fichier TXT !
@+
Greg
Dernière modification par greguti (Le 01/05/2007, à 16:43)
Ubuntu 9.04 Jaunty Jackalope sur Asus F8va (ATI Radeon HD 3650)
Petit à petit linux change la vie.
Le petit blog d'un linuxien heureux
Hors ligne
#2 Le 01/05/2007, à 09:32
- greguti
Re : [résolu] Convertir plusieurs fichiers TXT en un seul fichier PDF
Bon, je me réponds à moi-même.
J'ai presque trouvé la solution, grâce au logiciel htmldoc. Présent dans les depôts, donc installable très simplement en ligne de commande :
sudo aptitude install htmldoc
Le logiciel est prévu pour convertir des fichiers HTML en PDF, mais ça marche aussi en lui donnant des fichiers TXT ! J'arrive donc à générer un seul et unique fichier PDF qui inclut chaque fichier TXT entré au départ, chacun sur une nouvelle page, tout à fait ce que je cherchais !
Seulement il y a un hic, c'est au niveau de l'encodage des caractères. Alors que les fichiers TXT originaux sont tout à fait propres dans GEdit par exemple, dans le PDF généré ils sont remplacés (par exemple "é" devient "é"), et les sauts de ligne ne sont pas préservés non plus.
Il s'agit au départ de fichiers TXT générés par le logiciel Zim, et je crois qu'il encode en UTF8. Seulement, dans le logiciel HTMLDOC, onglet "Fonts", le menu déroulant "Character Set" ne propose par UTF8...
Dommage, au final le PDF contient bien tous mes fichiers TXT, mais c'est quasiment illisible...
@+
Greg
Ubuntu 9.04 Jaunty Jackalope sur Asus F8va (ATI Radeon HD 3650)
Petit à petit linux change la vie.
Le petit blog d'un linuxien heureux
Hors ligne
#3 Le 01/05/2007, à 09:51
- greguti
Re : [résolu] Convertir plusieurs fichiers TXT en un seul fichier PDF
Hum... ça se confirme, HTMLDOC ne sait pas gérer les textes en UTF8 : http://www.htmldoc.org/newsgroups.php?s1830+ghtmldoc.general+v1834+T0
Me revoilà à mon point de départ. A moins de réussir à convertir mes fichiers TXT en masse dans un autre encodage ?
:-(
@+
Greg
Ubuntu 9.04 Jaunty Jackalope sur Asus F8va (ATI Radeon HD 3650)
Petit à petit linux change la vie.
Le petit blog d'un linuxien heureux
Hors ligne
#4 Le 01/05/2007, à 10:38
- nico_h
Re : [résolu] Convertir plusieurs fichiers TXT en un seul fichier PDF
Je sais pas si ça t'ira, mais par exemple, en ligne de commande, un simple :
$ cat *.txt > fichier_complet.txt
et t'aura le contenu de tous tes fichiers txt (par ordre alphabétique) dans fichier_complet.txt.
Après, y'a plus qu'à ouvrir avec OOo et exporter en pdf...
Si tu veux mettre chaque fichier .txt sur une page différente du fichier final, par contre, je vois pas trop comment faire de façon simple. Un petit script avec une boucle permettant de rajouter des "sauts de page" entre chaque fichier .txt ? (mais le "saut de page" est sans doute inconnu du format txt). Parce que là, avec le cat *.txt....... tout va être collé à la queue-leu-leu.
Config. actuelle : linux mint 22.04 | FreeBSD 12
Des exercices d'entraînement en maths : http://mr.hainaux.net/
Hors ligne
#5 Le 01/05/2007, à 11:40
- greguti
Re : [résolu] Convertir plusieurs fichiers TXT en un seul fichier PDF
Merci Nico_h ! C'est vrai que cette commande toute simple est super intéressante. Effectivement le seul petit problème c'est d'avoir un simple saut de ligne entre chaque fichier, là le début d'un fichier est collé à la dernière lettre du précédent. Je peux toujours le faire à la main, mais bon ça va être un peu chiant quand même.
En tout cas merci, comme toujours avec Linux, des solutions très simples existent "out of the box" !
@+
Greg
Ubuntu 9.04 Jaunty Jackalope sur Asus F8va (ATI Radeon HD 3650)
Petit à petit linux change la vie.
Le petit blog d'un linuxien heureux
Hors ligne
#6 Le 01/05/2007, à 11:56
- PB68
Re : [résolu] Convertir plusieurs fichiers TXT en un seul fichier PDF
Un script doit être faisable en insérant un Form Feed entre chaque fichier TXT comme le disait nico_h dans son message #4.
Caractère Form Feed :
En décimal, c'est équivalent au caractère 12.
En octal, c'est équivalent au caractère 14.
En héxadécimal, c'est équivalent au caractère 0C.
En binaire, c'est équivalent à 1100.
Pour info, tous les caractères UTF-8 sont trouvables ici.
PB68
Dernière modification par PB68 (Le 01/05/2007, à 12:03)
Si ça t'aide, ça me fait plaisir
Hors ligne
#7 Le 01/05/2007, à 12:03
- nico_h
Re : [résolu] Convertir plusieurs fichiers TXT en un seul fichier PDF
J'ai une idée "bricolage" pour le saut de page, mais il faudra que tu puisses écrire un petit script comportant une boucle for tournant sur les fichiers *.txt du répertoire. Dans la boucle, tu mets juste deux trucs : 1°) echo fichier_numéro_i.txt >> fichier_final et 2°) tu rajoutes un "code" (par exemple [saut de page]) avec un truc du genre echo "[saut de page]" >> fichier_final de façon que ce code apparaisse entre le contenu de deux fichiers successifs.
Ensuite, dans OpenOffice.org, tu fais une macro où tu définis la seule action de remplacer la chaîne "[saut de page]" par un vrai saut de page. Et t'auras plus qu'à répéter ta macro pour introduire tous les sauts de page aux bons endroits, automatiquement.
C'est un peu de la bricole, mais bon...
Pour ce qui est de la syntaxe des scripts, je ne m'en souviens plus très bien mais tu pourras trouver facilement des infos là-dessus sur le net, ce n'est pas très très dur.
EDIT : une réponse (meilleure) de PB68 s'est glissée le temps que je rédige celle-ci
Dernière modification par nico_h (Le 01/05/2007, à 12:07)
Config. actuelle : linux mint 22.04 | FreeBSD 12
Des exercices d'entraînement en maths : http://mr.hainaux.net/
Hors ligne
#8 Le 01/05/2007, à 13:43
- greguti
Re : [résolu] Convertir plusieurs fichiers TXT en un seul fichier PDF
hello les gars, merci pour vos conseils, j'ai l'impression que je me rapproche de la solution grâce à vous,
en revanche, je ne sais pas du tout ce qu'est un "form feed" et je ne suis pas un as de l'édition de scripts. J'ai déjà retouché des scripts sous Linux, mais essentiellement pour commenter des lignes ou modifier des textes à afficher, je n'ai pas de réelle connaissance du language à utiliser ni de la logique sous-jaçente.
En plus, il y a incompatibilité d'humeur entre ZIM, qui a généré mes fichiers TXT, et HTMLDOC, qui serait sinon l'outil idéal pour ma manip. ZIM produit des fichiers en UTF-8, que HTMLDOC ne connaît pas. J'ai bien essayé de convertir tous les fichiers TXT en iso avec la commande suivante (installer le paquet recode au préalable) :
recode UTF-8..ISO-8859-1 *.txt
Mais à ce moment-là, c'est ZIM qui n'arrive plus à ouvrir les fichiers. Argh !
Avec la commande cat, je peux obtenir un gros fichier TXT, mais effectivement pas de saut de page. C'est pas grave, sauter 3 ou 4 lignes entre chaque texte me suffirait, mais après avoir lu le man de la commande cat, je ne suis pas persuadé qu'on puisse passer "sauter 3 lignes entre chaque fichier" en paramètre de la commande. Mais je me trompe peut-être (j'espère en tout cas !).
@+
Greg
Ubuntu 9.04 Jaunty Jackalope sur Asus F8va (ATI Radeon HD 3650)
Petit à petit linux change la vie.
Le petit blog d'un linuxien heureux
Hors ligne
#9 Le 01/05/2007, à 13:57
- Djainette
Re : [résolu] Convertir plusieurs fichiers TXT en un seul fichier PDF
Sinon, une autre piste :
faire un fichier .ps avec a2ps de tes fichier txt, puis convertir le tout en pdf par ps2pdf
Par contre c'est avec a2ps que tu vas t'amuser pour faire une commande au poil.
Freakazoid.
Madcollector : base de données collaborative sur les comics pour geeks.
Hors ligne
#10 Le 01/05/2007, à 13:58
- PB68
Re : [résolu] Convertir plusieurs fichiers TXT en un seul fichier PDF
en revanche, je ne sais pas du tout ce qu'est un "form feed"
C'est un saut de page.
PB68
Si ça t'aide, ça me fait plaisir
Hors ligne
#11 Le 01/05/2007, à 14:57
- nico_h
Re : [résolu] Convertir plusieurs fichiers TXT en un seul fichier PDF
voilà le script :
#!/bin/bash
for fichier in *.txt
do
cat $fichier >> resultat.txt
echo >> resultat.txt
echo >> resultat.txt
echo >> resultat.txt
echo >> resultat.txt
done
alors bon c'est primaire, tu mets autant de ligne echo >> resultat.txt que tu veux de lignes de séparation entre tes fichiers. le fichier produit s'appelle resultat.txt
d'ailleurs ça renvoie une erreur si un fichier resultat.txt est déjà présent dans le répertoire au moment où tu lances le script. corriger ce bug est facile, il suffit de remplacer resultat.txt par un nom qui ne finit pas par .txt tout bêtement
pour l'utiliser : tu copies colles dans un fichier tout bête, qui s'appelle par exemple txtfiles
tu lui donnes le droit d'exécution
chmod 777 txtfiles
(c'est bourrin mais bon)
et en ligne de commande, dans le répertoire où se trouve txtfiles et les fichiers txt à rassembler tu tapes ./txtfiles
et voilà
source de retrouvaille de mémoire : http://www.c-sait.net/cours/scripts.php
Dernière modification par nico_h (Le 01/05/2007, à 15:01)
Config. actuelle : linux mint 22.04 | FreeBSD 12
Des exercices d'entraînement en maths : http://mr.hainaux.net/
Hors ligne
#12 Le 01/05/2007, à 16:42
- greguti
Re : [résolu] Convertir plusieurs fichiers TXT en un seul fichier PDF
Yes ! Merci Nico_h, c'est bon désormais ! Grâce à ce script je peux maintenant obtenir un unique fichier txt, et ensuite je n'ai qu'à le copier/coller dans OpenOffice pour générer un PDF à partir de là.
Pour info, j'ai sauvegardé le script sous le nom txt2one, mis les droits d'exécution, et puis j'en ai fait une copie dans /usr/bin :
sudo cp txt2one /usr/bin
Ainsi je peux appeler la commande txt2one depuis n'importe où. C'est superbe, merci !
Bien sûr, la solution utilisant HTMLDOC aurait été intéressante elle aussi (le logiciel générant automatiquement un sommaire à partir des noms des fichiers, le pdf final faisait plus pro), mais bon, j'ai déjà ce que je veux !
Vive la communauté du libre :-)
@+
Greg
Ubuntu 9.04 Jaunty Jackalope sur Asus F8va (ATI Radeon HD 3650)
Petit à petit linux change la vie.
Le petit blog d'un linuxien heureux
Hors ligne
#13 Le 01/05/2007, à 17:01
- PB68
Re : [résolu] Convertir plusieurs fichiers TXT en un seul fichier PDF
La prochaine fois, il faudra que je pense à réactualiser ma page plus souvent car tu as déjà résolu ton problème mais je transmets tout de même ce à quoi j'ai abouti.
J'ai le cerveau qui a bien chauffé mais j'ai progressé. Voici déjà mon script :
#!/bin/bash
for fichier in *.txt
do
cat $fichier >> resultat.txt
echo ""|tr -c a-z '\014' >> resultat.txt
done
Ce script ajoute, après chaque insertion de fichier txt, un saut de page (form feed). Il doit certainement y avoir plus efficace car je me retrouve avec une page blanche à la fin, il suffit donc de l'éditer et supprimer le dernier saut de page.
Ton souhait final étant d'avoir un fichier PDF, ouvre le fichier obtenu avec OpenOffice et fais l'export en PDF.
PB68
Dernière modification par PB68 (Le 06/05/2007, à 12:52)
Si ça t'aide, ça me fait plaisir
Hors ligne