2012-01-09 63 views
10

में जेपीजी (एस) में पीडीएफ निर्यात करें मुझे वेबसाइट पर एक थंबनेल के लिए एक पृष्ठ पीडीएफ दस्तावेज को एक छवि के रूप में सहेजने की आवश्यकता है।सी #

मैं पीडीएफएसआरपी के साथ गड़बड़ कर रहा हूं और कोई भाग्य नहीं है।

मैंने यह कोशिश की है: http://www.pdfsharp.net/wiki/ExportImages-sample.ashx?AspxAutoDetectCookieSupport=1 लेकिन यह सब कुछ पीडीएफ फाइल में एम्बेडेड छवियों को निकाला जाता है जो वांछित परिणाम नहीं है।

यह कैसे करें इस पर विचार करें? किसी को भी एक अच्छी पुस्तकालय पता है जो इसे संभाल सकता है?

संपादित करें: कृपया मुझे बताएं कि यह इतना बुरा सवाल क्यों है। अगर किसी के पास इसका अच्छा समाधान है तो यह कई अन्य लोगों के लिए एक महान संसाधन होगा। खासकर जब से Google खोज खाली हो जाती है।

+1

आपने पीडीएफएसआरपी में क्या प्रयास किया? यहां एक उदाहरण दिया गया है: http://www.pdfsharp.net/wiki/ExportImages-sample.ashx?AspxAutoDetectCookieSupport=1 – keyboardP

+0

हमें दिखाएं कि आपने क्या प्रयास किया है। हम इसके साथ आपकी मदद करेंगे। – Amy

+0

डाउनवॉट्स के लिए धन्यवाद! मैंने आपके द्वारा लिंक किए गए उदाहरण को छोड़कर कुछ भी नहीं किया है जो पीडीएफ को प्रस्तुत करने और इसे छवि में आउटपुट करने के बजाय पीडीएफ में छवियों को निष्कर्ष निकालता है। कारण मैं पूछ रहा हूं: मुझे iTextSharp या PDFSharp में ऐसा करने का कोई तरीका नहीं दिख रहा है। मैंने बहुत गुगल किया है और खाली हाथ आ गया है। – Jason

उत्तर

5

Ghostscript पर एक नज़र डालें। आप इसके साथ छवियों के लिए पीडीएफ प्रस्तुत कर सकते हैं।

http://www.mattephraim.com/blog/2009/01/06/a-simple-c-wrapper-for-ghostscript/

+0

धन्यवाद, मैं कोशिश करूँगा! – Jason

+0

एक चैंप की तरह काम करता है। मैं स्रोत प्राप्त करने की सलाह देते हैं। इसका पालन करना आसान है और यह ब्लॉग पर उदाहरण भी थोड़ा अलग है। केवल एक चीज है कि आपको वांछित चौड़ाई/ऊंचाई जाननी है। मुझे लगता है कि मैं यह जानकर काम करूंगा कि उस जानकारी को कहां से प्राप्त करना है। – Jason

+0

मैं इस समाधान के बारे में पागल नहीं हूं, इस तथ्य के अलावा कि यह काम करता है। अगर किसी के पास बेहतर समाधान है तो हमें बताएं और मैं आपको चेकमार्क दूंगा। – Jason

1

(अस्वीकरण: मैं Atalasoft के लिए काम करते हैं और पीडीएफ प्रौद्योगिकी का एक बहुत लिखा था) आप Atalasoft dotImage में PdfDecoder उपयोग करते हैं, यह सीधे आगे है:

public void PdfToJpegThumb(Stream srcStream, int pageNo, int maxDimension, Stream dstStream) 
{ 
    PdfDecoder decoder = new PdfDecoder(); 
    decoder.Resolution = 96; // reduce default resolution to speed up rendering 
    // render page 
    using (AtalaImage pdfimage = decoder.read(srcStream, pageNo, null)) { 
     Thumbnail tn = new Thumbnail(maxDimension, maxDimension); 
     // make a thumbnail image 
     using (AtalaImage tnImage = tn.Create(pdfImage)) { 
      // save it 
      tnImage.Save(dstStream, new JpegEncoder(), null); 
     } 
    } 
} 
+9

यदि यह 2000+ रुपये की लागत नहीं है तो यह बहुत साफ होगा। = पी – Jason

2

ABCpdf निर्यात पीडीएफ सी # के साथ जेपीईजी के लिए दस्तावेज़। देखें: http://www.websupergoo.com/helppdfnet/source/4-examples/19-rendering.htm

+0

मैं इस पर एक नज़र डालेगा और देख सकता हूं कि घोस्टस्क्रिप्ट का उपयोग करने से इसकी क्लीनर (यह होना चाहिए)। धन्यवाद! – Jason

