मैं मौजूदा पीडीएफ फ़ाइल में जानकारी जोड़ने के लिए iTextSharp 5.3.2.0 का उपयोग कर रहा हूं जिसमें डब्ल्यू -2 प्रपत्र। सब कुछ पूरी तरह से काम कर रहा है और ब्राउज़र की प्रतिक्रिया धारा में लिखे जाने पर पीडीएफ फ़ाइल बहुत अच्छी लगती है; हालांकि, जब उपयोगकर्ता पीडीएफ को देखता है, तो उससे पूछा जाता है "क्या आप बंद करने से पहले 'W2.pdf' में परिवर्तनों को सहेजना चाहते हैं?" हर बार जब वह वेब पेज से दस्तावेज़ देखता है।पीडीएफ में डेटा लिखने के लिए iTextSharp का उपयोग करना बहुत अच्छा काम करता है, लेकिन एक्रोबैट रीडर फ़ाइल को बंद करते समय 'क्या आप परिवर्तनों को सहेजना चाहते हैं' पूछता है
समस्या को कम करने की कोशिश में, मैंने वास्तव में मेरे सभी संशोधनों को हटा दिया है लेकिन समस्या जारी है। यहाँ मेरी कोड के सरल संस्करण है, अपने डेटा-लेखन कॉल के साथ बाहर टिप्पणी की:
PdfReader pdfReader = new PdfReader(dataSource.ReportTemplate);
using(MemoryStream outputStream = new MemoryStream())
using (PdfStamper pdfStamper = new PdfStamper(pdfReader, outputStream))
{
//dataSource.DrawDataFields(pdfStamper);
pdfStamper.FormFlattening = true;
return outputStream;
}
इस मामले में, "खाली" पीडीएफ ब्राउज़र को पत्र लिखा और अच्छा लग रहा है है, लेकिन मैं अभी भी पूछे जाते, "क्या जब आप एक्रोबैट विंडो बंद करते हैं तो आप "सहेजना चाहते हैं।
इस बिंदु पर मैं सोच रहा था कि स्रोत पीडीएफ फ़ाइल में कुछ गड़बड़ है। हालांकि, जब मैं ब्राउज़र में पीडीएफ फ़ाइल के कच्चे बाइट वापस भेजता हूं, तो मुझे नीचे दिए गए कोड का उपयोग करते समय "क्या आप सहेजना चाहते हैं" प्रश्न से नहीं पूछा जाता है।
byte[] bytes = File.ReadAllBytes(dataSource.ReportTemplate);
using (MemoryStream outputStream = new MemoryStream())
{
outputStream.Write(bytes, 0, bytes.Length);
return outputStream;
}
मेरा निष्कर्ष है कि iTextSharp कुछ "बुरा" इसे खोलने और धारा बाइट्स लिखने की प्रक्रिया में पीडीएफ करने के लिए कर रहा है, लेकिन मैं iTextSharp के लिए नया हूँ और आसानी से कुछ कमी हो सकती है।
एफडब्ल्यूआईडब्ल्यू, यह एक्रोबैट रीडर 10.1.4 है जिसके बारे में हम बात कर रहे हैं।
संपादित करें: टेम्पलेट के रूप में उपयोग किया जाने वाला मूल पीडीएफ आकार में लगभग 80K है। अगर मैं अपने ब्राउज़र के माध्यम से स्ट्रीम की गई अस्थायी फ़ाइल को देखता हूं, तो iTextSharp द्वारा लिखी गई पीडीएफ फाइल लगभग 150K है। हालांकि, जब मैं एक्रोबैट रीडर द्वारा पूछे गए "सहेजें परिवर्तन" प्रश्न के लिए "हां" का उत्तर देता हूं, परिणामी फ़ाइल लगभग 80K फिर से होती है। iTextSharp निश्चित रूप से इस फ़ाइल के लिए अप्रत्याशित कुछ कर रहा है।
संभावित डुप्लिकेट: http://stackoverflow.com/questions/2186817/itextsharp-filestream-corrupt-pdf-file – VahidN
निश्चित रूप से http://thread.gmane.org/gmane.comp.java.lib के साथ एक डुप्लिकेट। itext.general/63197 –
आईएमओ, यह वाहिडन द्वारा लिखे गए एक से अलग मुद्दा है - ध्यान दें कि मैं एक मौजूदा पीडीएफ फाइल में पढ़ रहा हूं, फिर उस पर टेक्स्ट लिख रहा हूं। लेकिन अगर मैं अपने टेक्स्ट-लेखन कोड पर टिप्पणी करता हूं, तो समस्या होती है। – marc