2009-06-25 18 views
14

मुझे एक पीडीएफ में एक्सएफए फॉर्म फ़ील्ड को पॉप्युलेट करना होगा (एडोब लाइवसाइकल डिज़ाइनर के साथ बनाया गया)। हम पीडीएफ को पार्स करने के लिए iText (वास्तव में iTextSharp के साथ सी #) का उपयोग करने का प्रयास कर रहे हैं, XFA फ़ील्ड को पॉप्युलेट करें और फिर संशोधित पीडीएफ को वापस सेव करें।पीडीएफ में एक्सएफए फॉर्म फ़ील्ड को पॉप्युलेट करने के लिए iText (iTextSharp) का उपयोग करना?

iText (बहुत कम iTextSharp उदाहरण) के साथ मिलकर सभी उदाहरण AcroForm फ़ील्ड को संशोधित करने के बारे में बात करते हैं। इस पीडीएफ में एक्रोफॉर्म फ़ील्ड नहीं हैं और केवल एक्सएफए का उपयोग करते हैं।

किसी गैर-मानक संसाधनों के पॉइंटर्स सहायक होंगे (मैंने पहले से ही इस विषय पर आवश्यक Googling किया है और कुछ भी उपयोगी नहीं मिला है)।

यहां कोड उदाहरण ऐसे किसी भी व्यक्ति से भयानक होंगे जो वास्तव में किया है जो मैं करने की कोशिश कर रहा हूं।

+1

मैंने इसे "आईटक्स्ट इन एक्शन" पुस्तक में देखा और यह पढ़ता है कि "इस तरह के फॉर्म इस पुस्तक में चर्चा नहीं किए गए हैं" इसलिए इस पुस्तक को उत्तर की उम्मीद में न खरीदें। –

उत्तर

5

यदि आप पीडीएफ में डेटा पैकेट प्राप्त कर सकते हैं, तो एक्रोबैट में एक्सएफए रनटाइम उन क्षेत्रों को डेटा पैकेट में डेटा के साथ पॉप्युलेट करेगा।

यदि आप देखना चाहते हैं कि इनमें से कौन सा दिखता है, तो लाइवसाइकल डिज़ाइनर (एक्रोबैट प्रो के साथ आता है) में एक फॉर्म बनाएं, इसमें कुछ फ़ील्ड जोड़ें, और इसे गतिशील पीडीएफ के रूप में सहेजें। एक्रोबैट में फॉर्म खोलें और फ़ील्ड में कुछ मान टाइप करें और इसे सेव करें।

ओपन आप पीडीएफ डेटा पर सहकर्मी और आप मिल जाएगा/सूची/AcroForm/XFA एक धारा एक < XFA है कि देता है कि एक उपकरण के साथ पीडीएफ: डेटासेट > मान आपके द्वारा लिखे गए साथ पैकेट। यही वह है जिसे आपको खुद को बनाने और पीडीएफ में डालने की आवश्यकता होगी।

एक्सडीपी स्पेक में डेटा पैकेट और मर्ज एल्गोरिदम का विवरण शामिल है। आप इसे यहाँ पा सकते हैं:

http://partners.adobe.com/public/developer/xml/index_arch.html

वैकल्पिक रूप से, आप जो आप वेब सेवा कॉल के माध्यम से सहित तरीके का एक संख्या में प्रोग्राम के रूप में यह सब करने की सुविधा देता से Adobe LiveCycle सर्वर खरीदते हैं।

+0

अपडेट करें यह उपयोगी जानकारी @stevex है। बहुत सराहना की। मैंने xteextSharp के अंदर ऑब्जेक्ट्स को देखते समय xfa: डेटासेट डेटा के डेटासेट (या जो मैंने सोचा था) को देखा था। –

0

यह कहता है कि पुस्तक में क्योंकि यह नहीं करता है। क्या आप अपना पीडीएफ बदल सकते हैं?

+0

नहीं। यह एक जीओवी-जेनरेटेड फॉर्म है जिसे मुझे संशोधित करने की आवश्यकता है और फिर लोगों को जीओवी को पुनः सबमिट करना होगा। –

+1

पुस्तक पुरानी है - 2006 से कुछ एक्सएफए समर्थन रहा है। उदाहरण के लिए, http://1t3xt.info/examples/browse/?page=example&id=433 और http://1t3xt.info/examples/browse देखें /? पृष्ठ = उदाहरण और आईडी = 441 – JasonPlutext

+0

ये लिंक मर चुके हैं, कृपया –

4

iTextSharp XFA के साथ काम कर सकता है। सभी संदेहों को दूर करने के लिए, कृपया नमूना पर एक नज़र डालें iText वेबसाइट पर:

http://itextpdf.com/examples/iia.php?id=165

3
using (FileStream existingPdf = new FileStream("existing.pdf", FileMode.Open)) 
using (FileStream sourceXml = new FileStream("source.xml", FileMode.Open)) 
using (FileStream newPdf = new FileStream("new.pdf", FileMode.Create)) 
{ 
    // Open existing PDF 
    PdfReader pdfReader = new PdfReader(existingPdf); 

    // PdfStamper, which will create 
    PdfStamper stamper = new PdfStamper(pdfReader, newPdf); 
    stamper.AcroFields.Xfa.FillXfaForm(sourceXml); 

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

यह बहुत अच्छा कोड है, धन्यवाद! क्या आप कृपया हमें FillXfaForm में इनपुट करने के लिए XML प्रारूप का एक उदाहरण दे सकते हैं? धन्यवाद! –

1

मैं एक ही मुद्दा है और मुझे लगता है मैं समाधान नहीं मिला है। मैं पीडीएफ ऑब्जेक्ट का निरीक्षण करने के लिए पावरहेल का उपयोग कर रहा हूं।

iTextSharp DLL लोड करें।

Add-Type -Path "C:\Users\micah\Desktop\itextsharp.dll" 

लोड एक चर में पीडीएफ:

$PDF = New-Object iTextSharp.text.pdf.pdfreader -ArgumentList "C:\Users\micah\Desktop\test.pdf" 

इस वस्तु का निरीक्षण करें:

$PDF.AcroFields.XFA.DomDocument.XDP.DataSets.Data.TopMostSubForm | Get-Member 

आप क्या देखना चाहिए, यह है कि आप अपनी PDF पर अपने सभी क्षेत्रों में इस वस्तु के रूप में कर रहे हैं सम्पत्ति। आप इस तरह से अपने सभी क्षेत्रों की एक त्वरित दृश्य प्राप्त कर सकते हैं:

$PDF.AcroFields.XFA.DomDocument.XDP.DataSets.Data.TopMostSubForm | Select-Object -Property "*" 

कि जादू टिकट होना चाहिए।यह स्थान मूल रूप और फॉर्म के XFA भाग दोनों फ़ील्ड है।

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