Creazione un file PDF con PDFCreator

 

Per convertire in PDF qualsiasi documento o stampa è possibile utilizzare PDFCreator a riga di comando. PDFCreator è un software libero per piattaforma Windows che consente di generare file in formato PDF da qualsiasi documento. Una volta installato, permette di selezionare per la stampa una stampante chiamata PDFCreator, e quindi permette di poter generare documenti PDF da quasi ogni applicazione.

Per il nostro scopo possiamo utilizzarlo invocandolo da codice in modo da generare un file PDF in una determinata cartella che poi potremo spostare liberamente

La prima operazione da fare è Installare PDFCreator da http://www.pdfforge.org/download .

Per raggiungere il nostro scopo avremo bisogno di :

  • Settare PDFCreator come stampante predefinita.
  • Aprire PDFcreator.exe e settare le Opzioni. Selezionare Auto-save impostando la spunta su “Use Auto-save”, indicando “<title>” come nome file e impostare una cartella di repository come “C:\geanet\bin\PDFCreator_temp”

clip_image001

Ora abbiamo tutto quello che ci serve per convertire un qualsiasi file in un PDF.

Per creare un PDF da un file di Microsoft Word da codice ad esempio possiamo invocare il comando

pdfcreator.exe /NoStart /PF"C:\test.doc”

e dopo qualche secondo nella cartella indicata nella opzioni ritroveremo il file TEST.PDF . Occorre precisare che PDFCreator è uno spooler di stampa pertanto perché tutto funzioni dobbiamo avere installato Microsoft Word o altro software che sia in grado di interpretare i file .DOC. Il vantaggio di questa soluzione a confronto dell’utilizzo delle classi di Word risiede nel non dovere necessariamente avere installato Word 2007 o successive

Se vogliamo convertire un file postscript, jpeg o bitmap possiamo fare ancora prima eseguendo

pdfcreator.exe /IF"C:\test.bmp” /OF"C:\test.pdf”

con il vantaggio che il file di output lo possiamo generare dove ci pare. Purtroppo questa opzione è stata resa disponibile solamente per i file grafici ma possiamo aggirare l’ostacolo creando in Gea.Net un funzione come la seguente

Function IoConv_DocToPDF(ByVal NomeFile As String, Optional ByVal NomeFileOut As String = "") As Long

Try

ExecuteWinCmd("pdfcreator.exe", "/NoStart /PF" + """" + NomeFile + """", True) ‘, False)

If NomeFileOut <> "" Then

Dim CartellaGenerati As String = APPLICATION_PATH + "\PDFCreator_Temp"

IOCreateDirectory(CartellaGenerati)

Dim FileOutTemp As String = CartellaGenerati + "\" + IOFileProperty_NameWithoutExt(NomeFile) + ".PDF"

Wait(6) ‘ 6 secondi sono il tempo sufficiente per generare il file

If IO.IOExist(FileOutTemp) = False Then

Return ErrInt.IO_OutputNotWrite

End If

IOFileCopy(FileOutTemp, NomeFileOut)

End If

Return ErrInt.NoErr

Catch ex As Exception

Return ErrInt.IO_OutputNotWrite

End Try

End Function

Note operative

Purtroppo ci sono alcune regole da rispettare.

1) Durante la generazione del PDF (spool di stampa) appare la finestra che ci avverte che sta per essere creato il file. La windows riceve il focus e ha il tasto “Annulla”. Morale se la nostra funzione viene richiamata in un ciclo For…Each piuttosto lungo sarebbe bene non lavorare sul computer altrimenti si rischia di premere inavvertitamente un tasto come “Invio” che annullerebbe la generazione del PDF.

2) Se si notificato il seguente messaggio

clip_image003

occorre dare "OK" e chiudere Microsoft Word che viene aperto a barra comandi prima di procedere con altre operazioni.

3) Ignorare eventuali richieste di aggiornare PDFCreator

Lascia un commento

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: