Midilibre.fr
Tous les blogs | Alerter le modérateur| Envoyer à un ami | Créer un Blog

13/10/2009

[PDF] - Imprimer 4 pages identiques dans un PDF

Anonymous_Scissors_2.pngJ'ai sur un portable la LTS 8.04 d'ubuntu, pour diverses raisons je ne souhaite pas le migrer tant que la prochaine LTS ne sera pas sortie. J'utilise donc certaines versions de logiciels qui sont un peu ancienne. Par contre j'ai voulu utiliser ce portable lorsque j'étais en déplacement pour faire PDF avec une mise en page issu de inkscape et ensuite faire un flyer réparti en 4 par page avec ce même PDF. Récit de mon petit parcours.

Tout d'abord j'ai crée mon document sous inkscape, une fois satisfait j'ai voulu imprimer le fichier en PDF avec l'option Fichier -> Imprimer et en utilisant la fonction PDF. Allez savoir pourquoi Inkscape m'a généré deux pages, une avec le document en question et l'autre une vide. J'ai donc sorti mon pdftk (paquet pdftk) :

pdftk source.pdf cat 1 output original.pdf

J'avais donc maintenant mon document avec uniquement la premiére page, restait donc a imprimer cette page en 4 fois sur une même page. Seul soucis c'est qu'il faut un document de 4 pages pour pouvoir remplir la page. J'ai donc encore une fois utilisé pdftk :

pdftk original.pdf original.pdf original.pdf original.pdf  output resultat_avec_4_pages.pdf

On prends 4 fois le fichier d'origine pour crée un document de 4 pages avec 4 fois le même document. Restait donc mettre le tout sur la même page et ce grace à pdfnup (dispnible dans le paquet pdfjam)

pdfnup resultat_avec_4_pages.pdf --nup 2x2 --outfile document_final.pdf

Note : le soucis d'impression de la page blanche a été résolu sur les versions ultérieur de inkscape.

17/09/2009

[terminal] - Ouvrir ses documents dans un terminal

Anonymous_Terminal.pngIl arrive que l'on passe le plus clair de son temps avec un terminal, et que les GUI donnent un goût de trop lourd, trop de temps à se lancer... Parfois également on ouvre un document juste pour y jeter un coup d'oeil, parce que l'on en a oublié le contenu, et dans ces cas là on souhaite aller vite.

Vous connaissez mon goût pour les outils simple et en ligne de commande, voici donc une liste non exhaustive d'outils pour lire une majorité de format :

Les PDF : Ps2ascii, Pdftotext
Les fichiers OpenOffice (texte,classeurs, présentation....) & tout autres fichiers OpenDocument (Koffice, starOffice...) : odt2txt
Les fichiers OpenOffice classeur : voir également SSConverter (script python & pyuno)
Les fichiers html : les navigateurs en ligne de commande (Lynx, w3m...)

Pour les fichiers audio : mplayer

Et puis il arrive que des connaissances continuent à vous envoyer des fichiers avec un format fermé, si vous daignez voir le contenu sans passer par l'ouverture d'openoffice :

Les fichier Word :Antiword
Les fichiers Powerpoint : ppthtml
Les fichiers Excel :xls2txt (non présent dans les dépôts de ma distribution, mais se compile trés facilement/simplement avec juste un make)

Et je vous rappel également que grâce à Edouard on peut même voir ses images dans un terminal : http://www.inouire.net/image-couleur.html

La majorité de ces outils suivent la philosophie Unix, ils ne font qu'une chose mais le font bien.
Avec ces outils plus d'excuses pour lancer des GUI à tout va.

08/03/2009

[pdf] - Convertir en masse des fichiers WORD en PDF

374385.jpgJ'ai eu cette semaine à faire face à un cas bien particulier, un client m'a fait parvenir une centaine de fichier word (au format Word), ces documents devaient être placé sur son site web... Farouche opposant à ce format de fichier, j'ai donc informé le client, sur les risques qu'engendrait l'utilisation de ce format sur un site web : impossibilité de lire ces fichiers pour ceux qui ne possèdent pas le pack office, problème de compatibilité entre les versions... bref, j'ai convaincu  mon client de faire des liens vers des PDF. Seulement voila convertir cette masse de fichiers en PDF ne s'annoncait pas comme une mince affaire. J'ai donc dégainé ma trousse à outils GNU/Linux, et en moins de 10 minutes j'ai pu avoir tout mes fichiers au bon format. Merci bash et les macros d'openoffice. voici comment procéder :

Ouvrez OOwriter (Traitement de texte openoffice) puis cliquez sur le menu Outils -> Macros -> Gérer les macros -> OpenOffice.org BASIC.

Sélectionnez Mes Macros -> Standard -> Module1 et cliquez sur Editer. Effacer les trois lignes présentes dans l'éditeur, et coller le code ci dessous :

        REM  *****  BASIC  *****

Sub ConvertWordToPDF(cFile)
cURL = ConvertToURL(cFile)
oDoc = StarDesktop.loadComponentFromURL(cURL, "_blank", 0,
Array(MakePropertyValue("Hidden", True), ))

cFile = Left(cFile, Len(cFile) - 4) + ".pdf"
cURL = ConvertToURL(cFile)

oDoc.storeToURL(cURL, Array(MakePropertyValue("FilterName",
"writer_pdf_Export"), ))

oDoc.close(True)

