2013-02-01 12 views
5

संपादित करें मैं iTextSharp का उपयोग कर किसी मौजूदा पीडीएफ फ़ाइल में एक टेक्स्ट जोड़ना चाहता हूं, मुझे विभिन्न तरीकों से मिला लेकिन उनमें से सभी में लेखक और पाठक अलग पीडीएफ फाइलें हैं। मुझे एक तरीका चाहिए ताकि मैं एक पीडीएफ खोल सकूं और विभिन्न स्थितियों में अलग-अलग चीजें लिख सकूं। अभी मेरे पास यह कोड है, लेकिन यह एक नई फ़ाइल बनाता है।ITextSharp मौजूदा पीडीएफ

using (FileStream stream1 = File.Open(path, FileMode.OpenOrCreate)) 
     { 
     BaseFont bf = BaseFont.CreateFont(fontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
     PdfReader reader = new PdfReader("C:\\26178DATA\\pdf\\holding.pdf"); 
     var pageSize = reader.GetPageSize(1); 
     PdfStamper stamper = new PdfStamper(reader, stream1); 
     iTextSharp.text.Font tmpFont = new iTextSharp.text.Font(bf, fontSize); 
     PdfContentByte canvas = stamper.GetOverContent(1); 
     Phrase ph = new Phrase(words[1], tmpFont); 
     ph.Font = tmpFont; 
     canvas.SetFontAndSize(bf, fontSize); 
     ColumnText.ShowTextAligned(canvas, Element.ALIGN_LEFT, ph, iTextSharp.text.Utilities.MillimetersToPoints(x * 10), pageSize.GetTop(iTextSharp.text.Utilities.MillimetersToPoints(y * 10)), 0); 
     stamper.Close(); 
      } 

उत्तर

4

आप iTextSharp का उपयोग कर एक मौजूदा पीडीएफ फाइल करने के लिए एक पाठ जोड़ना चाहते हैं , अलग अलग तरीकों से पाया लेकिन उन सभी को में लेखक और पाठक अलग पीडीएफ फ़ाइलें हैं।

सामान्य तरीके के रूप में iText (तीव्र) एक पीडीएफस्टैपर का उपयोग करके पीडीएफ में हेरफेर करता है, इसमें मौजूदा पीडीएफ तत्वों का प्रमुख पुनर्गठन शामिल हो सकता है, iText जगह में एक फ़ाइल संपादित नहीं करता है। दूसरा तरीका, ऐपेंड मोड का उपयोग करके, जगह में संपादन की अनुमति होगी; लेकिन ऐसा एक विकल्प लागू नहीं किया गया है। इन-प्लेस संपादन का एक बड़ा ड्रॉ-बैक यह है कि कुछ प्रोग्राम विफलता के मामले में, प्रश्न में फ़ाइल मध्यस्थ, अनुपयोगी स्थिति में रह सकती है।

कहा जा रहा है कि, आप फाइल को पूरी तरह से स्मृति में पढ़ने और फिर उसी पथ के साथ आउटपुट बनाने के लिए मूल फ़ाइल के पथ पर नई फ़ाइल को सहेज सकते हैं। अपने नमूना कोड के मामले में कम से कम अर्थ होगा उत्पादन धारा के सृजन से पहले PdfReader निर्माता उपयोग बढ़ रहा है:

PdfReader reader = new PdfReader(path); 
using (FileStream stream1 = File.Open(path, FileMode.OpenOrCreate)) 
{ 
    BaseFont bf = BaseFont.CreateFont(fontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
    ... 

वैकल्पिक रूप से आप परिणाम फ़ाइल स्मृति में यानी एक FileStream के बजाय एक MemoryStream में बना सकते हैं,, और, जब समाप्त हो जाए, तो स्मृति स्रोत की सामग्री को अपने स्रोत फ़ाइल पथ पर लिखें।