2012-07-02 17 views
6

मैं कुछ बहुत बड़े पीडीएफ के साथ काम कर रहा हूं, कुछ 7 जीबी आकार में। पीडीएफ में 20,000 पेज और कई पूर्ण पृष्ठ रंग छवियां हैं। मैं पीडीएफ के साथ काम करने के लिए पीडीएफबॉक्स का उपयोग करना चाहता हूं, लेकिन जब मैं पीडीएफ खोलने का प्रयास करता हूं तो आकार के कारण मुझे आउटऑफमेमरी एरर मिलता है।पीडीएफबॉक्स: बहुत बड़े पीडीएफ के साथ काम करना।

मैं Intellij का उपयोग कर संस्करण pdfbox-ऐप-1.6.0 के साथ काम कर रहा हूँ, विंडोज 7 पर, जावा 6.

सबसे पहले मैं एक साधारण प्रोग्राम है कि सिर्फ एक PDDocument में पीडीएफ खोला लेखन की कोशिश की और प्रत्येक पृष्ठ मुकाबला एक और पीडीडी दस्तावेज़ पर: http://ideone.com/arKhB

अगला मैंने पीडीएफबॉक्स CopyDoc उदाहरण का उपयोग करने का प्रयास किया।

दोनों उदाहरण स्मृति से बाहर हो जाते हैं।

मुझे लगता है कि ऐसा इसलिए है क्योंकि पीडीएफबॉक्स पूरे दस्तावेज़ को स्मृति में पढ़ने की कोशिश कर रहा है। क्या एक समय में केवल 1 पृष्ठ खोलने का कोई तरीका है? मुझे पता है कि यह धीमी प्रसंस्करण होगी, लेकिन फिलहाल मैं कुछ भी संसाधित नहीं कर सकता। ।

+0

यह भी देखें http://stackoverflow.com/questions/586257/read-pdf-uploadstream-one-page-at-a-time-with-java – DNA

+0

शायद पीडीएफ फ़ाइल को सूची में सूचीबद्ध करें और सूची में लूप करें और एक समय में कुछ निश्चित पृष्ठों को पढ़ें। – Jasonw

+0

@ डीएनए - लिंक के लिए धन्यवाद। मैंने पोस्ट करने से पहले पीडीएफबॉक्स के साथ टैग किए गए हर प्रश्न की जांच की थी, लेकिन मेरी खोज में वह एक चूक गया था। – Pengo

उत्तर

3

2.0 में * संस्करणों, इस तरह पीडीएफ खोलने: केवल नहीं प्रतिबंधित आकार के साथ अस्थायी फ़ाइल (रों) (कोई मुख्य-स्मृति) का उपयोग

PDDocument doc = PDDocument.load(file, MemoryUsageSetting.setupTempFileOnly()); 

हो जाएगा ताकि सेटअप बफरिंग स्मृति उपयोग करने के लिए।

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