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.
(10 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
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''. | 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 | + | E' necessario avere installata nel sistema e richiamare nel programma Gambas la libreria condivisa: "''libpoppler-glib.so.8.23.0'' " |
− | |||
Mostriamo un esempio pratico: | Mostriamo un esempio pratico: | ||
− | Library "libpoppler-glib" | + | Private URI as String = "file://" |
+ | |||
+ | |||
+ | Library "libpoppler-glib:8.23.0" | ||
Private poppler_error As String[] = [Null, "INVALID", "ENCRYPTED", "OPEN_FILE", "BAD_CATALOG", "DAMAGED"] | Private poppler_error As String[] = [Null, "INVALID", "ENCRYPTED", "OPEN_FILE", "BAD_CATALOG", "DAMAGED"] | ||
Riga 26: | Riga 28: | ||
− | + | Public Sub Main() | |
− | Dim uri, | + | Dim uri, percorso As String |
Dim doc, pag, p As Pointer | Dim doc, pag, p As Pointer | ||
percorso = "<FONT Color=gray>''/percorso/del/file.pdf''</font>" | percorso = "<FONT Color=gray>''/percorso/del/file.pdf''</font>" | ||
− | doc = poppler_document_new_from_file( | + | <FONT Color=gray>' ''Carica il file PDF:''</font> |
− | If doc = 0 Then Error.Raise("Errore: " & poppler_error[String@(p)]) | + | doc = poppler_document_new_from_file(URI & percorso, Null, VarPtr(p)) |
+ | If doc == 0 Then Error.Raise("Errore: " & poppler_error[CInt(String@(p))]) | ||
− | <FONT Color=gray>' '' | + | <FONT Color=gray>' ''Prende in considerazione la 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 !") |
− | + | ||
+ | <FONT Color=gray>' ''Estrae il testo dalla pagina presa in considerazione del file pdf:''</font> | ||
p = poppler_page_get_text(pag) | p = poppler_page_get_text(pag) | ||
− | If p = 0 Then Error.Raise("Errore !") | + | If p == 0 Then Error.Raise("Errore !") |
− | + | ||
+ | <FONT Color=gray>' ''Mostra il testo estratto dalla pagina presa in considerazione del file pdf:''</font> | ||
Print String@(p) | Print String@(p) | ||
+ | <FONT Color=gray>' ''Al termine libera la memoria precedentemente occupata:''</font> | ||
g_object_unref(pag) | g_object_unref(pag) | ||
g_object_unref(doc) | g_object_unref(doc) | ||
− | + | End | |
− | |||
=Riferimenti= | =Riferimenti= | ||
− | * https:/ | + | * https://poppler.freedesktop.org/ |
− |
Versione attuale delle 17:00, 2 ott 2023
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 condivisa: "libpoppler-glib.so.8.23.0 "
Mostriamo un esempio pratico:
Private URI as String = "file://" Library "libpoppler-glib:8.23.0" 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, percorso As String Dim doc, pag, p As Pointer percorso = "/percorso/del/file.pdf" ' Carica il file PDF: doc = poppler_document_new_from_file(URI & percorso, Null, VarPtr(p)) If doc == 0 Then Error.Raise("Errore: " & poppler_error[CInt(String@(p))]) ' Prende in considerazione la prima pagina (indice 0) del file pdf: pag = poppler_document_get_page(doc, 0) If pag == 0 Then Error.Raise("Errore !") ' Estrae il testo dalla pagina presa in considerazione del file pdf: p = poppler_page_get_text(pag) If p == 0 Then Error.Raise("Errore !") ' Mostra il testo estratto dalla pagina presa in considerazione del file pdf: Print String@(p) ' Al termine libera la memoria precedentemente occupata: g_object_unref(pag) g_object_unref(doc) End