FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Texte en gif animé
par JL35 Hier à 18:49

» BasicEditor
par Yannick Mer 20 Sep 2017 - 17:17

» Simuler l’appui d'une touche ou combinaison de touches.
par pascal10000 Lun 18 Sep 2017 - 19:30

» Utilisation de HVIEWER pour afficher des images
par papydall Lun 18 Sep 2017 - 17:43

» Panoramic et les gifs animés.
par papydall Lun 18 Sep 2017 - 16:32

» recover source
par pascal10000 Dim 17 Sep 2017 - 14:21

» Recent dans vos menu
par Jean Claude Sam 16 Sep 2017 - 11:41

» Comment centrer un texte 3D.
par pascal10000 Ven 15 Sep 2017 - 20:20

» Carte interface 16 entrées et 16 sorties
par Jicehel Ven 15 Sep 2017 - 16:30

» Version instantanée V 0.9.28i9 possédant l'objet SYNEDIT
par pascal10000 Ven 15 Sep 2017 - 16:20

» Compilateur FBPano
par jean_debord Ven 15 Sep 2017 - 9:59

» 1 (en analyse): 3D_TARGET_IS ne fonctionne pas sur 3D_TEXT
par Jack Jeu 14 Sep 2017 - 19:52

» Problème avec la 3D.
par Jack Jeu 14 Sep 2017 - 18:06

» Test de la 3D.
par mindstorm Mer 13 Sep 2017 - 19:45

» Logiciel de soutien scolaire en langues.
par Pedro Alvarez Mar 12 Sep 2017 - 21:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Septembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier

Partagez | 
 

 Opérations sur des fichiers PDF

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
JL35



Nombre de messages : 5947
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Opérations sur des fichiers PDF   Jeu 24 Juil 2014 - 19:56

J'ouvre un sujet à part pour ne pas polluer celui de ygeronimi sur l'OCR, mais ce XPDF est vraiment un ensemble d'utilitaires PDF très simple à utiliser et très performant.
C'est gratuit, sans installation, on peut le mettre où on veut (c'est portable). Et on n'essaye pas de vous fourguer discrètement  un moteur de recherche bidon, rien, tout est clair.
Et surtout, pour nous, les modules se lancent en ligne de commande, sans interface graphique, donc facilement depuis un programme Panoramic.
http://www.foolabs.com/xpdf/download.html , prendre la version xpdfbin-win-3.04.zip

Après dézippage on se retrouve avec un répertoire de modules et un répertoire de docs correspondantes, une par module, plus quelques bricoles inutiles, perso j'ai tout mis ensemble (modules et docs) dans un répertoire dédié.

Les modules:
- pdfbklt       fabrication d'un livret à partir du pdf (celui-ci non compris dans la livraison)
- pdfdetach  extraction des fichiers inclus dans le pdf
- pdffonts     liste des fontes utilisées
- pdfimages  extraction des images incluses
- pdfinfo       infos diverses sur le pdf
- pdftohtml   conversion pdf html
- pdftopng    conversion pdf en images .png (une image par page)
- pdftoppm    conversion pdf en fichiers ppm (un par page)
- pdftops      conversion pdf en fichier postscript
- pdftotext    conversion pdf en texte pur

J'ai fait un petit programme qui donne la liste des modules, pour chacun on peut afficher la doc correspondante (il y a d'assez nombreux paramètres, souvent semblables d'un module à l'autre), et le lancer en donnant les options éventuelles, le chemin du pdf et celui du résultat, qui peut être un fichier, un répertoire, ou un affichage.
Je les ai tous essayés sans options, ça marche très bien, c'est rapide. Avec les options on doit peaufiner le résultat, mais je n'ai pas (encore ?) eu le courage de m'y plonger.

