2012-09-10 14 views
6

क्या "processTextPosition" के समान, PDFBox का उपयोग करके शब्दों के स्थान प्राप्त करना संभव है? ऐसा लगता है कि प्रक्रियाTextPosition केवल एकल वर्णों पर कॉल किया जाता है, और कोड जो उन्हें शब्दों में विलय करता है वह PDFTextStripper ("सामान्यीकृत") विधि का हिस्सा है, जो पाठ का स्थान वापस करता है। क्या कोई तरीका/उपयोगिता है जो स्थान को भी निकालती है? (सोच क्या प्रेरणा है उन लोगों के लिए - जानकारी वास्तव में एक मेज है, और हम रिक्त कक्षों का पता लगाने के लिए करना चाहते हैं) धन्यवादपीडीएफबॉक्स - शब्द स्थान प्राप्त करना (और न केवल वर्ण ')

+0

द्वारा अलग किए गए फॉर्म [xposition, yposition, word] रूप में है, यह शायद मदद करेगा: http://stackoverflow.com/questions/3203790/parsing-pdf-files- विशेष रूप से-with -tables-with-pdfbox/12545981 # 12545981 – impeto

+0

सुझाव के लिए धन्यवाद। आखिरकार हमारा समाधान शब्दों को अपनी स्थिति के साथ रखने के लिए लिखने के लिए था, जैसा कि आपने भेजा यूआरएल में वर्णित है)। हालांकि, हमारे मामले में, कॉलम (और उनकी स्थिति) की संख्या ज्ञात नहीं है, और हमें इसे जानकारी के संगठन के आधार पर ढूंढना होगा (उदाहरण के लिए - यदि ऐसी कई रेखाएं हैं जिनके पास स्थिति वाई पर शुरू होने वाले शब्द हैं = 100, शायद वहां एक टेबल कॉलम है)। क्या कोई ऐसा घटक है जो इस संरचना का पता लगा सकता है? यदि हां - तो क्या यह थोड़ा घुमावदार पृष्ठों को भी संभाल सकता है, जब "वाई" निरंतर नहीं है? – user964797

+0

एक संभावित तरीका है कि पीडीएफटीक्स्टस्ट्रिपर क्लास की प्रक्रिया टेक्स्ट() में ओवरराइड जोड़कर वर्णों का ट्रैक रखना और शब्द सेपरेटर की जांच करना। शब्द शुरू करने पर एक निशान रखें और शब्द के अंत में एक निशान रखें और शब्द को सहेजें एक डिलीमीटर का सामना करना पड़ता है। – programer8

उत्तर

1

प्राप्त करने के लिए शब्दों और उनके एक्स और एक पाठ एक pdf फ़ाइल से निकाले में y स्थितियां आप इस प्रकार

PDFTextStripper pdfStripper = new CustomPDFTextStripper(); 
String text = pdfStripper.getText(*pdf file wrapped as a PDDocument object*); 

रूप PdfTextStripper वर्ग का विस्तार करने और पीडीएफ फाइल जैसे

public class CustomPDFTextStripper extends PDFTextStripper{ 

    public CustomPDFTextStripper() throws IOException { 

    } 

    /** 
    * Override the default functionality of PDFTextStripper. 
    */ 

    @Override 
    protected void writeString(String text, List<TextPosition> textPositions) throws IOException{ 
     TextPosition firstProsition = textPositions.get(0); 
     writeString(String.format("[%s , %s , %s]", firstProsition.getTextPos().getXPosition(), 
       firstProsition.getTextPos().getYPosition(), text)); 

    } 
} 

से पाठ निकाल करने के लिए कस्टम वर्ग का उपयोग इस कस्टम वर्ग की एक वस्तु बना सकते हैं और निकालने के पाठ होगा परिणामी पाठ स्ट्रिंग डिफ़ॉल्ट शब्द विभाजक

+0

पीडीएफबॉक्स .net के लिए काम नहीं करता है –

संबंधित मुद्दे