0

मुझे इसे वेब पर कहीं से मिला - बिल्कुल याद नहीं किया जा सकता है लेकिन यह मेरे लिए काम करता है!
मैंने इसे अभी एक अच्छा फ़ंक्शन में बनाया है।

यह GhostScript API (GSdll32.dll)

imageFormat पैरामीटर के उदाहरण का उपयोग करता है "jpeg", "tiff32nc", आदि कर रहे हैं

#region GhostScript API functions 
    [DllImport("gsdll32.dll", EntryPoint = "gsapi_new_instance")] 
    private static extern int CreateAPIInstance(out IntPtr pinstance, 
              IntPtr caller_handle); 

    [DllImport("gsdll32.dll", EntryPoint = "gsapi_init_with_args")] 
    private static extern int InitAPI(IntPtr instance, int argc, IntPtr argv); 

    [DllImport("gsdll32.dll", EntryPoint = "gsapi_exit")] 
    private static extern int ExitAPI(IntPtr instance); 

    [DllImport("gsdll32.dll", EntryPoint = "gsapi_delete_instance")] 
    private static extern void DeleteAPIInstance(IntPtr instance); 
    #endregion 

    public bool CreateImage(string inputPath, string outputPath, string imageFormat, int firstPage, int lastPage, int width, int height) 
    { 
     bool result = false; 
     try 
     { 
      string[] args = GetArgs(inputPath, outputPath, imageFormat, firstPage, lastPage, width, height); 
      var argStrHandles = new GCHandle[args.Length]; 
      var argPtrs = new IntPtr[args.Length]; 

      // Create a handle for each of the arguments after 
      // they've been converted to an ANSI null terminated 
      // string. Then store the pointers for each of the handles 
      for (int i = 0; i < args.Length; i++) 
      { 
       argStrHandles[i] = GCHandle.Alloc(StringToAnsi(args[i]), GCHandleType.Pinned); 
       argPtrs[i] = argStrHandles[i].AddrOfPinnedObject(); 
      } 

      // Get a new handle for the array of argument pointers 
      var argPtrsHandle = GCHandle.Alloc(argPtrs, GCHandleType.Pinned); 

      // Get a pointer to an instance of the GhostScript API 
      // and run the API with the current arguments 
      IntPtr gsInstancePtr; 
      CreateAPIInstance(out gsInstancePtr, IntPtr.Zero); 
      InitAPI(gsInstancePtr, args.Length, argPtrsHandle.AddrOfPinnedObject()); 

      // Cleanup arguments in memory 
      for (int i = 0; i < argStrHandles.Length; i++) 
       argStrHandles[i].Free(); 

      argPtrsHandle.Free(); 

      // Clear API 
      ExitAPI(gsInstancePtr); 
      DeleteAPIInstance(gsInstancePtr); 

      result = true; 
     } 
     catch(Exception e) 
     { 
      throw e; 
     } 
     return result; 
    } 
+0

इसे http://www.mattephraim.com/blog/2009/01/06/a-simple-c-wrapper-for-ghostscript/ से लिया गया। इसके अलावा, आप 'GetArgs' आदि जैसे सभी सहायक तरीकों को याद कर रहे हैं – Jason

+0

सुधार – CompanyDroneFromSector7G

5

Ghostscript वर्तमान में प्रतिपादन के लिए वास्तविक मानक है पीडीएफ़। GhostScriptSharp का उपयोग करके, लपेटना थोड़ा मुश्किल है।

जेसन मोर्स नेको ओपन-सोर्स imageresizing.net library पर प्लगइन के रूप में लिखा था।

यदि यह एक asp.net अनुप्रयोग है, पुस्तकालय ऑन-द-मक्खी प्रतिपादन की अनुमति देता है, तो आप सिर्फ jpeg/png संस्करण प्राप्त करने के लिए एक क्वेरी स्ट्रिंग जोड़ सकते हैं:

/pdfs/letter.pdf?format=jpg&page=2

तुम भी उपयोग कर सकते हैं इसके बजाय प्रबंधित एपीआई (किसी भी एप्लीकेशन प्रकार में - एएसपीनेट विशिष्ट नहीं)

ImageBuilder.Current.build ("letter.pdf", "dest.jpg", नया ResizeSettings ("format = jpg; पृष्ठ = 2"));

पीडीएफ रेन्डरर प्लगइन जीपीएल लाइसेंस प्राप्त है, बस घोस्टस्क्रिप्ट की तरह।

+0

सुधार के लिए धन्यवाद, मैं आज इसे देख लूंगा। – Jason