Je vous livre le programme, un peu simpliste mais ça marche (comme d'habitude les chemins de fichier en tête sont à changer éventuellement, il y en a deux):
Code:

' Utilitaires de traitement PDF (XPDF)
' - pdfbklt    fabrication d'un livret à partir du pdf
' - pdfdetach  extraction des fichiers inclus dans le pdf
' - pdffonts  liste des fontes utilisées
' - pdfimages  extraction des images incluses
' - pdfinfo    infos diverses sur le pdf
' - pdftohtml  conversion pdf html
' - pdftopng  conversion pdf en images .png (une image par page)
' - pdftoppm  conversion pdf en fichiers ppm (un par page)
' - pdftops    conversion pdf en fichier postscript
' - pdftotext  conversion pdf en texte pur
LABEL Doc, Test, Chf, Vpdf, Exec, Vres
DIM rp$, f$, fr$, ftm$, p$, i%, l%, a$, b$, arg$, li%, tl%, wl%, resrep$, sf$

rp$ = "C:\OUTILS\PDF\XPDF": ' Chemin des modules de XPDF
ftm$ = "C:\TEMP\Result.txt"

BORDER_SMALL 0: COLOR 0,180,255,255: FONT_BOLD 0
WIDTH 0,180: HEIGHT 0,290
CAPTION 0, " -  UTILITAIRES  PDF  -"
MEMO 1: WIDTH 1,600: HIDE 1

Dirf(rp$,"exe")
ITEM_ADD 1, CLIPBOARD_STRING_PASTE$
li% = 10: tl% = 0: wl% = 90
FOR i% = 1 TO COUNT(1)
    a$ = ITEM_READ$(1,i%)
    EDIT li%: TOP li%,tl%: WIDTH li%, wl%: TEXT li%,a$
    BUTTON li%+1: TOP li%+1,tl%: LEFT li%+1,LEFT(li%)+WIDTH(li%): WIDTH li%+1,35
    CAPTION li%+1,"Doc": ON_CLICK li%+1, Doc
    BUTTON li%+2: TOP li%+2,TOP(li%+1): LEFT li%+2,LEFT(li%+1)+35: WIDTH li%+2,35
    CAPTION li%+2,"Test": ON_CLICK li%+2,Test
    li% = li%+3: tl% = tl%+25
NEXT i%

OPEN_DIALOG 90

FORM 100: TOP 100,0: LEFT 100,WIDTH(0): HEIGHT 100,900: WIDTH 100,600
BORDER_SMALL 100: HIDE 100
LIST 101: PARENT 101,100: FULL_SPACE 101: COLOR 101,255,255,210
FONT_NAME 101,"Lucida Console"

FORM 200: TOP 200,30: LEFT 200,10: WIDTH 200,400: HEIGHT 200,240
BORDER_SMALL 200: HIDE 200: COLOR 200,255,200,200: font_bold 200
ALPHA 201: PARENT 201,200: TOP 201,3: LEFT 201,5: CAPTION 201,"Fichier PDF :"
EDIT 202: PARENT 202,200: TOP 202,20: LEFT 202,0: WIDTH 202,WIDTH(200)-67
TEXT 202," (clic)": ON_CLICK 202,Chf
BUTTON 203: PARENT 203,200: LEFT 203,LEFT(202)+WIDTH(202): TOP 203,TOP(202)
WIDTH 203,50: CAPTION 203,"Voir": ON_CLICK 203,Vpdf
ALPHA 211: PARENT 211,200: TOP 211,TOP(203)+25: LEFT 211,5
CAPTION 211,"Options (éventuel) :"
EDIT 212:PARENT 212,200: TOP 212,TOP(211)+17: LEFT 212,0: WIDTH 212,WIDTH(202)
BUTTON 213: PARENT 213,200: LEFT 213,LEFT(212)+WIDTH(212): TOP 213,TOP(212)
WIDTH 213,50: CAPTION 213,"Doc": ON_CLICK 213,Doc
ALPHA 221: PARENT 221,200: TOP 221,TOP(212)+25: LEFT 221,5: CAPTION 221,"Fichier résultat :"
EDIT 222: PARENT 222,200: TOP 222,TOP(221)+17: LEFT 222,0: WIDTH 222,WIDTH(212)
BUTTON 231: PARENT 231,200: TOP 231,TOP(222)+25: LEFT 231,120: CAPTION 231,"Exécuter"
ON_CLICK 231,Exec
BUTTON 232: PARENT 232,200: TOP 232,TOP(231)+25: LEFT 232,LEFT(231)-20: WIDTH 232,WIDTH(231)+40
CAPTION 232,"Voir le résultat": ON_CLICK 232,Vres: HIDE 232
end
' ==============================================================================
Doc:
IF NUMBER_CLICK = 213
    a$ = LEFT$(p$,LEN(p$)-3)
    TOP 100,TOP(200)+150: LEFT 100,0
ELSE
    i% = NUMBER_CLICK-1: a$ = TEXT$(i%): a$ = LEFT$(a$,LEN(a$)-3)
    CAPTION 100, STRING$(80," ")+UPPER$(TEXT$(i%))
    TOP 100,TOP(0): LEFT 100,WIDTH(0)
END_IF
a$ = rp$ + "\" + a$ + "txt"
FILE_LOAD 1,a$: CLEAR 101
FOR i% = 1 TO COUNT(1)
    a$ = RTRIM$(ITEM_READ$(1,i%))
    IF a$<>"" THEN ITEM_ADD 101,a$
NEXT i%
SHOW 100
RETURN
' ==============================================================================
Test:
i% = NUMBER_CLICK-2: p$ = TEXT$(i%)
CAPTION 200, STRING$(40," ")+"TEST  DE  "+UPPER$(p$)
resrep$ = ""
CAPTION 221,"Fichier résultat :"
TEXT 212,"": TEXT 222,""
a$ = LEFT$(p$,LEN(p$)-4)
IF a$="pdfdetach" OR a$="pdfimages" OR a$="pdftohtml" OR a$="pdftopng" OR a$="pdftoppm"
    CAPTION 221,"Répertoire résultat :": resrep$ = "1"
    IF a$ = "pdfimages" THEN sf$ = "ppm"
    IF a$ = "pdftopng" THEN sf$ = "png"
    IF a$ = "pdftoppm" THEN sf$ = "ppm"
    IF a$ = "pdfdetach" THEN sf$ = "*"
    IF a$="pdftohtml"
        CAPTION 221,"Répertoire résultat (ne doit pas exister) :"
        sf$ = "*": ' fichiers produits: .htm et .png
    END_IF
END_IF
IF a$="pdfbklt" OR a$="pdffonts" OR a$="pdfinfo"
    TEXT 222,ftm$
END_IF
HIDE 232: SHOW 200
RETURN
' ==============================================================================
Chf:
FILTER 90,"Fichiers PDF|*.pdf"
f$ = FILE_NAME$(90): IF LEN(f$)<4 THEN RETURN
TEXT 202,f$
RETURN
' ==============================================================================
Vpdf:
IF TEXT$(202) = "" THEN RETURN
f$ = TEXT$(202)
EXECUTE_WAIT f$: ' voir le pdf sous Acrobat
RETURN
' ==============================================================================
Exec:
IF TEXT$(202) = "" OR TEXT$(202) = " (clic)"
    MESSAGE "Pas de fichier PDF !": RETURN
END_IF
IF TEXT$(222) = "" THEN MESSAGE "Pas de fichier résultat !": RETURN
fr$ = TEXT$(222)
IF resrep$ = "1" THEN resrep$ = fr$
b$ = LEFT$(p$,LEN(p$)-4)
IF b$="pdfbklt" OR b$="pdffonts" OR b$="pdfinfo"
    fr$ = ">"+fr$: ' sortie sur stdout -> fichier
END_IF
a$ = TRIM$(TEXT$(212)): ' paramètres (options) éventuels
IF b$ = "pdfdetach"
    EXECUTE_WAIT "Cmd.exe /c "+rp$+"\"+p$+" -list "+f$+" >"+ftm$
    FILE_OPEN_READ 1,ftm$: FILE_READLN 1,b$: FILE_CLOSE 1: FILE_DELETE ftm$
    IF TRIM$(b$)="0 embedded files"
        MESSAGE "Aucun fichier inclus dans "+f$: RETURN
    END_IF
    arg$ =  "-saveall " + f$ + " -o "+resrep$
ELSE
    arg$ = a$ + " " + f$ + " " + fr$
END_IF
EXECUTE_WAIT "Cmd.exe /C "+rp$+"\"+p$ + " " + arg$
SHOW 232
RETURN
' ==============================================================================
Vres:
IF resrep$ <> ""
    IF DIR_EXISTS(resrep$) = 0 THEN RETURN: ' répertoire non créé
    Dirf(resrep$,sf$)
    FILE_OPEN_WRITE 9, ftm$
        FILE_WRITELN 9,"Répertoire de " + resrep$
        FILE_WRITELN 9,""
        FILE_WRITELN 9,CLIPBOARD_STRING_PASTE$
    FILE_CLOSE 9
    a$ = ftm$
ELSE
    a$ = TEXT$(222)
    IF FILE_EXISTS(a$) = 0 THEN RETURN
end_if
EXECUTE_WAIT "Notepad.exe " + a$
RETURN
' ==============================================================================
SUB Dirf(rep$,ext$)
' Liste des fichiers de rep$, d'extension ext$ (si ext$= "*", tous les fichiers)
' Résultat: chaîne dans le clipboard, fichiers triés, sous-répertoires en tête
' (NB: rep$ accepte les noms de répertoires contenant des espaces).
DIM_LOCAL svr$, a$, f$, ndl%, i%, nt%
ndl% = 5000: WHILE OBJECT_EXISTS(ndl%)=1: ndl%=ndl%+1000: END_WHILE
DLIST ndl%
svr$ = DIR_CURRENT$: DIR_CHANGE rep$
IF ext$<>"*" AND LEFT$(ext$,1)<>"." THEN ext$="."+ext$
ext$ = UPPER$(ext$)
nt% = 0
f$=FILE_FIND_FIRST$: WHILE f$="." OR f$="..": f$=FILE_FIND_NEXT$: END_WHILE
IF f$ = "_" THEN nt% = 1: ' répertoire vide
WHILE f$ <> "_"
    IF ext$ = "*" OR UPPER$(FILE_EXTRACT_EXTENSION$(f$)) = ext$
        IF FILE_EXISTS(f$) = 0 THEN f$ = " "+f$
        ITEM_ADD ndl%,f$
    END_IF
    f$ = FILE_FIND_NEXT$
END_WHILE
FILE_FIND_CLOSE
DIR_CHANGE svr$: ' restore le répertoire d'origine
IF nt% = 1
    ' répertoire vide
    a$ = ""
ELSE
    SORT ndl%: a$ = ""
    FOR i% = 1 TO COUNT(ndl%)
        f$ = ITEM_READ$(ndl%,i%): IF LEFT$(f$,1)=" " THEN f$="[D]"+MID$(f$,2,100)
        a$=a$+f$+CHR$(13)+CHR$(10)
    NEXT i%
    a$ = LEFT$(a$,LEN(a$)-2)
END_IF
DELETE ndl%
CLIPBOARD_STRING_COPY a$
END_SUB
' ==============================================================================

Le pdfbklt.exe : fabrication d'un livret (booklet, rien à voir avec bouclette) à partir d'un pdf, fait partie de la série mais n'est pas dans la livraison, il doit être facile à trouver (là par exemple: http://www.sil.org/~hosken/Utils/pdfbklt.zip ), mais je ne l'ai pas testé... à première vue ça n'a pas l'air simple à manipuler, et attention, il modifie le pdf source, faire une copie avant.
J'ai un petit programme panoramic qui fait ça très bien (avec Nconvert).

ed. 26/7 little bug


Dernière édition par JL35 le Sam 26 Juil 2014 - 23:09, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5854
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Opérations sur des fichiers PDF   Ven 25 Juil 2014 - 11:36

Merci JL35, toujours utile d'avoir ça sur la main Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5947
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Opérations sur des fichiers PDF   Ven 25 Juil 2014 - 11:42

Sûr, c'est pratique d'avoir tout regroupé. Léger, facile à utiliser.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7991
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 25 Juil 2014 - 13:51

Ca c' est une bonne idée !

Bravo JL35 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Opérations sur des fichiers PDF   

Revenir en haut Aller en bas
 
Opérations sur des fichiers PDF
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Opérations sur des fichiers PDF
» Hébergement gratuit images photos fichiers
» [Résolu] OE6 : restaurer fichiers .dbx supprimés
» [Résolu] classement des fichiers et dossiers
» Mapsource refuse les fichiers GPX nouvellement créés

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Présentation et bavardage-
Sauter vers: