2014-09-18 14 views
5

Ich verwende die ImageMagick.NET-Bibliothek für C# und ich möchte einige Informationen von jeder Seite in einem. PDF-Dokument erhalten. Hier ist mein aktueller Code:ImageMagick.NET - Schnellere Leistung

Aber in meiner Meinung ist die Leistung sehr langsam. Es dauert 4 Minuten für 10 PDF - Dateien mit 703 Seiten. Ist das eine Möglichkeit, es schneller zu machen?

Antwort

2

Sie können die Leistung verbessern, indem Sie die Datei Seite für Seite lesen. Wenn Sie die ganze Datei lesen, wird es 703 Seiten im Speicher geben. Ihr Computer kann wahrscheinlich nicht so viel Speicher zuweisen, und ImageMagick verwendet dann die Festplatte zum Speichern der Pixel, wodurch die Leistung verringert wird.

Sie können die Seite angeben, die Sie mit der FrameIndex-Eigenschaft der MagickReadSettings-Klasse lesen möchten. Wenn Sie eine zu hohe Seite angeben, wird eine Exception ausgelöst (erfordert Magick.NET 7.0.0.0005 oder höher) mit einer Meldung, die besagt, dass Sie eine ungültige Seite anfordern. Sie müssen dies tun, weil ImageMagick die Seitenzahl einer PDF-Datei nicht kennt. Im Folgenden finden Sie ein Beispiel dafür, wie Sie dies tun können.

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

Ich erhalte diese @dlemstra: 'JPGATTREXC-2.vshost.exe: FailedToExecuteCommand "C:/Program Files (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 = C:/Benutzer/hueser/AppData/Lokal/Temp/magick-8076Hrw5DohW7A9j% d "" -fC:/Benutzer/hueser/AppData/Lokal/Temp/magick-8076HtiiAHseUoOX "" -fC:/Benutzer/hueser/AppData/Lokal/Temp/magick-8076RBbhyEkp30p_ "'(-1) @ Fehler/Dienstprogramm.c/SystemCommand/2053' – Mauley

+0

Verwenden Sie Magick.NET 7.0.0.0005? Und zögern Sie nicht, das Gespräch hier fortzusetzen: https://magick.codeplex.com/discussions. – dlemstra

+0

Ich habe 7.0.0.0 verwendet. – Mauley