Non esiste un modo impermeabile per fare ciò che si desidera.
Il testo può essere visualizzato in modi diversi all'interno di un file PDF. Per esempio: si possono disegnare tutti glifi usando gli operatori dello stato grafico invece di usare lo stato del testo. (Mi dispiace se ti sembra cinese, ma posso assicurarti che è un linguaggio PDF corretto.)
Se una soluzione ad hoc che copre le situazioni più comuni e manca un PDF esotico una volta ogni tanto è OK per te, quindi hai già una buona soluzione prima.
Nel codice, si esegue il loop su tutte le pagine e si chiede a iText se nella pagina è presente del testo. Questa è già una buona indicazione.
Internamente, il codice utilizza l'interfaccia RenderListener
. iText analizza il contenuto di una pagina e attiva i metodi in un'implementazione specifica RenderListener
. Questa è un'implementazione di un'implementazione personalizzata: MyTextRenderListener. Questa implementazione personalizzata viene utilizzata nell'esempio ParsingHelloWorld.
C'è anche un metodo renderImage()
(vedere ad esempio MyImageListener). Se questo metodo è attivato, sei sicuro al 100% che ci sia anche un'immagine nella pagina, e puoi usare l'oggetto ImageRenderInfo
per ottenere la posizione, la larghezza e l'altezza dell'immagine (cioè: se sai come interpretare il Matrix
restituito dal metodo getImageCTM()
).
Utilizzando tutti questi elementi, è già possibile ottenere molto per ottenere ciò che è necessario, ma essere consapevoli del fatto che ci saranno sempre PDF esotici che sfuggiranno a tutti gli assegni.
fonte
2013-05-15 17:28:56
Questo sembra abbastanza coinvolto in modo accidentale. Forse avrai bisogno di una taglia qui – Coffee
Grazie Mr Adel lo spero :) –