2009-04-15 3 views
0

Ich möchte die Rechtecke abrufen, die Absätze und/oder Blöcke von Text in einer PDF-Seite bilden.pdf Absatz oder Blöcke von Textpositionen

Ich habe iTextSharp und DataLogics angeschaut.

Das Beste, was ich tun konnte, ist ein einzelnes Wort zu finden. Ich muss jedoch wissen, ob die Wörter im selben Textblock sind.

Ich benutze C#. Hat jemand irgendwelche Ideen?

Antwort

0

Dies ist in Java, aber es geht darum, den Inhalt aus der PDF zu bekommen und dann den Wert aus dem Index innerhalb des Inhalts zu bekommen.

Ich bin mir nicht sicher, aber Sie könnten etwas ähnliches in C# erreichen. Holen Sie sich den Inhalt und drucken Sie ihn aus.

//create a new reader from the source file 
PdfReader reader = new PdfReader(fileName); 
//create the file array 
RandomAccessFileOrArray raf = new RandomAccessFileOrArray(fileName); 
//get the content of the pdf reader (which is the source file) 
byte bContent [] = reader.getPageContent(1,raf); 
ByteArrayOutputStream bs = new ByteArrayOutputStream(); 
bs.write(bContent); 
//create a string of the contents of the page in order to get the data needed 
String contentOf1099 = bs.toString(); 
if(debug) 
{ 
    System.err.println("contentOf1099 = "+contentOf1099); 
} 
//get the value based off an index 
String value = contentOf1099.substring(contentOf1099.indexOf((",contentOf1099.indexOf("155 664 Td"))+1,contentOf1099.indexOf("(",contentOf1099.indexOf("155 664 Td "))+12); 
+0

Birdlips, diese letzte Zeile gibt mir wirklich Ärger. Kannst du das für mich kaputt machen? – Dave

+0

sicher, im Grunde, was ich dort tue, heißt "Hol mir die nächsten 12 Zeichen am Index von 155 664 Td". Alles auf der PDF hat einen "Ort" mit einer definierten Art von Adresse. Wenn Sie den Inhalt der PDF-Datei ausdrucken, können Sie möglicherweise bestimmen, was innerhalb des Rechtecks ​​liegt. – northpole

1

Ohne seine strukturierte PDF, wird dies nicht existieren. Die PDF-Datei besteht aus einer Reihe von drawString-Befehlen an Positionen. Es gibt keine Absatz- oder Leerzeichenmarkierungen. Sie müssen dies aus den Textpositionen herausfinden.

0

Extrahieren Sie alle Koordinaten jedes Wortes auf der Seite und versuchen Sie dann, sie zu gruppieren.

Das erste, was zu tun ist, ist in Linien zu gruppieren. Um dies zu tun, wollen Sie alle Wörter mit allen Ordnungswörtern durchlaufen und diejenigen zusammenfassen, bei denen y0 kleiner ist als y1 des anderen, während y1 größer ist als y0 des anderen. Dies sind Linien.

Dann müssen Sie Ihre Zeilen in Absätzen gruppieren. Die x-Position des Zeilenanfangs sollte innerhalb 1/25 der Seitenbreite des anderen liegen. Und der Abstand zwischen den y-Koordinaten der Linie sollte kleiner als die Höhe der Linie sein. Dies sind Absätze.

Verwandte Themen