2013-07-25 5 views
9

के साथ विस्तारित विशेषताओं को अक्षम करें मेरे पास विस्तारित सुविधाओं के साथ एक फ़ॉर्म के साथ एक पीडीएफ टेम्पलेट है। इस फार्म iTextSharp का उपयोग कर के क्षेत्र में भरने के बाद, कलाबाज पाठक के साथ एक उपयोगकर्ता त्रुटि संदेश प्राप्त होता:iTextSharp

इस दस्तावेज़ Adobe Reader में सुविधाओं बढ़ाया सक्षम। दस्तावेज को बनाया गया था क्योंकि इसे बनाया गया था और विस्तारित सुविधाओं का उपयोग अब उपलब्ध नहीं है। कृपया दस्तावेज़ के मूल संस्करण के लिए लेखक से संपर्क करें।

मैं थोड़ा googled लेकिन सभी पोस्ट के बारे में "सक्षम" विस्तारित सुविधाओं, तथापि, मैं प्रपत्र फ़ील्ड्स विकलांग और विस्तारित सुविधाओं

यहाँ एक नमूना कोड बंद कर दिया रहना चाहते हैं बात जो मैं उपयोग कर रहा हूँ:

using (var existingFileStream = new FileStream(fileNameExisting, FileMode.Open)) 
using (var newFileStream = new FileStream(fileNameNew, FileMode.Create)) 
{ 
    // Open existing PDF 
    var pdfReader = new PdfReader(existingFileStream); 

    // PdfStamper, which will create 
    var stamper = new PdfStamper(pdfReader, newFileStream); 

    var form = stamper.AcroFields; 

    var fieldKeys = form.Fields.Keys; 

    foreach (string fieldKey in fieldKeys) 
    { 
     if (fieldKey.Equals("Retailer Name")) 
      form.SetField(fieldKey, retailerName); 
    } 
    // “Flatten” the form so it wont be editable/usable anymore 
    stamper.FormFlattening = true; 

    stamper.Close(); 
    pdfReader.Close(); 
} 
+0

शायद आपको इसे सहेजना नहीं चाहिए, लेकिन crea iTextSharp के बजाय इसके बजाय एक नया उदाहरण है?किसी भी बदलाव में नतीजा, क्योंकि आपने अभी दस्तावेज़ को फिर से बनाया है? मैं पीडीएफ विस्तारित विशेषताओं या iTextSharp से परिचित नहीं हूँ। ITextSharp के उपयोग से संबंधित आपका कोड कैसा दिखता है? मैं वर्तमान में जावा एपीआई पढ़ रहा हूं लेकिन इसकी शांत बड़ी ... –

+0

@ माइक: मैं एक नया उदाहरण बना रहा हूं। मैंने जिस कोड का उपयोग कर रहा हूं उसे दिखाने के लिए मैंने प्रश्न अपडेट किया। – Jags

उत्तर

10

iText Keyword: Reader enabled PDFs अंक निम्नलिखित जानकारी के लिए:

0,123,

शुक्र पर ब्रूनो Lowagie द्वारा प्रस्तुत, 2010/12/31 - 16:37

मेरी फ़ॉर्म भरने के बाद, मेरे पीडीएफ निम्न संदेश दिखाता है: इस दस्तावेज़ Adobe Reader में सुविधाओं बढ़ाया सक्षम। दस्तावेज बदल दिया गया है क्योंकि इसे बनाया गया था और विस्तारित सुविधाओं का उपयोग अब उपलब्ध नहीं है। कृपया इस दस्तावेज़ के मूल संस्करण के लिए लेखक से संपर्क करें। मैं इस संदेश से कैसे बचूं?

फ़ॉर्म के निर्माता ने दस्तावेज़ रीडर सक्षम किया। रीडर सक्षम करने केवल एडोब सॉफ्टवेयर का उपयोग करके किया जा सकता है। आप इस संदेश से दो तरीकों से बच सकते हैं:

  • उपयोग अधिकारों को हटाएं। इसके परिणामस्वरूप एक ऐसा फॉर्म होगा जो रीडर सक्षम नहीं होगा। उदाहरण के लिए: यदि दस्तावेज़ के निर्माता ने अनुमति दी है कि भरे हुए फॉर्म को स्थानीय रूप से सहेजा जा सकता है, तो उपयोग अधिकारों को हटाने के बाद यह अब संभव नहीं होगा।
  • संलग्न मोड में फॉर्म भरें। इसके परिणामस्वरूप एक बड़ा फ़ाइल आकार होगा, लेकिन पाठक सक्षम करने के लिए संरक्षित किया जाएगा।

यह भी नमूना ReaderEnabledForm.java (सी #/iTextSharp बराबर जिनमें से ReaderEnabledForm.cs है) से पता चलता है जो या तो कैसे करना है के लिए अंक।

आपके मामले में यह सही PdfReader बनाने के बाद और PdfStamper.

/** 
* Removes any usage rights that this PDF may have. Only Adobe can grant usage rights 
* and any PDF modification with iText will invalidate them. Invalidated usage rights may 
* confuse Acrobat and it's advisabe to remove them altogether. 
*/ 
public void RemoveUsageRights() 
0

बनाने से पहले PdfStamper constractor अधिभार

का उपयोग करके संलग्न मोड में फार्म भरें

pdfReader.RemoveUsageRights(); 

बुला के बराबर है

// PdfStamper, which will create 
var stamper = new PdfStamper(pdfReader, fileStream, '\0', true);