End Sub

Function MakePropertyValue( Optional cName As String, Optional uValue )
As com.sun.star.beans.PropertyValue
Dim oPropertyValue As New com.sun.star.beans.PropertyValue
If Not IsMissing( cName ) Then
oPropertyValue.Name = cName
EndIf
If Not IsMissing( uValue ) Then
oPropertyValue.Value = uValue
EndIf
MakePropertyValue() = oPropertyValue
End Function

Enregistrez et quitter OpenOffice, il nous reste à créer un fichier qui s'appelare doc2pdf, de le rendre exécutable (avec chmod +x doc2pdf) et d'y coller le code suivant :

  #!/bin/sh  DIR=$(pwd) DOC=$DIR/$1                                                                                
/usr/bin/oowriter -invisible
"macro:///Standard.Module1.ConvertWordToPDF($DOC)"

Voila, il ne reste plus qu'a taper : doc2pdf mon_fichier.doc et vous aurez un joli mon_fichier.pdf. Mais vous allez me dire, comment as-tu fait pour la centaine de fichier ? Et bien un simple :
for i in *.doc; do echo $i; doc2pdf "$i"; sleep 5; done

Rendons à césar ce qui est à césar, cette astuce à été trouvé ici

19/11/2008

[PDF] - extraire les images d'un PDF et diverses bricoles...

pdf_icon_large.jpgPrenons un PDF au hasard  avec des images dedans si possible. Parfois on souhaite récupérer les images qui se trouve dedans, avec leur résolution native, la solution "sous le coude" est l'utilisation d'impr écran. Mais lorsque vous avez plusieurs centaines d'images a récupérer la manipulation peut vite devenir douloureuse (et longue...). Heureusement notre pingouin, ami des solutions rapide et propre, nous propose une solution on ne peut plus simple : pdfimages.

Que nous dit le manpage : pdfimages [options] PDF-file image-root

Le format d'extraction sera donc : pdfimages les_options le_fichier le_nom_racine_de_l_image

ainsi si vous avez un pdf qui s'appelle toto.pdf et que vous voulez extraire toutes les images sous le nom 'images' il vous suffira de taper :

pdfimages -j toto.pdf images

le -j permet si le pdf contient des images au format jpg de conserver ce format.


Et puis comme je suis un peu curieux, j'ai regarder le manpage, qui en fin de page mentionne les programmes liés, il mentionne pdffonts qui permet de lister les polices utiliser dans un pdf.

Mieux pdftotext, permet d'extraire le texte brut (ou de générer un pseudo html, imbriqué dans un PRE)

Décidement, notre os regorge de bien des outils qui facilite bien des choses (sous ma debian lenny tout était installé par défaut je n'ai pas été obligé de rajouté des paquets, sinon l'ensemble se trouve dans xpdf-utils)

29/10/2008

[linux] - Extraire une police d'écriture d'un pdf

capture-0.pngCe matin j'ai recu, des documents en PDF, il fallait que je reprenne la police utilisée sur le document, malheureusement personne ne connaissait le nom de cette police, j'avais donc deux choix : refaire le logo en vectoriel, ou utiliser finnement mon Linux pour récupérer la police du document.

En moins de 5 minutes l'affaire était réglée.

j'ai tout d'abord converti mon document en postscript:

pdftops document.ps

je l'ai ouvert dans gedit et j'ai cherché la ligne qui commençait par %%BeginResource: font suivi du nom de la police, j'ai copié la portion jusqu'au %%EndResource et j'ai enregistré le tout dans un fichier texte avec l'extension .pfa.

J'ai ensuite installé FontForge : apt-get install fontforge

et j'ai ouvert mon fichier .pfa avec. Puis j'ai réencodé la police dans le menu Codage -> Ré-encode -> ISO-8859-1 (latin1) et l'ai compacté avec Codage -> Compacté
On peut modifier son nom avec Elément -> Infos fonte (Nom de la fonte)
Restait à l'enregistrer Fichier -> Générer Fonte(s) (à ce moment on peut déterminer le format d'enregistrement (ttf,...))

A NOTER : depuis 2001 les pdf n'embarquent que les caractères utilisées dans le pdf ainsi si dans le pdf il n'y a pas de Z vous n'aurez pas le Z dans votre font. Dans mon cas ce n'était pas génant puisque je souhaitais reproduire un logo et donc utiliser les mêmes lettres.

27/10/2008

[pdf] - Fusionner plusieurs PDF

pdf_icon.jpgJe viens de rencontrer un problème et la solution a été tellement simple que je n'ai pu m'empêcher de vous la faire partager :

J'avais 4 PDF de 20Mo chacun (trés lourd donc, les gens sont fou de faire des fichier aussi lourds) et je devais les fusionner pour n'en faire qu'un. Ghostscript a été bien utile, et il a été bien au delà de mes espérances car le fichier total des 4 pdf a été de 5Mo (alors que j'attendais un fichier d'environ 80 Mo), il y a eu une compression mais je n'ai pas noté de perte de qualité.

ghostscript -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sPAPERSIZE=a4 -sOutputFile=resultat.pdf fichier1.pdf fichier2.pdf fichier3.pdf fichier4.pdf

On peut difficilement faire plus simple. C'est tellement bluffant, que du coup c'est ma note la plus courte que j'ai jamais écris.

(Merci à Pikachu_2014 pour cette astuce)