Tramite Xpdf, scaricabili dal sito http://www.foolabs.com/xpdf/download.html sotto licenza GNU (GPL), possiamo effettuare innumerevoli operazioni su file PDF, come salvare le immagini, estrapolarne il testo, vedere l'autore, la versione, ecc.
In questo script ci occuperemo dell'estrapolazione del testo per poi poterlo utilizzare nelle nostre applicazioni, magari per indicizzare il file all'interno del nostro motore di ricerca.
I tools sono funzionanti per diversi piattaforme e nel nostro caso ci limiteremo ad utilizzare la versione per DOS, comandabile da riga di comando.
Per poter eseguire lo script è necessario disporre dei permessi di esecuzione all'interno della cartella dove si trova il file pdftotext.exe.
Process process = new Process(); process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectStandardError = true; process.StartInfo.CreateNoWindow = true; process.StartInfo.FileName = @"G:\AspItalia\Script\PDF\Pdf2Text\pdftotext.exe"; process.StartInfo.Arguments = "-enc UTF-8 -eol dos \"" + @"G:\AspItalia\Script\PDF\Pdf2Text\testFile.pdf" + "\" -"; process.StartInfo.WorkingDirectory = @"G:\AspItalia\Script\PDF\Pdf2Text\"; process.Start(); string end = process.StandardOutput.ReadToEnd(); Encoding enc = process.StandardOutput.CurrentEncoding; byte[] output = enc.GetBytes(end); return System.Text.Encoding.UTF8.GetString(output);
La libreria è molto performante, ma è consigliabile l'utilizzo di questo script all'interno di un thread separato da quello legato alla nostra GUI, perchè nell'estrapolare il testo da un documento di grandi dimensioni si può arrivare anche ad alcuni minuti di durata per l'intera operazione.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Short-circuiting della Pipeline in ASP.NET Core
Utilizzare la libreria Benchmark.NET per misurare le performance
Implementare il throttling in ASP.NET Core
Load test di ASP.NET Core con k6
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Generare file PDF da Blazor WebAssembly con iText