2012-05-30 11 views
5

का उपयोग करके दो समान पीडीएफ बनाना, मैं एक पीडीएफ क्लोन करना चाहता हूं, और प्रतिलिपि के दौरान या बाद में दस्तावेज़ में थोड़ा बदलाव करता हूं।iTextSharp

मुझे लगता है कि ऐसा करने के लिए पृष्ठों के साथ कामयाब रहे लेकिन मैं यह भी सभी मेटाडाटा, प्रपत्र फ़ील्ड्स, कॉपी करने के लिए कोशिश कर रहा हूँ acrofields आदि

कैसे मुझे लगता है कि iTextSharp का उपयोग कर ऐसा करने में सक्षम हो जाएगा?

Document document = new Document(); 
FileStream fs = new FileStream(OutputFile, FileMode.Create, FileAccess.Write, FileShare.None) 
PdfCopy copy = new PdfCopy(document, fs); 
document.Open(); 
for (int i = 1; i <= reader.NumberOfPages; i++) 
{ 
    PdfImportedPage importedPage = copy.GetImportedPage(reader, i); 
    copy.AddPage(importedPage); 
} 
copy.Outlines = SimpleBookmark.GetBookmark(reader);     

fs.Flush(); 

PdfCopyFields copyf = new PdfCopyFields(fs); 
+12

शायद एक गूंगा टिप्पणी है, लेकिन केवल पीडीएफ फ़ाइल की प्रतिलिपि बनाने के बारे में कैसे? – granaker

+0

हे .. नहीं, मैं दस्तावेज़ में मामूली परिवर्तन करना चाहता हूं। – alexandertr

+5

ठीक है, आप फ़ाइल की प्रतिलिपि नहीं बना सकते हैं, फिर इसमें बदलाव करें (उदाहरण के लिए http://stackoverflow.com/questions/4508120/adding-text-to-existing-pdf-which-is-closed-using-itextsharp) ? –

उत्तर

0

आप iTextSharp के साथ समान बाइट प्रतियां नहीं बना सकते हैं। आप System.IO.File.Copy के साथ समान प्रतियां बना सकते हैं।

आप प्रतिलिपि में और समायोजन करने के लिए इसे iTextSharp के साथ खोलने के लिए स्वतंत्र हैं।

0

आप PdfCopy आधारित समाधान का उपयोग करते हैं।

अपने काम के लिए, हालांकि, एक पीडीएफ लेने और इसमें कुछ बदलाव लागू करने के लिए उपयुक्त समाधान PdfStamper आधारित है। यह इस तरह दिखेगा:

PdfReader reader = ...; 
[...apply changes using PdfReader methods...] 
FileStream fs = new FileStream(OutputFile, FileMode.Create, FileAccess.Write, FileShare.None) 
PdfStamper stamper = new PdfStamper(reader, fs); 
[...apply changes using PdfStamper methods...] 
stamper.Close();