Summary:如何减少将 tif 转换为 pdf 所需的时间itextsharp
?
背景:我正在使用 C# 将一些相当大的 tif 转换为 pdfitextsharp
,而且我的表现非常糟糕。每个 tif 文件大约 50kb,某些文档最多有 150 个单独的 tif 文件(每个代表一个页面)。对于一份 132 页文档(约 6500 kb),转换大约需要 13 分钟。在转换过程中,它运行的单个 CPU 服务器以 100% 的速度运行,这让我相信该进程受到 CPU 限制。输出的 pdf 文件大小为 3.5 MB。我对尺寸很满意,但所花费的时间对我来说似乎有点长。
Code:
private void CombineAndConvertTif(IList<FileInfo> inputFiles, FileInfo outputFile)
{
using (FileStream fs = new FileStream(outputFile.FullName, FileMode.Create, FileAccess.ReadWrite, FileShare.None))
{
Document document = new Document(PageSize.A4, 50, 50, 50, 50);
PdfWriter writer = PdfWriter.GetInstance(document, fs);
document.Open();
PdfContentByte cb = writer.DirectContent;
foreach (FileInfo inputFile in inputFiles)
{
using (Bitmap bm = new Bitmap(inputFile.FullName))
{
int total = bm.GetFrameCount(FrameDimension.Page);
for (int k = 0; k < total; ++k)
{
bm.SelectActiveFrame(FrameDimension.Page, k);
//Testing shows that this line takes the lion's share (80%) of the time involved.
iTextSharp.text.Image img =
iTextSharp.text.Image.GetInstance(bm, null, true);
img.ScalePercent(72f / 200f * 100);
img.SetAbsolutePosition(0, 0);
cb.AddImage(img);
document.NewPage();
}
}
}
document.Close();
writer.Close();
}
}
将 GetInstance 方法参数修改为
GetInstance(bm, ImageFormat.Tiff)
这可能会提高性能
iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(bm, ImageFormat.Tiff);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)