A partire dalla release 2018.01g sono disponibili 4 primitive per l’elaborazione di files PDF:
- CreatePDF(<input file path>): Converte in PDF il file il cui percorso è specificato nel parametro. Restituisce il percorso del file PDF creato, vuoto se non è stato possibile crere il file.
- PDFOCR(<input file path>,<output file path>,<resolution>,<language>): effettua l’OCR sul file PDF il cui percorso è contenuto nel parametro <input file path> restituendo il percorso del file elaborato nella variabile associata al parametro <output file path> (che, quindi, non deve essere assegnata prima della chiamata). Il parametro <resolution>* specifica la risoluzione, e si consiglia di lasciarlo al valore 300, mentre il parametro <language> specifica la lingua da utilizzare per l’OCR, e può assumere i valori “ita” per italiano, “eng” per inglese, “deu” per tedesco, “fra” for francese, “spa” per spagnolo.
(*) dalla versione 2020.05+7 il parametro <resolution> non è più utilizzato e si può lasciare a “0”.
Esempio di utilizzo:
PDFOcr(path,form.findcontrol("PATH").value,300,"ita")
- PDFConvertA1b(<input file path>,<output file path>): converte in formato PDF/A1b il file il cui percorso è contenuto nel parametro <input file path>, salvandolo nel file il cui percorso è contenuto nella variabile associata al parametro <output file path>. Nel caso il parametro sia vuoto, il percorso viene determinato dalla primitiva.
- PDFExtractPages(<input file path>,<output file path>,<fromPage>,<toPage>): estrae dal file PDF il cui percorso è contenuto nel parametro <input file path> le pagine comprese fra <fromPage> e <toPage> inserendole nel file il cui percorso è contenuto nella variabile associata al parametro <output file path>.
Esempio di utilizzo:
PDFExtractPages(form.findcontrol("PATH").value,form.findcontrol("PATH_ATTESTATO").Value,2,2)
- PDFExtractText(<input file path>): restituisce il testo contenuto nel file PDF il cui percorso è contenuto nel parametro <input file path>.
Esempio di utilizzo:
s=PDFExtractText(form.findcontrol("PATH_ATTESTATO").value)
- PDFExtractImages(<input file path>,<images array>): restituisce un array contenente il percorso completo dei file contenenti l’esportazione delle immagini estratte dal file il cui percorso è contenuto nel parametro <input file path>.
Esempio di utilizzo:
Dim images as DBArray PDFExtractImages(Parameter1,images)
- PDFSearch(<input file path>,<string>): cerca la stringa <string> nel file PDF il cui percorso è contenuto nel parametro <input file path>, e restituisce il numero della prima pagina in cui compare (0 se non viene trovata).
Esempio di utilizzo:
pag=PDFSearch(form.findcontrol("PATH").value,form.findcontrol("NOME").value)
- PDFMerge(<input files path array>,<output file path>): accoda i files i cui percorsi sono specificati nell’array <input files path array> in un unico file il cui percorso è contenuto nella variabile associata al parametro <output file path>.
Esempio di utilizzo:
Dim f As New DBArray(<percorso 1>,<percorso 2>,...) Dim s As string = funique(Q95_PATH_TEMP + "\TEMP????.PDF") PDFMerge(f,s)
- PDFAddStamp(<path>,<X>,<Y>,<width>,<height>,<page>,<text>,<fontSize>,<fontColor>,<borderColor>,<optional base64>): applica un timbro al file il cui percorso è specificato nel parametro <path>, nella posizione indicata dai parametri <X> e <Y> e con le dimensioni specificate dai parametri <width> e <height> (se lasciati a zero vengono utilizzati rispettivamente la larghezza e l’altezza della pagina). Il timbro viene inserito nella pagina specificata nel parametro <page> (se lasciato a zero viene applicato a tutte le pagine). Il testo è specificato nel parametro <size>, e il font ha la dimensione specificata nel parametro <fontSize> e il colore specificato nel parametro <fontColor> (se lasciato vuoto viene usato il colore nero). Se si vuole applicare un bordo, specificarne il colore nel parametro <borderColor>. Se anzichè un testo si vuole inserire un’immagine, essa va inserita nel parametro <base64> codificata in formato base64.
- PDFEncrypt(<Session>,<path>): crittografa un file PDF utilizzando una password auto-generata e uguale per tutte le chiamate alla funzione. <Session> è un riferimento all’oggetto sessione che può essere recuperato tramite form.GetSession() o DB.QWSession. <path> è il percorso del file da crittografare. Viene restituito il percorso del file crittografato.
- PDFDecrypt(<Session>,<path>,<optional errormsg>): decrittografa un file PDF utilizzando la password usata dalla funzione PDFEncrypt per crittografare. <Session> è un riferimento all’oggetto sessione che può essere recuperato tramite form.GetSession() o DB.QWSession. <path> è il percorso del file da decrittografare. Viene restituito il percorso del file decrittografato. Il parametro opzionale <errormsg> contiene l’eventuale messaggio d’errore.
E’ possibile scaricare da qui un form di esempio che utilizza le funzioni sopra descritte. Il form implementa l’estrazione dell’attestato di uno specifico partecipante a partire da un file PDF contenente la scansione degli attestati di tutti i partecipanti ad un corso.