{"id":25273,"date":"2026-01-13T15:58:17","date_gmt":"2026-01-13T14:58:17","guid":{"rendered":"http:\/\/help.qualiware.it\/qw-help\/?p=25273"},"modified":"2026-01-13T16:00:06","modified_gmt":"2026-01-13T15:00:06","slug":"primitive-di-elaborazione-file-pdf","status":"publish","type":"post","link":"https:\/\/help.qualiware.it\/qw-help\/primitive-di-elaborazione-file-pdf\/","title":{"rendered":"Primitive di elaborazione file PDF"},"content":{"rendered":"<p>A partire dalla release <strong>2018.01g<\/strong> sono disponibili 4 primitive per l&#8217;elaborazione di files PDF:<\/p>\n<ul>\n<li><strong>CreatePDF(&lt;input file path&gt;)<\/strong>: Converte in PDF il file il cui percorso \u00e8 specificato nel parametro. Restituisce il percorso del file PDF creato, vuoto se non \u00e8 stato possibile crere il file.<br \/>\nNOTA: la primitiva \u00e8 in grado di convertire in PDF anche le immagini, compreso il formato HEIC. Nel caso la maggiore delle due dimensioni sia superiore ai 2000 pixel, viene effettuato un ridimensionamento a tale dimensione.<\/li>\n<li><strong>PDFOCR(&lt;input file path&gt;,&lt;output file path&gt;,&lt;resolution&gt;,&lt;language&gt;)<\/strong>: effettua l&#8217;OCR sul file PDF il cui percorso \u00e8 contenuto nel parametro &lt;input file path&gt; restituendo il percorso del file elaborato nella variabile associata al parametro &lt;output file path&gt; (che, quindi, non deve essere assegnata prima della chiamata). Il parametro &lt;resolution&gt;* specifica la risoluzione, e si consiglia di lasciarlo al valore 300, mentre il parametro &lt;language&gt; specifica la lingua da utilizzare per l&#8217;OCR, e pu\u00f2 assumere i valori &#8220;ita&#8221; per italiano, &#8220;eng&#8221; per inglese, &#8220;deu&#8221; per tedesco, &#8220;fra&#8221; for francese, &#8220;spa&#8221; per spagnolo.<br \/>\n(*) dalla versione 2020.05+7 il parametro &lt;resolution&gt; non \u00e8 pi\u00f9 utilizzato e si pu\u00f2 lasciare a &#8220;0&#8221;.<br \/>\nEsempio di utilizzo:<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"visualbasic\">PDFOcr(path,form.findcontrol(\"PATH\").value,300,\"ita\")\r\n<\/pre>\n<ul>\n<li><strong>PDFConvertA1b(&lt;input file path&gt;,&lt;output file path&gt;)<\/strong>: converte in formato PDF\/A1b il file il cui percorso \u00e8 contenuto nel parametro &lt;input file path&gt;, salvandolo nel file il cui percorso \u00e8 contenuto nella variabile associata al parametro &lt;output file path&gt;. Nel caso il parametro sia vuoto, il percorso viene determinato dalla primitiva.<\/li>\n<li><strong>PDFExtractPages(&lt;input file path&gt;,&lt;output file path&gt;,&lt;fromPage&gt;,&lt;toPage&gt;)<\/strong>: estrae dal file PDF il cui percorso \u00e8 contenuto nel parametro &lt;input file path&gt; le pagine comprese fra &lt;fromPage&gt; e &lt;toPage&gt; inserendole nel file il cui percorso \u00e8 contenuto nella variabile associata al parametro &lt;output file path&gt;.<br \/>\nEsempio di utilizzo:<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"visualbasic\">PDFExtractPages(form.findcontrol(\"PATH\").value,form.findcontrol(\"PATH_ATTESTATO\").Value,2,2)<\/pre>\n<ul>\n<li><strong>PDFExtractText(&lt;input file path&gt;)<\/strong>: restituisce il testo contenuto nel file PDF il cui percorso \u00e8 contenuto nel parametro &lt;input file path&gt;.<br \/>\nEsempio di utilizzo:<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"visualbasic\">s=PDFExtractText(form.findcontrol(\"PATH_ATTESTATO\").value)<\/pre>\n<ul>\n<li><strong>PDFExtractTextInsideShapes(&lt;path&gt;,&lt;annotationJSON&gt;)<\/strong>: restituisce un <a href=\"https:\/\/help.qualiware.it\/qw-help\/classi-di-supporto\/#ipt_kb_toc_27012_24\">array associativo<\/a> contenente i testi del documento PDF il cui percorso \u00e8 specificato nel parametro &lt;path&gt; e che sono contenuti all&#8217;interno delle forme definite nel parametro &lt;annotationJSON&gt;, che viene esportato dal metodo client &#8220;exportAnnotations&#8221; dell&#8217;oggetto <a href=\"https:\/\/help.qualiware.it\/qw-help\/fd-visualizzatoredocumento\/\">VisualizzatoreDocumento<\/a>.<\/li>\n<\/ul>\n<ul>\n<li><strong>PDFExtractImages(&lt;input file path&gt;,&lt;images array&gt;)<\/strong>: restituisce un array contenente il percorso completo dei file contenenti l&#8217;esportazione delle immagini estratte dal file il cui percorso \u00e8 contenuto nel parametro &lt;input file path&gt;.<br \/>\nEsempio di utilizzo:<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"visualbasic\">Dim images as DBArray\r\nPDFExtractImages(Parameter1,images)<\/pre>\n<ul>\n<li><strong>PDFExtractPagesAsImage(&lt;input file path&gt;,&lt;images array&gt;)<\/strong>: restituisce un array contenente il percorso completo dei file contenenti le pagine dal file il cui percorso \u00e8 contenuto nel parametro &lt;input file path&gt; trasformate in immagini PNG.<br \/>\nEsempio di utilizzo:<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"visualbasic\">Dim images as DBArray\r\nPDFExtractPagesAsImage(Parameter1,images)<\/pre>\n<ul>\n<li><strong>PDFSearch(&lt;input file path&gt;,&lt;string&gt;)<\/strong>: cerca la stringa &lt;string&gt; nel file PDF il cui percorso \u00e8 contenuto nel parametro &lt;input file path&gt;, e restituisce il numero della prima pagina in cui compare (0 se non viene trovata).<br \/>\nEsempio di utilizzo:<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"visualbasic\">pag=PDFSearch(form.findcontrol(\"PATH\").value,form.findcontrol(\"NOME\").value)<\/pre>\n<ul>\n<li><strong>PDFMerge(&lt;input files path array&gt;,&lt;output file path&gt;)<\/strong>: accoda i files i cui percorsi sono specificati nell&#8217;array &lt;input files path array&gt; in un unico file&nbsp;il cui percorso \u00e8 contenuto nella variabile associata al parametro &lt;output file path&gt;.<br \/>\nEsempio di utilizzo:<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"visualbasic\">Dim f As New DBArray(&lt;percorso 1&gt;,&lt;percorso 2&gt;,...)\r\nDim s As string = funique(Q95_PATH_TEMP + \"\\TEMP????.PDF\")\r\nPDFMerge(f,s)<\/pre>\n<ul>\n<li><strong>PDFAddStamp(&lt;path&gt;,&lt;X&gt;,&lt;Y&gt;,&lt;width&gt;,&lt;height&gt;,&lt;page&gt;,&lt;text&gt;,&lt;fontSize&gt;,&lt;fontColor&gt;,&lt;borderColor&gt;,&lt;optional base64&gt;)<\/strong>: applica un timbro al file il cui percorso \u00e8 specificato nel parametro &lt;path&gt;, nella posizione indicata dai parametri &lt;X&gt; e &lt;Y&gt; e con le dimensioni specificate dai parametri &lt;width&gt; e &lt;height&gt; (se lasciati a zero vengono utilizzati rispettivamente la larghezza e l&#8217;altezza della pagina). Il timbro viene inserito nella pagina specificata nel parametro &lt;page&gt; (se lasciato a zero viene applicato a tutte le pagine). Il testo \u00e8 specificato nel parametro &lt;size&gt;, e il font ha la dimensione specificata nel parametro &lt;fontSize&gt; e il colore specificato nel parametro &lt;fontColor&gt; (se lasciato vuoto viene usato il colore nero). Se si vuole applicare un bordo, specificarne il colore nel parametro &lt;borderColor&gt;. Se anzich\u00e8 un testo si vuole inserire un&#8217;immagine, essa va inserita nel parametro &lt;base64&gt; codificata in formato base64.<\/li>\n<li><strong>PDFEncrypt(&lt;Session&gt;,&lt;path&gt;)<\/strong>: crittografa un file PDF utilizzando una password auto-generata e uguale per tutte le chiamate alla funzione. &lt;Session&gt; \u00e8 un riferimento all&#8217;oggetto sessione che pu\u00f2 essere recuperato tramite form.GetSession() o DB.QWSession. &lt;path&gt; \u00e8 il percorso del file da crittografare. Viene restituito il percorso del file crittografato.<\/li>\n<li><strong>PDFDecrypt(&lt;Session&gt;,&lt;path&gt;,&lt;optional errormsg&gt;)<\/strong>: decrittografa un file PDF utilizzando la password usata dalla funzione PDFEncrypt per crittografare. &lt;Session&gt; \u00e8 un riferimento all&#8217;oggetto sessione che pu\u00f2 essere recuperato tramite form.GetSession() o DB.QWSession. &lt;path&gt; \u00e8 il percorso del file da decrittografare. Viene restituito il percorso del file decrittografato. Il parametro opzionale &lt;errormsg&gt; contiene l&#8217;eventuale messaggio d&#8217;errore.<\/li>\n<\/ul>\n<p>E&#8217; possibile scaricare da <a href=\"http:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/form-demo-primitive-PDF.zip\">qui<\/a>&nbsp;un form di esempio che utilizza le funzioni sopra descritte. Il form implementa l&#8217;estrazione dell&#8217;attestato di uno specifico partecipante a partire da un file PDF contenente la scansione degli attestati di tutti i partecipanti ad un corso.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A partire dalla release 2018.01g sono disponibili 4 primitive per l&#8217;elaborazione di files PDF: CreatePDF(&lt;input file path&gt;): Converte in PDF il file il cui percorso \u00e8 specificato nel parametro. Restituisce il percorso del file PDF creato, vuoto se non \u00e8 stato possibile crere il file. NOTA: la primitiva \u00e8 in grado di convertire in PDF&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"ngg_post_thumbnail":0,"footnotes":""},"categories":[97],"tags":[81],"acf":[],"_links":{"self":[{"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/posts\/25273"}],"collection":[{"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/comments?post=25273"}],"version-history":[{"count":16,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/posts\/25273\/revisions"}],"predecessor-version":[{"id":38331,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/posts\/25273\/revisions\/38331"}],"wp:attachment":[{"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/media?parent=25273"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/categories?post=25273"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/tags?post=25273"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}