Image iTextSharp图像放置性能
我有大约2000张8 X 11英寸的图像,大小从10 k到1 meg不等,下面的代码我在一个目录中循环,并将TIFF文件插入我创建的新PDF文件中的新页面。这个过程大约需要10分钟,我在win 8服务器上运行它,有12吉比特的ram和2 X 2.13 GHz处理器(不需要运行其他处理器),我想看看我是否可以缩短时间 我不确定这是否是最有效的方法。它只是有点慢。这可能是禁食的方式,但我想知道是否有人有更好的方式来完成上述过程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
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个,。。。一切都可能不同,在某个地方你可能会找到一个“神奇的数字”。看到结果会很有趣。