FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Gestion d'un système client-serveur.
Opérations sur des fichiers PDF Emptypar Pedro Aujourd'hui à 15:51

» PANORAMIC V 1
Opérations sur des fichiers PDF Emptypar papydall Aujourd'hui à 15:49

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Opérations sur des fichiers PDF Emptypar Froggy One Aujourd'hui à 11:16

» @Jack
Opérations sur des fichiers PDF Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
Opérations sur des fichiers PDF Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
Opérations sur des fichiers PDF Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Opérations sur des fichiers PDF Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Opérations sur des fichiers PDF Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Opérations sur des fichiers PDF Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Opérations sur des fichiers PDF Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
Opérations sur des fichiers PDF Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Opérations sur des fichiers PDF Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Opérations sur des fichiers PDF Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
Opérations sur des fichiers PDF Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Opérations sur des fichiers PDF Emptypar leclode Mer 17 Avr 2024 - 11:07

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le deal à ne pas rater :
Jeux, jouets et Lego : le deuxième à -50% (large sélection)
Voir le deal

 

 Opérations sur des fichiers PDF

Aller en bas 
3 participants
AuteurMessage
JL35




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

Opérations sur des fichiers PDF Empty
MessageSujet: Opérations sur des fichiers PDF   Opérations sur des fichiers PDF EmptyJeu 24 Juil 2014 - 18: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):
Opérations sur des fichiers PDF Xpdf10
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 - 22:09, édité 1 fois
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Opérations sur des fichiers PDF Empty
MessageSujet: Re: Opérations sur des fichiers PDF   Opérations sur des fichiers PDF EmptyVen 25 Juil 2014 - 10:36

Merci JL35, toujours utile d'avoir ça sur la main Wink
Revenir en haut Aller en bas
JL35




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

Opérations sur des fichiers PDF Empty
MessageSujet: Re: Opérations sur des fichiers PDF   Opérations sur des fichiers PDF EmptyVen 25 Juil 2014 - 10:42

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




Nombre de messages : 8610
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Opérations sur des fichiers PDF Empty
MessageSujet: re   Opérations sur des fichiers PDF EmptyVen 25 Juil 2014 - 12:51

Ca c' est une bonne idée !

Bravo JL35 !
Revenir en haut Aller en bas
Contenu sponsorisé





Opérations sur des fichiers PDF Empty
MessageSujet: Re: Opérations sur des fichiers PDF   Opérations sur des fichiers PDF Empty

Revenir en haut Aller en bas
 
Opérations sur des fichiers PDF
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Transitivité des opérations
» Opérations de repérage sur un SYNEDIT
» Erreur dans la priorité des opérations
» Bug avec la priorité des opérations arithmétiques ?
» Encore un mystère, mais avec les opérations

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: