2014-09-18 10 views
5

इम सी # के लिए ImageMagick.NET लाइब्रेरी का उपयोग कर और मैं एक .PDF दस्तावेज़ में प्रत्येक पृष्ठ से कुछ जानकारियां प्राप्त करना चाहते हैं। यहां मेरा वर्तमान कोड है:ImageMagick.NET - तेज़ प्रदर्शन

var list = new MagickImageCollection(); 
list.Read(file.FullName); 

foreach (var page in list) 
{ 
    if (!backgroundWorker.CancellationPending) 
    { 
     pageCount.pageColorspace(page); 

     isFormat(page.Width, page.Height); 

     pageCount.incPdfPages(); 
    } 
} 

लेकिन मेरी राय में प्रदर्शन वास्तव में धीमा है। इसमें 10 पीडीएफ के लिए 4 मिनट लगते हैं - 703 पृष्ठों वाली फाइलें। क्या इसे तेजी से प्राप्त करने का एक तरीका है?

उत्तर

2

आप पृष्ठ द्वारा फ़ाइल पेज पढ़कर प्रदर्शन में सुधार कर सकते हैं। यदि आप पूरी फाइल पढ़ते हैं तो स्मृति में 703 पेज होंगे। आपकी मशीन शायद इतना स्मृति को आबंटित नहीं कर सकते और ImageMagick तो पिक्सल स्टोर करने के लिए डिस्क का उपयोग करेगा और उस प्रदर्शन कम हो जाएगा।

आपने जिस पृष्ठ MagickReadSettings वर्ग के FrameIndex संपत्ति के साथ पढ़ना चाहते हैं निर्दिष्ट कर सकते हैं। आप एक पृष्ठ बहुत अधिक एक अपवाद उठाया हो जाएगा कि निर्दिष्ट करते हैं बताने वाला संदेश आप एक अमान्य पृष्ठ अनुरोध कर रहे हैं के साथ (Magick.NET 7.0.0.0005 या उच्चतर की आवश्यकता)। आपको ऐसा करने की ज़रूरत है क्योंकि ImageMagick को पीडीएफ फाइल की पेज गिनती नहीं पता है। नीचे एक उदाहरण है कि आप यह कैसे कर सकते हैं।

int page = 0; 
while (true) 
{ 
    MagickReadSettings settings = new MagickReadSettings() 
    { 
    FrameIndex = page 
    }; 

    try 
    { 
    using (MagickImage image = new MagickImage(@"C:\YourFile.pdf", settings)) 
    { 
     // Do something with the image.... 
    } 
    } 
    catch (MagickException ex) 
    { 
    if (ex.Message.Contains("Requested FirstPage is greater")) 
     break; 
    else 
     throw; 
    } 

    page++; 
} 
+0

मैं इस @dlemstra मिलती है: 'JPGATTREXC-2.vshost.exe: FailedToExecuteCommand" C:/प्रोग्राम फ़ाइलें (x86) /gs/gs9.15/bin/gswin32c.exe "-q -dQUIET -dSAFER -dBATCH -DNOPAUSE -DNOPROMPT -dMaxBitmap = 500000000 -dAlignToPixels = 0 -dGridFitTT = 2 "-sDEVICE = pngalpha" -dTextAlphaBits = 4 -dGraphicsAlphaBits = 4 "-r72x72" -dFirstPage = 1 -dLastPage = 1 "-sOutputFile = सी:/उपयोगकर्ता/ह्यूसर/ऐपडाटा/लोकल/टेम्प/मैजिक -8076 एचआरडब्ल्यू 5 डीओएचडब्ल्यू 7 ए 9जे% डी "" -एफसी:/उपयोगकर्ता/ह्यूसर/ऐपडाटा/लोकल/टेम्प/मैजिक -8076 एचटीआईएएचएसयूओओएक्स "" -एफसी:/उपयोगकर्ता/ह्यूसर/ऐपडाटा/लोकल/Temp/magick-8076RBbhyEkp30p_ "'(-1) @ error/utility.c/SystemCommand/2053' – Mauley

+0

क्या आप Magick.NET 7.0.0.0005 का उपयोग कर रहे हैं? https://magick.codeplex.com/discussions: और यहाँ बातचीत जारी रखने के लिए स्वतंत्र महसूस। – dlemstra

+0

मैं 7.0.0.0 का उपयोग कर रहा था। – Mauley

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