2010-03-03 6 views
14

मैं एक पीडीएफ से बाहर पाठ को खींचने के लिए iTextSharp और reader.GetPageContent विधि का उपयोग कर रहा पर शब्द की स्थिति को प्राप्त करने के लिए कैसे। मुझे दस्तावेज़ में पाए गए प्रत्येक शब्द के लिए आयताकार/स्थिति ढूंढनी होगी। ITextSharp का उपयोग कर पीडीएफ में किसी शब्द की आयताकार/स्थिति प्राप्त करने का कोई तरीका है?iTextSharp - एक पृष्ठ

+1

आप अपनी समस्या के लिए एक अच्छा समाधान मिला? – d456

उत्तर

20

हाँ वहाँ है। text.pdf.parser पैकेज देखें, विशेष रूप से LocationTextExtractionStrategy। असल में, यह चाल भी नहीं कर सकता है। आप शायद PdfTextExtractor में खिलाने के लिए अपने स्वयं के TextExtractionStrategy लिखना चाहें:

MyTexExStrat strat = new MyTexExStrat(); 
PdfTextExtractor.getTextFromPage(reader, pageNum, strat); 
// get the strings-n-rects from strat. 

public class MyTexExStrat implements TextExtractionStrategy { 
    void beginTextBlock() {} 
    void endTextBlock() {} 
    void renderImage(ImageRenderInfo info) {} 
    void renderText(TextRenderInfo info) { 
     // track text and location here. 
    } 
} 

आप शायद स्रोत को देखने के लिए LocationTextExtractionStrategy को देखने के लिए कि यह कैसे पाठ कि एक आधार रेखा के शेयरों को जोड़ती है चाहता हूँ। आप स्ट्रिंग्स और रीक्ट्स के समांतर सरणी को स्टोर करने के लिए एलटीईएस को भी संशोधित कर सकते हैं।

पुनश्च: rects निर्माण करने के लिए, तो आप सिर्फ AscentLine & DescentLine हो और ऊपर और नीचे कोनों के रूप में उन निर्देशांक का उपयोग कर सकते हैं:

Vector bottomLeft = info.getDescentLine().getStartPoint(); 
Vector topRight = info.getAscentLine().getEndPoint(); 
Rectangle rect = new Rectangle(bottomLeft.get(Vector.I1), 
           bottomLeft.get(Vector.I2), 
           topRight.get(Vector.I1), 
           topRight.get(Vector.I2)); 

चेतावनी: इसके बाद के संस्करण कोड गधा यू-एमईएस कि पाठ क्षैतिज है और बाएं से दाएं तक आयता है। घुमावदार पाठ इसे पेंच कर देगा, जैसा लंबवत पाठ या दाएं से बाएं (अरबी, हिब्रू) पाठ होगा। अधिकांश अनुप्रयोगों के लिए, उपरोक्त ठीक होना चाहिए, लेकिन इसकी सीमाएं जानना चाहिए।

अच्छा शिकार।

+2

नोट: LocationTextExtractionStrategy पार्सर जरूरी नहीं कि दस्तावेज़ पर उपस्थिति के क्रम में पाठ का पता लगाने है। मैं पाठकों को पाठकों (.docx फ़ाइलों) में डाल रहा हूं और फिर उन्हें पीडीएफ में परिवर्तित कर रहा हूं (DOCX4J के साथ)। मैंने पाया है कि पार्सर में पाठ मिलेगा, .docx फ़ाइल का पाद लेख क्या था, फिर शरीर अनुभाग में। यानी दस्तावेज़ के निचले हिस्से में पाठ का पता लगाएं, फिर उसके ऊपर पाठ। यदि आपको उपस्थिति के क्रम में पता लगाने की आवश्यकता है, तो आप पाएंगे कि आपको अपने परिणामों को स्वयं क्रमबद्ध करने की आवश्यकता है। –

+0

सी # संस्करण के लिए इस लिंक https://stackoverflow.com/questions/23909893/getting-coordinates-of-string-using-itextextractionstrategy-and-locationtextextr की जाँच करें –