2013-02-02 8 views
7

का उपयोग करने का तरीका पता नहीं लगा सकता है, मैं दस्तावेज़ और टेक्स्टफील्ड में किसी अन्य वर्ग से कई टेक्स्ट बॉक्स के साथ एक पीडीएफ फाइल बनाने की कोशिश कर रहा हूं। मैं पीडीएफबॉक्स का उपयोग कर रहा हूँ।पीडीएफबॉक्स

ठीक है, एक नई फ़ाइल बनाना आसान है और पाठ की एक पंक्ति लिखना आसान है। अब, जब मैं अगली टेक्स्ट लाइन या टेक्स्टफील्ड डालने की कोशिश कर रहा हूं, तो यह सामग्री को ओवरराइट करता है।

PDDocument doc = null; 
    PDPage page = null; 

     try{ 
      doc = new PDDocument(); 
      page = new PDPage(); 

      doc.addPage(page); 
      PDFont font = PDType1Font.HELVETICA_BOLD; 

      PDPageContentStream title = new PDPageContentStream(doc, page); 
      title.beginText(); 
      title.setFont(font, 14); 
      title.moveTextPositionByAmount(230, 720); 
      title.drawString("DISPATCH SUMMARY"); 
      title.endText(); 
      title.close(); 

      PDPageContentStream title1 = new PDPageContentStream(doc, page); 
      title1.beginText(); 
      title1.setFont(font, 11); 
      title1.moveTextPositionByAmount(30, 620); 
      title1.drawString("DEPARTURE"); 
      title1.endText(); 
      title1.close(); 


      doc.save("PDFWithText.pdf"); 
      doc.close(); 
    } catch (Exception e){ 
     System.out.println(e); 
    } 

यह मुझे एक त्रुटि देता है: "आप मौजूदा सामग्री को ओवरराइट कर रहे हैं, आपको एपेंड मोड का उपयोग करना चाहिए"।

तो मैं title1.appendRawCommands(String) कोशिश कर रहा हूं, लेकिन यह काम नहीं कर रहा है।

मैं नए टेक्स्ट बॉक्स और टेक्स्टफील्ड (किसी अन्य वर्ग से) कैसे जोड़ूं? मैंने इंटरनेट पर ट्यूटोरियल पढ़े हैं, लेकिन वे केवल एक लाइन बनाते हैं।

+1

आप अपनी खुद की सवाल का जवाब दे सकता है और इसे स्वीकार कर लिया। – Math

उत्तर

7
PDPageContentStream title1 = new PDPageContentStream(doc, page, true, true); 

ओपी जवाब के रूप में इस पोस्ट है, ताकि सिस्टम एक जवाब था कि

इसके अलावा, अगर पहले सामग्री धारा काफी ग्राफिक्स राज्य बदल रहा है, उदाहरण के लिए आपरेशन में शामिल करने के लिए इस इच्छा झंडा द्वारा वर्तमान परिवर्तन मैट्रिक्स बदल रहा है, और एक नई सामग्री धारा को इन परिवर्तनों से वापस लाया गया शुरू करना चाहता है, एक से तीन बूलियन मानकों के साथ निर्माता का उपयोग करना चाहिए:

PDPageContentStream title1 = new PDPageContentStream(doc, page, true, true, true); 
+0

@ रुपेश मेरा संपादन देखें, आप शायद एक और कन्स्ट्रक्टर को आजमा सकते हैं जो नई स्ट्रीम की शुरुआत में ग्राफिक्स स्थिति को रीसेट करता है। – mkl

+4

यह अब बहिष्कृत है। 'PDPageContentStream title1 = नया PDPageContentStream (दस्तावेज़, पृष्ठ, PDPageContentStream.AppendMode.APPEND, झूठा) का उपयोग करें; 'इसके बजाए। – Defozo

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