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 01/05/2007, à 10: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, à 17: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, à 10: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, à 10: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, à 11: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, à 12: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, à 12: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 smile

Dernière modification par PB68 (Le 01/05/2007, à 13:03)


Si ça t'aide, ça me fait plaisir

Hors ligne

#7 Le 01/05/2007, à 13: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 smile

Dernière modification par nico_h (Le 01/05/2007, à 13: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, à 14: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, à 14: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, à 14:58

PB68

Re : [résolu] Convertir plusieurs fichiers TXT en un seul fichier PDF

Dans son message #8, greguti a écrit :

en revanche, je ne sais pas du tout ce qu'est un "form feed"

C'est un saut de page.

PB68 smile


Si ça t'aide, ça me fait plaisir

Hors ligne

#11 Le 01/05/2007, à 15: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, à 16: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, à 17: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, à 18: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 smile

Dernière modification par PB68 (Le 06/05/2007, à 13:52)


Si ça t'aide, ça me fait plaisir

Hors ligne