Programmetto per comprimere i PDF - Alternativa: chi si intende di Clipper o Basic?

Pagina 1 di 2 1 2 ultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    tebibyte L'avatar di Gig
    Registrato
    Jan 2001
    Località
    Firenze
    Età
    44
    Messaggi
    2,338

    Predefinito Programmetto per comprimere i PDF - Alternativa: chi si intende di Clipper o Basic?

    Immagino che leggendo il titolo del thread avrete pensato: "Ma questo che cosa ha fumato?"
    Niente, niente, ora vi spiego:

    Problema: compattare (ottimizzandoli) una gran quantità di pdf (generati da un sistema automatico che crea file più grandi del necessario) in modo da risparmiare spazio su disco. Ho trovato un paio di programmetti free che lo fanno (ti creano un file di dimensioni inferiori, sempre pdf e praticamente della stessa qualità; a seconda di quale programma aveva creato il pdf di partenza ed altri fattori, possono compattarlo dell'1% o del 90%), ma l'interfaccia GUI permette solo di specificarne uno alla volta, per farne qualche migliaio non è molto pratico. Ne conoscete qualcuno che permette l'ottimizzazione di massa/batch? Mi risolvereste un mucchio di problemi.

    Ho trovato che il pdfcompress del pdf995 è un programmetto a riga di comando, e quindi se riuscissi a fare un qualche programmetto in grado di farglielo eseguire in batch per tutti i file *.pdf esistenti in una cartella, sarei a posto. Certamente, finché ho la versione gratuita ad ogni elaborazione mi apre la finestra della pubblicità, ma se riesco a farlo fuzionare, poi posso anche acquistare la versione completa...

    Ad ogni modo, la teoria sarebbe fare un programmino che si crea un elenco di tutti i file *.pdf in una sottocartella "A"
    pensavo facendogli eseguire il comando dos
    dir /b A\*.pdf >elenco.txt (e fin qui nessun problema)
    e poi di fargli rileggere questo file un rigo alla volta, ed utilizzare il testo (nomedelfilepdf) per passarlo come file di input e di output (in una cartella B) al pdfcompress, che lo vuole nel formato
    pdfcompress.exe "A\nomedelfilepdf.pdf" "B\nomedelfilepdf.pdf"

    Il fatto è che sia io che un mio collega oramai siamo più sistemisti che programmatori (specialmente io ho abbandonato parecchio) e non abbiamo nemmeno granché di compilatori a disposizione.
    Il mio collega ha provato a farlo in Basic (con un vecchissimo Basic), ma per qualche strano motivo se gli passa il persorso di pdfcompress.exe senza parametri lo lancia (compare la schermata delle istruzioni), mentre se gli aggiunge anche i parametri (e stampando a video la stringa risulta corretta), allora dice che non riesce a trovare il file. Doh!

    Da parte mia, stasera ero curioso e tornato a casa ho ritirato fuori il vecchio Clipper con cui avevo fatto la tesina della maturità una decina di anni fa (e da allora non lo avevo più usato, figuratevi che mi ricordo!), ma sono riuscito a fare ancora meno che il mio collega con il basic: non riesco a trovare il modo giusto per leggere dal file di testo che gli faccio creare (all'epoca avevo lavorato solo coi .dbf), né (se passassi il primo scoglio) so con quale sintassi inserire le variabili all'interno dei comandi DOS. Però almeno il file .txt creato lanciando il comando DOS da Clipper lo fa riempiendolo con i nomi di file lunghi, quello dal Basic invece con i nomi di file brevi (strano, che utilizzerà un "suo" comando DIR invece che quello del S.O.?) ...

    Qualche idea?
    Ultima modifica di Gig : 25-10-2008 a 13:20

  2. #2
    - Sardus inside - L'avatar di parsifal
    Registrato
    Sep 1999
    Età
    58
    Messaggi
    2,899

    Predefinito

    Il consiglio che ti posso dare è di usare AutoIt con la funzione che ha chiamata fileread.
    AutoIt è un sw di programmazione mediante scripting con GUI molto semplice e intuitivo, che a prima vista può sembrare banale ma non ci si immagina quanti programmi, anche complessi, vengono fatti con lui (la maggior parte dei launcher di programmi portables).
    Facci sapere.

    mens sana in corpore sardo - SARDU's developper -

  3. #3
    tebibyte L'avatar di Gig
    Registrato
    Jan 2001
    Località
    Firenze
    Età
    44
    Messaggi
    2,338

    Predefinito

    Proverò a dargli un'occhiata...

    Nel frattempo avevo ritirato fuori i miei vecchi libri di Pascal... ci ho trovato qualcosa per la lettura di file di testo, ma nulla su come eseguire i comandi dos...

  4. #4
    Supervisore Straordinario L'avatar di tHeGoOd
    Registrato
    Sep 2000
    Località
    Cenaia, Toscana, Italy, Italy
    Età
    40
    Messaggi
    1,669

    Predefinito

    Ti ricordo anche che la shell di windows permette di fare script (chiamati appunto batch) per elaborazioni su file di questo tipo.

    A grandi linee, dopo che ti sei creato la lista di file col dir, puoi usare il comando SET per creare una variabile d'ambiente col contenuto del file elenco.txt. Dopodichè usi il comando for per eseguire una o + istruzioni per ogni "elemento" contenuto nel file elenco.txt.
    Ancora meglio, inserisci direttamente nel FOR il risultato del comando dir.

    Così:

    codice:
    FOR /F "usebackq delims=" %%p IN (`dir /b A\*.pdf`) DO CALL :Compress %%p
    GOTO :eof
    
    :Compress
    :: Inserisci il-i comandi da eseguire, considerando che il nome del file corrente sta in "%1"
    GOTO :eof
    Pronto!
    It is common knowledge that old school hackers all have large beards. Alan Cox,RMS and maddog are brilliant examples. The reason for this is that growing a beard is the most interesting use of one's time when the computer is waiting for fsck to finish messing around after a system crash, and on large filesystems, you'll have plenty of time to waste (this might also be why there are so few female hackers; they can't grow beards).

  5. #5
    tebibyte L'avatar di Gig
    Registrato
    Jan 2001
    Località
    Firenze
    Età
    44
    Messaggi
    2,338

    Predefinito

    In passato ho molto apprezzato i file batch, ma che si potesse arrivare a fargli rileggere dei file di testo ed estrarne delle variabili, oppure di buttare direttamente i riultati di un comando dos in delle variabili, non ne avevo proprio idea...

  6. #6
    tebibyte L'avatar di Gig
    Registrato
    Jan 2001
    Località
    Firenze
    Età
    44
    Messaggi
    2,338

    Predefinito

    Ciao thegood, grazie infinite, ma ho un problemino:

    Ho creato il batch così:
    codice:
    FOR /F "usebackq delims=" %%p IN (`dir /b A\*.pdf`) DO CALL :Compress %%p
    GOTO :eof
     
    :Compress
    C:\programmi\PDF995\res\utilities\pdfcompress.exe "C:\Documents and Settings\pippo\Desktop\PDF\A\%1" "C:\Documents and Settings\pippo\Desktop\PDF\B\%1"
     
    GOTO :eof
    Quando la lancio, mi fa (cosa mostra a video):
    FOR /F "usebackq delims=" %p IN (`dir /b A\*.pdf`) DO CALL :Compress %p
    CALL :Compress ABB-Bticino-Gewiss - n.43.pdf
    C:\programmi\PDF995\res\utilities\pdfcompress.exe "C:\Documents and Settings\pippo\Desktop\PDF\A\ABB-Bticino-Gewiss" "C:\Documents and Settings\pippo\Desktop\PDF\B\ABB-Bticino-Gewiss"
    GOTO :eof
    Vedi qual è il problema? Perde la parte di nome file dopo lo spazio (compresa l'estensione)... Qualche idea?

    --------------------
    Update: se hai una soluzione, bene, che sarebbe più semplice... Ma in caso contrario, non stare troppo ad ammattire: il mio collega è riuscito (in un modo più complesso e più difficilmente modificabile) a farlo funzionare con il Basic: un primo file batch che 1) lancia il comando DIR che crea il file di appoggio .txt, 2) poi lancia il programma Basic che legge da quel file .txt e lo utilizza per generare un secondo file batch che contiene i comandi veri e propri (con i nomi di file lunghi) 3) ed infine richiama questo secondo file batch! Macchinoso, ma funziona...
    Ultima modifica di Gig : 27-10-2008 a 12:07

  7. #7
    Supervisore Straordinario L'avatar di tHeGoOd
    Registrato
    Sep 2000
    Località
    Cenaia, Toscana, Italy, Italy
    Età
    40
    Messaggi
    1,669

    Predefinito

    Virgolette,
    prova con

    FOR /F "usebackq delims=" %%p IN (`dir /b A\*.pdf`) DO CALL :Compress "%%p" e guarda cosa invoca.

    N.B. Per testare lo script, puoi modificare la linea del compress con una ECHO davanti, in modo che te la stampi ma non invochi veramente il comando
    It is common knowledge that old school hackers all have large beards. Alan Cox,RMS and maddog are brilliant examples. The reason for this is that growing a beard is the most interesting use of one's time when the computer is waiting for fsck to finish messing around after a system crash, and on large filesystems, you'll have plenty of time to waste (this might also be why there are so few female hackers; they can't grow beards).

  8. #8
    tebibyte L'avatar di Gig
    Registrato
    Jan 2001
    Località
    Firenze
    Età
    44
    Messaggi
    2,338

    Predefinito

    Uhmm... quasi: in questo modo gli passa il nome del file completo, però aggiunge delle virgolette di troppo:
    pdfcompess.exe "A\"pippo uno.pdf"" "B\"pippo uno.pdf""
    (Le virgolette più interne non gli piacciono...)

    PS: Che bisogno c'è di testare lo script con l'echo, senza eseguirlo? Non avendo messo ECHO OFF, vedo comunque il comando che scrive, e se funzionasse, lo vedrei subito perché riempirebbe la cartella di destinazione...

  9. #9
    Supervisore Straordinario L'avatar di tHeGoOd
    Registrato
    Sep 2000
    Località
    Cenaia, Toscana, Italy, Italy
    Età
    40
    Messaggi
    1,669

    Predefinito

    Originariamente inviato da Gig
    Uhmm... quasi: in questo modo gli passa il nome del file completo, però aggiunge delle virgolette di troppo:
    compess.exe "A\"pippo.pdf"" "B\"pippo.pdf""
    (Le virgolette più interne non gli piacciono...)
    Senza stare troppo tempo a pensarci, direi

    la prima virgoletta la rimuovi estraendo il primo carattere della stringa,
    di "rimuovere" l'ultima virgoletta, tanto la chiudi col nome del file.

    codice:
    C:\programmi\PDF995\res\utilities\pdfcompress.exe "C:\Documents and Settings\pippo\Desktop\PDF\A\%1:~1% "C:\Documents and Settings\pippo\Desktop\PDF\B\%1:~1%

    Originariamente inviato da Gig
    PS: Che bisogno c'è di testare lo script con l'echo, senza eseguirlo? Non avendo messo ECHO OFF, vedo comunque il comando che scrive, e se funzionasse, lo vedrei subito perché riempirebbe la cartella di destinazione...
    Prova a fare uno script con del, rmdir e magari del ricorsivi... Quando ti trovi (come mi successe una volta) mezzo disco sputtanato realizzi che per le prove conviene usare l'echo
    It is common knowledge that old school hackers all have large beards. Alan Cox,RMS and maddog are brilliant examples. The reason for this is that growing a beard is the most interesting use of one's time when the computer is waiting for fsck to finish messing around after a system crash, and on large filesystems, you'll have plenty of time to waste (this might also be why there are so few female hackers; they can't grow beards).

  10. #10
    Supervisore Straordinario L'avatar di tHeGoOd
    Registrato
    Sep 2000
    Località
    Cenaia, Toscana, Italy, Italy
    Età
    40
    Messaggi
    1,669

    Predefinito

    Per chi fosse interessato in batch ancora piu' sofisticati, vi consiglio

    Windows XP Commands

    e

    Windows XP Command Syntax
    It is common knowledge that old school hackers all have large beards. Alan Cox,RMS and maddog are brilliant examples. The reason for this is that growing a beard is the most interesting use of one's time when the computer is waiting for fsck to finish messing around after a system crash, and on large filesystems, you'll have plenty of time to waste (this might also be why there are so few female hackers; they can't grow beards).

Pagina 1 di 2 1 2 ultimo

Informazioni Thread

Users Browsing this Thread

Ci sono attualmente 1 utenti che stanno visualizzando questa discussione. (0 utenti e 1 ospiti)

Discussioni simili

  1. Risposte: 2
    Ultimo messaggio: 22-06-2010, 22:10
  2. tutti li vogliono comprimere
    By trappola in forum -= Sistemi Operativi Windows e software generale =-
    Risposte: 6
    Ultimo messaggio: 08-08-2003, 01:38
  3. nuovo record (personale , si intende ;) )
    By Sakko85 in forum -= Overclocking e CPU =-
    Risposte: 13
    Ultimo messaggio: 02-07-2002, 21:25
  4. Comprimere i file .mov
    By jumpy70 in forum -= Webdesign, Computer grafica, Video editing e Automation/Management =-
    Risposte: 0
    Ultimo messaggio: 14-12-2001, 05:30
  5. COSA SI INTENDE PER TRASFORMAZIONE DA 2 GTS A QUADRO 2 PRO
    By PAX in forum -= Schede video e acceleratori =-
    Risposte: 4
    Ultimo messaggio: 06-03-2001, 12:07

Tags

Regole d'invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
nexthardware.com - © 2002-2022