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
» Logiciel de soutien scolaire en langues.
par Pedro Alvarez Aujourd'hui à 16:52

» KGF_dll - nouvelles versions
par Klaus Aujourd'hui à 14:16

» Compilateur FBPano
par Ouf_ca_passe Aujourd'hui à 12:25

» mise a jour calculatrice
par papydall Aujourd'hui à 2:01

» double guillemets "" dans un EDIT
par Marc Hier à 23:43

» Documentation de KGF
par Klaus Lun 20 Nov 2017 - 22:52

» Zoom sur une portion d'écran
par JL35 Lun 20 Nov 2017 - 21:51

» Recherche d'une expression dans un source
par Marc Lun 20 Nov 2017 - 13:08

» Tracer une grille n'importe où sur l'écran
par JL35 Dim 19 Nov 2017 - 22:14

» TourD Version 2
par Klaus Sam 18 Nov 2017 - 23:58

» La métamatière et le peuple
par JL35 Ven 17 Nov 2017 - 21:18

» Capture d'une zone de l'écran total
par JL35 Ven 17 Nov 2017 - 18:41

» qui peut résoudre mon prb
par pascal10000 Jeu 16 Nov 2017 - 17:30

» évènements et objets système : listage automatique
par Jean Claude Jeu 16 Nov 2017 - 11:15

» Panoramic et la reconnaissance vocale.
par papydall Jeu 16 Nov 2017 - 3:45

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2017
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
27282930   
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 : 5992
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 : 5860
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 : 5992
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 : 7997
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: