gpt4 book ai didi

c# - 使用 ITextSharp 将 tif 转换为 pdf 的性能不佳

转载 作者:太空狗 更新时间:2023-10-29 20:48:58 24 4
gpt4 key购买 nike

总结:如何减少使用 itextsharp 将 tif 文件转换为 pdf 文件所需的时间?

背景:我正在使用 C# 和 itextsharp 将一些相当大的 tif 转换为 pdf,但我的性能非常差。每个 tif 文件大约 50kb,有些文档有多达 150 个单独的 tif 文件(每个代表一页)。对于一份 132 页的文档 (~6500 kb),转换大约需要 13 分钟。在转换期间,它运行的单 CPU 服务器以 100% 的速度运行,这让我相信该进程是 CPU 绑定(bind)的。输出的 pdf 文件为 3.5 MB。我对大小没问题,但对我来说花费的时间似乎有点长。

代码:

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);

关于c# - 使用 ITextSharp 将 tif 转换为 pdf 的性能不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1982028/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com