Image iTextSharp图像放置性能

Image iTextSharp图像放置性能,image,pdf,itextsharp,Image,Pdf,Itextsharp,我有大约2000张8 X 11英寸的图像,大小从10 k到1 meg不等,下面的代码我在一个目录中循环,并将TIFF文件插入我创建的新PDF文件中的新页面。这个过程大约需要10分钟,我在win 8服务器上运行它,有12吉比特的ram和2 X 2.13 GHz处理器(不需要运行其他处理器),我想看看我是否可以缩短时间 我不确定这是否是最有效的方法。它只是有点慢。这可能是禁食的方式,但我想知道是否有人有更好的方式来完成上述过程 using (ouput = new FileStream(Output

我有大约2000张8 X 11英寸的图像,大小从10 k到1 meg不等,下面的代码我在一个目录中循环,并将TIFF文件插入我创建的新PDF文件中的新页面。这个过程大约需要10分钟,我在win 8服务器上运行它,有12吉比特的ram和2 X 2.13 GHz处理器(不需要运行其他处理器),我想看看我是否可以缩短时间

我不确定这是否是最有效的方法。它只是有点慢。这可能是禁食的方式,但我想知道是否有人有更好的方式来完成上述过程

using (ouput = new FileStream(OutputFile, FileMode.Create, FileAccess.Write, FileShare.None))
{
    using (doc = new Document(PageSize.LETTER))
    {
        using (writer = PdfWriter.GetInstance(doc, ouput))
        {
            doc.Open();

            foreach (string dir in Directory.GetFiles(TIFFiles,"*.tif", SearchOption.TopDirectoryOnly))
            {

                Console.Write("\rMerging : {0}....", Path.GetFileName(dir));
                iTextSharp.text.Image TIFF = iTextSharp.text.Image.GetInstance(dir);
                TIFF.SetAbsolutePosition(0, 0);                               
                writer.DirectContent.AddImage(TIFF);
                doc.NewPage();

            }

            Console.WriteLine("");
            Console.WriteLine("End Time: {0}", DateTime.Now.ToString("hh:mm:ss"));

            doc.Close();
            Console.ReadLine();
        }
    }
}

一种可行的方法是创建一组较小的单独PDF,其中可能包含几十幅图像。这项任务可能会瘫痪,然后您可以将这些PDF缝合在一起。您还可以通过从
目录.GetFiles
切换到
目录.EnumerateFiles
来弥补几秒钟的时间。好的,我知道您要做的是什么,一些逻辑更改可能会改变我的顺序,让我试一下为什么不。。我还尝试了Directory.enumerate文件,谢谢您的输入!!我会告诉你我发现了什么。。再次感谢克里斯。理想情况下,你会有(至少)4个结果:1。包含
Directory.GetFiles
2的所有图像。包含
目录的所有图像。枚举文件
3。与
Directory.GetFiles
4并行。与
目录.EnumerateFiles
并行。更多结果,因为您可以选择批次的大小:每10个、每50个、每100个,。。。一切都可能不同,在某个地方你可能会找到一个“神奇的数字”。看到结果会很有趣。