2

PDFページを画像に変換できました。50ページ未満の場合は高速に動作します...1000ページを超えるPDFの場合...完了するまでに多くの時間がかかります。誰でもこのコードを確認して、大きなファイルサイズで機能させることができます....NET3.5でPdfLibNetdll(4.0では機能しません)を使用しました。サンプルコードは次のとおりです。

public void ConverIMG(string filename)
    {          
        PDFWrapper wrapper = new PDFWrapper();
        wrapper.RenderDPI = Dpi;
        wrapper.LoadPDF(filename);
        int count = wrapper.PageCount;
        for (int i = 1; i <= wrapper.PageCount; i++)
        {
            string fileName = AppDomain.CurrentDomain.BaseDirectory + @"IMG\" + i.ToString() + ".png";
            wrapper.ExportJpg(fileName, i, i, (double)100, 100);
            while (wrapper.IsJpgBusy)
            {
                Thread.Sleep(50);
            }
        }
        wrapper.Dispose();            
    }

PS:ページを分割して画像に並行して変換する必要があり、完了ステータスを取得する必要があります。 ページ数と時間の消費

4

1 に答える 1

1

PDFWrapper50 ページを超えるドキュメントでパフォーマンスが低下する場合は、ドキュメントが適切に作成されていないことを示しています。これを克服するには、50 ページのバッチで変換を行い、PDFWrapperバッチごとに再作成します。呼び出し回数が増えると遅くなるという仮定がありExportJpg()、その初期速度は PDF のサイズに依存しません。

これは の明らかな問題に対する回避策にすぎず、PDFWrapper適切な解決策は固定ライブラリを使用することです。またThread.Sleep(1)、譲歩して待つ必要があるかどうかをお勧めします。

public void ConverIMG(string filename)
{
    PDFWrapper wrapper = new PDFWrapper();
    wrapper.RenderDPI = Dpi;
    wrapper.LoadPDF(filename);
    int count = wrapper.PageCount;
    for (int i = 1; i <= count; i++)
    {
        string fileName = AppDomain.CurrentDomain.BaseDirectory + @"IMG\" + i.ToString() + ".png";
        wrapper.ExportJpg(fileName, i, i, (double) 100, 100);
        while (wrapper.IsJpgBusy)
        {
            Thread.Sleep(1);
        }

        if (i % 50 == 0)
        {
            wrapper.Dispose();
            wrapper = new PDFWrapper();
            wrapper.RenderDPI = Dpi;
            wrapper.LoadPDF(filename);
        }
    }
    wrapper.Dispose();
}
于 2012-04-30T15:16:54.800 に答える