Differenze tra le versioni di "Estrarre il testo da un file PDF con le risorse del API di libpoppler-glib"
Da Gambas-it.org - Wikipedia.
Riga 36: | Riga 36: | ||
If doc = 0 Then Error.Raise("Errore: " & poppler_error[String@(p)]) | If doc = 0 Then Error.Raise("Errore: " & poppler_error[String@(p)]) | ||
− | <FONT Color=gray>' ''Estrae il testo dalla prima pagina (indice 0):''</font> | + | <FONT Color=gray>' ''Estrae il testo dalla prima pagina (indice 0) del file pdf:''</font> |
pag = poppler_document_get_page(doc, 0) | pag = poppler_document_get_page(doc, 0) | ||
If pag = 0 Then Error.Raise("Errore !") | If pag = 0 Then Error.Raise("Errore !") |
Versione delle 17:26, 31 lug 2018
Se un file PDF possiede del testo, espresso graficamente con Font (e non in quanto immagine di caratteri), è possibile estrarlo con le risorse del API di libpoppler-glib.
E' necessario avere installata nel sistema e richiamare nel programma Gambas la libreria dinamica condivisa: "libpoppler-glib.so"
Mostriamo un esempio pratico:
Library "libpoppler-glib" Private poppler_error As String[] = [Null, "INVALID", "ENCRYPTED", "OPEN_FILE", "BAD_CATALOG", "DAMAGED"] ' popplerDocument *poppler_document_new_from_file (const char *uri, const char *password, GError **error) ' Creates a new PopplerDocument. Private Extern poppler_document_new_from_file(uri As String, password As String, GError As Pointer) As Pointer ' PopplerPage * poppler_document_get_page (PopplerDocument *document, int index) ' Returns the PopplerPage indexed at index. Private Extern poppler_document_get_page(document As Pointer, index As Integer) As Pointer ' char * poppler_page_get_text (PopplerPage *page) ' Retrieves the text of page. Private Extern poppler_page_get_text(page As Pointer) As Pointer ' void g_object_unref (gpointer object) ' Decreases the reference count of object. Private Extern g_object_unref(gobject As Pointer) Public Sub Main() Dim uri, ruta As String Dim doc, pag, p As Pointer percorso = "/percorso/del/file.pdf" doc = poppler_document_new_from_file("file:/" & percorso, Null, VarPtr(p)) If doc = 0 Then Error.Raise("Errore: " & poppler_error[String@(p)]) ' Estrae il testo dalla prima pagina (indice 0) del file pdf: pag = poppler_document_get_page(doc, 0) If pag = 0 Then Error.Raise("Errore !") p = poppler_page_get_text(pag) If p = 0 Then Error.Raise("Errore !") Print String@(p) g_object_unref(pag) g_object_unref(doc) End