मेरे पास एक बड़ी संख्या में पीडीएफ दस्तावेज हैं जो उनके साथ जुड़ी एक्सएमएल फाइलें हैं। मैं उन संलग्न एक्सएमएल फाइलों को निकालना और उन्हें पढ़ना चाहता हूं। मैं .NET का उपयोग करके प्रोग्रामिक रूप से यह कैसे कर सकता हूं?मैं पीडीएफ फ़ाइल से अनुलग्नक कैसे निकालूं?
उत्तर
iTextSharp संलग्नक निकालने में भी काफी सक्षम है ... उह ... हालांकि आपको ऐसा करने के लिए निम्न स्तर की वस्तुओं का उपयोग करना पड़ सकता है।
- एक फ़ाइल एनोटेशन
- दस्तावेज़ स्तर "EmbeddedFiles" पर में:
वहाँ एक पीडीएफ में फ़ाइलों को एम्बेड करने के लिए दो तरीके हैं।
एक बार आपके पास स्रोत से फ़ाइल विनिर्देश शब्दकोश होने के बाद, फ़ाइल स्वयं "ईएफ" (एम्बेडेड फ़ाइल) लेबल वाली स्ट्रीम में होगी।
तो दस्तावेज़ स्तर पर सभी फाइलों को सूचीबद्ध करने के लिए, एक कोड (जावा में) लिखते थे thusly:
Map<String, byte[]> files = new HashMap<String,byte[]>();
PdfReader reader = new PdfReader(pdfPath);
PdfDictionary root = reader.getCatalog();
PdfDictionary names = root.getAsDict(PdfName.NAMES); // may be null
PdfArray embeddedFiles = names.getAsArray(PdfName.EMBEDDEDFILES); //may be null
int len = embeddedFiles.size();
for (int i = 0; i < len; i += 2) {
PdfName name = embeddedFiles.getAsName(i); // should always be present
PdfDictionary fileSpec = embeddedFiles.getAsDict(i+1); // ditto
PRStream stream = (PRStream)fileSpec.getAsStream(PdfName.EF);
if (stream != null) {
files.put(PdfName.decodeName(name.toString()), stream.getBytes());
}
}
धन्यवाद। मैं इसे आज़माउंगा। कोड नमूना के लिए +1। – gyurisc
मुझे इस लाइन के साथ परेशानी है PdfArray एम्बेडेडफ़ाइल = names.getAsDictionary (PdfName.EMBEDDEDFILES); कंपाइलर का कहना है कि यह PdfDictionary को PdfArray – gyurisc
ओप्स में परिवर्तित नहीं कर सकता है। जब आप ब्राउज़र में कोड लिखते हैं तो यही होता है। इसे 'getAsArray() 'कॉल करना चाहिए। –
आप Aspose.Pdf.Kit for .NET कोशिश कर सकते हैं। PdfExtractor क्लास आपको दो विधियों की सहायता से अनुलग्नक निकालने की अनुमति देता है: एक्स्ट्रेक्ट एटैचमेंट और GetAttachment। कृपया example of attachment extraction देखें।
प्रकटीकरण: मैं Aspose पर डेवलपर प्रचारक के रूप में काम करता हूं।
जो कुछ मैं काम कर रहा हूं वह थोड़ा अलग है, फिर मैंने ऑनलाइन देखा है।
तो, बस मामले में, मैंने सोचा कि मैं इसे किसी और की मदद के लिए यहां पोस्ट करूंगा। मुझे पता लगाने के लिए कई अलग-अलग पुनरावृत्तियों से गुज़रना पड़ा - कठिन तरीका - मुझे इसे काम करने के लिए क्या चाहिए।
मैं दो पीडीएफ को तीसरे पीडीएफ में विलय कर रहा हूं, जहां पहले दो पीडीएफ में से एक फ़ाइल संलग्नक हो सकता है जिसे तीसरे पीडीएफ में ले जाने की आवश्यकता है। मैं पूरी तरह से एएसपी.नेट, सी # 4.0, आईटीक्स्टशर्प 5.1.2.0 के साथ धाराओं में काम कर रहा हूं।
// Extract Files from Submit PDF
Dictionary<string, byte[]> files = new Dictionary<string, byte[]>();
PdfDictionary names;
PdfDictionary embeddedFiles;
PdfArray fileSpecs;
int eFLength = 0;
names = writeReader.Catalog.GetAsDict(PdfName.NAMES); // may be null, writeReader is the PdfReader for a PDF input stream
if (names != null)
{
embeddedFiles = names.GetAsDict(PdfName.EMBEDDEDFILES); //may be null
if (embeddedFiles != null)
{
fileSpecs = embeddedFiles.GetAsArray(PdfName.NAMES); //may be null
if (fileSpecs != null)
{
eFLength = fileSpecs.Size;
for (int i = 0; i < eFLength; i++)
{
i++; //objects are in pairs and only want odd objects (1,3,5...)
PdfDictionary fileSpec = fileSpecs.GetAsDict(i); // may be null
if (fileSpec != null)
{
PdfDictionary refs = fileSpec.GetAsDict(PdfName.EF);
foreach (PdfName key in refs.Keys)
{
PRStream stream = (PRStream)PdfReader.GetPdfObject(refs.GetAsIndirectObject(key));
if (stream != null)
{
files.Add(fileSpec.GetAsString(key).ToString(), PdfReader.GetStreamBytes(stream));
}
}
}
}
}
}
}
यह एक पुरानी सवाल, फिर भी मुझे लगता है कि मेरी वैकल्पिक समाधान (PDF Clown का प्रयोग करके) के रूप में कुछ रुचि का हो सकता है कि यह तरीका अधिक स्वच्छ (और अधिक पूर्ण, के रूप में यह दस्तावेज़ और पृष्ठ के स्तर पर दोनों iterates) है से कोड के टुकड़े पहले से प्रस्तावित:
using org.pdfclown.bytes;
using org.pdfclown.documents;
using org.pdfclown.documents.files;
using org.pdfclown.documents.interaction.annotations;
using org.pdfclown.objects;
using System;
using System.Collections.Generic;
void ExtractAttachments(string pdfPath)
{
Dictionary<string, byte[]> attachments = new Dictionary<string, byte[]>();
using(org.pdfclown.files.File file = new org.pdfclown.files.File(pdfPath))
{
Document document = file.Document;
// 1. Embedded files (document level).
foreach(KeyValuePair<PdfString,FileSpecification> entry in document.Names.EmbeddedFiles)
{EvaluateDataFile(attachments, entry.Value);}
// 2. File attachments (page level).
foreach(Page page in document.Pages)
{
foreach(Annotation annotation in page.Annotations)
{
if(annotation is FileAttachment)
{EvaluateDataFile(attachments, ((FileAttachment)annotation).DataFile);}
}
}
}
}
void EvaluateDataFile(Dictionary<string, byte[]> attachments, FileSpecification dataFile)
{
if(dataFile is FullFileSpecification)
{
EmbeddedFile embeddedFile = ((FullFileSpecification)dataFile).EmbeddedFile;
if(embeddedFile != null)
{attachments[dataFile.Path] = embeddedFile.Data.ToByteArray();}
}
}
ध्यान दें कि आप नल पॉइंटर अपवादों के साथ परेशान करने के लिए नहीं है के रूप में पीडीएफ जोकर चिकनी मॉडल ट्रेवर्सल सुनिश्चित करने के लिए सभी आवश्यक अमूर्त और स्वचालन प्रदान करता है।
पीडीएफ क्लाउन एक एलजीपीएल 3 लाइब्रेरी है, जिसे जावा और .NET प्लेटफॉर्म दोनों में लागू किया गया है (मैं इसका मुख्य डेवलपर हूं): यदि आप इसे आज़माकर देखना चाहते हैं, तो मैं आपको स्रोत फोर्ज पर अपनी एसवीएन रिपॉजिटरी जांचने का सुझाव देता हूं। नेट के रूप में यह विकसित रहता है।
अपना समाधान जोड़ने के लिए धन्यवाद। यह बहुत उपयोगी है! – gyurisc
- 1. iTextSharp - फ़ाइल अनुलग्नक कैसे जोड़ें?
- 2. ब्राउज़र से फ़ाइल (अनुलग्नक) कैसे अपलोड करें?
- 3. मैं डेटाटेबल से डेटा कैसे निकालूं?
- 4. मैं यूआरएल से डोमेन को कैसे निकालूं?
- 5. मैं एक बाइनरी फ़ाइल से पीडीएफ फ़ाइल कैसे उत्पन्न करूं?
- 6. उत्पन्न पीडीएफ फ़ाइल को सी # से ईमेल में अनुलग्नक के रूप में कैसे भेजा जाए?
- 7. PHP ज़िप फ़ाइल (पोस्ट अनुलग्नक वर्डप्रेस से)
- 8. मैं पिलिंट से दक्षिण माइग्रेशन को कैसे बाहर निकालूं?
- 9. PHPMailer में फ़ाइल अनुलग्नक कैसे जोड़ें?
- 10. मैं ऐरे के तत्वों को कैसे निकालूं?
- 11. regex - मैं "%" और "_" को कैसे बाहर निकालूं?
- 12. मैं WinDbg एक्सटेंशन से उपयोगकर्ता स्ट्रीम कैसे निकालूं?
- 13. विम: मैं अपनी खोज से एक संपूर्ण शब्द कैसे निकालूं?
- 14. मैं QTransform से रोटेशन के कोण को कैसे निकालूं?
- 15. मैं एसवीएन रिपोजिटरी चेकआउट से फ़ोल्डर को कैसे बाहर निकालूं?
- 16. मैं ASP.NET में साबुन अपवाद से आंतरिक अपवाद कैसे निकालूं?
- 17. पीडीएफ फ़ाइल से पाठ निकालना
- 18. बाइट सरणी से ईमेल अनुलग्नक कैसे जोड़ें?
- 19. मैं विंडोज़ में अज्ञात प्रारूप के साथ बाइनरी फ़ाइल से ASCII डेटा कैसे निकालूं?
- 20. मैं फ़ाइल के भीतर से बाइट्स का एक हिस्सा कैसे निकालूं?
- 21. यूनिक्स पर अपनी लाइन संख्या का उपयोग करके मैं फ़ाइल से लाइनों को कैसे निकालूं?
- 22. पीडीएफ फ़ाइल
- 23. ईमेल अनुलग्नक
- 24. पीडीएफ अनुलग्नक अनुपयोगी डीएटी फाइलों में बदल रहे हैं
- 25. WinJS एप्लिकेशन से एक पीडीएफ फ़ाइल खोलें
- 26. त्रुटि संदेश- स्रोत अनुलग्नक में फ़ाइल ListView.class
- 27. एंड्रॉइड - संपत्तियों से एक्सेस फ़ाइल \ पीडीएफ डिस्प्ले
- 28. पीडीएफ फ़ाइल से प्रिंटर अंक हटाने
- 29. पीडीएफ फ़ाइल से लेटेक्स कोड प्राप्त करें
- 30. पायथन में अनुलग्नक के रूप में ज़िप फ़ाइल कैसे भेजें?
महान प्रश्न, यह बहुत मददगार है, लेकिन क्या मैं जावास्क्रिप्ट या jquery –