2009-08-15 18 views
7

Non ho alcuna familiarità con le specifiche PDF. Mi stavo chiedendo se sia possibile manipolare direttamente un file PDF in modo che alcuni blocchi di testo che ho identificato come importanti siano evidenziati nei colori della mia scelta. La lingua scelta sarebbe pitone.Cambia colore a livello di codice del testo in PDF

risposta

11

È possibile, ma non necessariamente facile, perché il formato PDF è così ricco. È possibile trovare un documento che lo descrive in dettaglio here. Il primo esempio elementare che dà su come testo del display file PDF è:

BT 
/F13 12 Tf 
288 720 Td 
(ABC) Tj 
ET 

BT e ET sono comandi per iniziare e terminare un oggetto di testo; Tf è un comando per usare la risorsa font esterna F13 (che capita di essere Helvetica) alla dimensione 12; Td è un comando per posizionare il cursore sulle coordinate date; Tj è un comando per scrivere i glifi per la stringa precedente. Il sapore è in qualche modo "notazione di smussatura inversa", ovvero, e in effetti abbastanza vicino al sapore di Postscript, uno degli altri grandi contributi di Adobe alla composizione.

Il problema è che nelle specifiche PDF non c'è nulla che dice che il testo che "sembra" come appartiene insieme alla pagina come visualizzata deve effettivamente "essere" insieme; dato che le coordinate precise possono sempre essere fornite, se il PDF è generato da un sofisticato sistema di layout tipografico, potrebbe posizionare il testo in modo preciso, carattere per carattere, per coordinate. Ricostruire il testo in forma di parole e frasi non è quindi necessariamente facile - è quasi tanto difficile quanto il riconoscimento ottico del testo, tranne per il fatto che i caratteri vengono assegnati con precisione (beh ... quasi ... alcune presunte "immagini" potrebbero effettivamente apparire come caratteri ... ;-).

pyPdf è una libreria Python pure molto semplice che è un buon punto di partenza per giocare con i file PDF. La sua funzione di "estrazione del testo" è piuttosto elementare e non fa altro che concatenare gli argomenti di alcuni comandi di disegno del testo; vedrai che è sufficiente su alcuni documenti, ed è abbastanza inutilizzabile per gli altri, ma almeno è un inizio. Come distribuito, pyPdf non fa quasi nulla con i colori, ma con qualche hacking che potrebbe essere risolto.

reportlab La potente libreria Python è interamente incentrata sulla generazione di nuovi PDF, non sull'interpretazione o la modifica di quelli esistenti. All'estremo opposto, la pura libreria Python pdfminer si concentra interamente sull'analisi dei file PDF; fa un po 'di cluster per cercare di ricostruire il testo nei casi in cui le librerie più semplici vengono messe in secondo piano.

Non so di una libreria esistente che esegue i compiti di trasformazione che desideri, ma dovrebbe essere possibile combinare alcuni di questi esistenti per ottenere la maggior parte di essa ... buona fortuna!

+0

Ho provato a leggere un pdf, ma è un personaggio e un flusso, posso riconoscere PDF ed EOF e ci sono molti caratteri speciali. c'è qualche codifica specifica? Potresti per favore condividere un semplice codice per la ricerca di BT e ET, ho avuto la stessa domanda su http://stackoverflow.com/questions/12982188/how-to-access-lines-in-a-pdf-page-programmatically -e dai loro-diversi-colori, grazie – Shan

0

Evidenziare è possibile nel file pdf utilizzando annotazioni PDF ma farlo in modo nativo non è un lavoro facile. Se una qualsiasi delle citate librerie fornisce tali servizi è qualcosa che si può cercare.

Problemi correlati