2012-11-16 28 views
6

का उपयोग करके पीडीएफ फ़ाइल प्रकार का निर्धारण कैसे करें पीडीएफ फ़ाइल के प्रकार को निर्धारित करने का कोई तरीका है: यदि मौजूदा पीडीएफ फाइल स्कैन की गई छवि है या यदि इसे iTextSharp और C# का उपयोग कर डेटा फ़ाइल से बनाया गया है?iTextSharp

+1

आपके मानदंड क्या हैं? स्कैनर और आपके अन्य प्रकार के दस्तावेज़ से पीडीएफ के बीच आप अंतर कैसे करते हैं? क्या यह मुद्रित वर्णों की मात्रा है? क्या यह छवियों द्वारा कवर पेज क्षेत्र की मात्रा है? क्या यह प्रोग्राम का नाम है जिसने पीडीएफ बनाया है? iTextSharp आपको ऐसे मान निर्धारित करने में मदद कर सकता है लेकिन आपको पहले मानदंडों के साथ आना होगा। – mkl

+0

"स्कैनर से पीडीएफ के बीच आप कैसे अंतर करते हैं ..." - आप पाठ – ESB

+0

हम्मम भी नहीं चुन सकते हैं, यह आवश्यक नहीं है। स्कैनिंग समाधान हैं जो कुछ अतिरिक्त ओसीआर करते हैं और फिर स्कैन किए गए पीडीएफ को अदृश्य लेकिन चुनिंदा पाठ द्वारा समृद्ध करते हैं। और दूसरी ओर iTextSharp और C# * का उपयोग करके डेटा फ़ाइल से * पीडीएफ * बनाना आसान है, बिना किसी चयन योग्य टेक्स्ट के। तो, क्या मैं आपके प्रश्न की व्याख्या कर सकता हूं ताकि आप वास्तव में चुनिंदा पाठ के साथ पीडीएफ के बीच अंतर करना चाहें और बिना? – mkl

उत्तर

0

दस्तावेज़ गुण/उन्नत/पीडीएफ निर्माता

+0

क्या आप कृपया विस्तृत कर सकते हैं? कोड का एक नमूना शायद ... – ESB

0

हो सकता है आप पीडीएफ आप iTextSharp के साथ बनाने के लिए कुछ मेटाडेटा जोड़ सकते हैं।

Read/Modify PDF Metadata using iTextSharp

+0

मैं उन्हें नहीं बनाता - मुझे अपने फ़ोल्डर में उनमें से बहुत से मिलते हैं और यह निर्धारित करने की आवश्यकता है कि प्रत्येक पीडीएफ – ESB

0

मैं सिर्फ PdfWriter वस्तु की घड़ी विंडो में सही जगह खोज करने के बाद पीडीएफ निर्माता को बदलने के लिए इस विधि का बना है, यह "पीडीएफ निर्माता" पीडीएफ में बदल जाता है के रूप में यह डिफ़ॉल्ट रूप से सुलभ नहीं है :

private static void ReplacePdfCreator(PdfWriter writer) 
    { 
     /* 

     Warning 
     * 
     This is not an option offered as is and i had to workaround it by using Reflection and change it 
     manually. 
     * 
     Alejandro 

     */ 
     Type writerType = writer.GetType(); 
     PropertyInfo writerProperty = 
      writerType.GetProperties(BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance) 
         .FirstOrDefault(p => p.PropertyType == typeof(PdfDocument)); 

     if (writerProperty != null) 
     { 
      PdfDocument pd = (PdfDocument)writerProperty.GetValue(writer); 
      Type pdType = pd.GetType(); 
      FieldInfo infoProperty = 
       pdType.GetFields(BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance) 
         .FirstOrDefault(p => p.Name == "info"); 

      if (infoProperty != null) 
      { 
       PdfDocument.PdfInfo pdfInfo = (PdfDocument.PdfInfo)infoProperty.GetValue(pd); 

       if (pdfInfo != null) 
       { 
        string creator = pdfInfo.GetAsString(new PdfName("Producer")).ToLowerInvariant(); 

     if(creator.Contains("itextsharp")) 
     { 
      // created with itext sharp 
     } 
     else if(creator.Contains("adobe")) 
     { 
      // created with adobe something (distiller, photoshop, whatever) 
     } 
     else if(creator.Contains("pdfpro")) 
     { 
      // created with pdf pro 
     } 
     else if(add your own comparison here, for example a scanner manufacturer software like HP's one) 
     { 
     } 
       } 
      } 
     } 
} 
+0

खोलने के बिना तो सवाल का जवाब कहां है ..? क्या आप इसे समझा सकते हैं ..? – NREZ

+0

मैंने इसे गलत धागे में चिपकाया, लेकिन समझाओ कि क्या भी? हालांकि आप यह कोड निर्धारित करने के लिए एक छोटे से अनुकूलन के साथ इस कोड का उपयोग कर सकते हैं, ऊपर दिए गए कोड को अपडेट किया गया .. – coloboxp