gpt4 book ai didi

c# PDF 中的高分辨率图像

转载 作者:太空狗 更新时间:2023-10-29 21:34:26 25 4
gpt4 key购买 nike

我正在尝试将高质量图像转换为 PDF(每页一张)。但是如果我将页面大小设置为 a4,我必须调整图片大小,因为它们太大了。然后他们失去了质量。有什么办法可以在不降低质量的情况下将大图像放到 a4 页面上吗?

我正在使用 iTextSharp 库,首先我正在创建文档

document = new Document(PageSize.A4, 0, 0, 0, 0);
FileStream output = new FileStream(pdfPath + "document.pdf", FileMode.Create);
PdfWriter writer = PdfWriter.GetInstance(document, output);
document.Open();

然后我添加每张图片

document.Add(iTextSharp.text.Image.GetInstance(toSaveImage, System.Drawing.Imaging.ImageFormat.Tiff));

并关闭文档

document.Close();

最佳答案

首先让我澄清几个误解:

  • PDF 文档没有分辨率。 spender 的评论是错误的。 PDF 中没有 DPI 这样的东西。分辨率仅在呈现 PDF(到屏幕、纸张等)时发挥作用,这就是 PDF 查看器中可能有 DPI 的原因(但这是完全不同的东西)。
  • 当您在 iTextSharp 中缩放 Image 对象时,您不会丢失任何信息:像素数保持不变。尽管 PDF 没有分辨率,但 PDF 中的图像有。当您缩小图像时(即:将相同数量的像素放在较小的 Canvas 上),分辨率会增加;放大时,分辨率会降低。

现在回答您的问题:您没有义务创建 A4 页面:

Image img =
iTextSharp.text.Image.GetInstance(toSaveImage,
System.Drawing.Imaging.ImageFormat.Tiff);
Rectangle pagesize = new Rectangle(img.ScaledWidth, img.ScaledHeight);
Document document = new Document(pagesize);
img.SetAbsolutePosition(0, 0);
document.Add(img);

我根据图像的缩放尺寸创建了 Document。不要让方法名称误导您:ScaledWidthScaledHeight 是获取 Image 尺寸时使用的最安全的方法。它们不仅包括任何缩放操作,您可能已经对图像进行了缩放操作,还考虑了图像旋转后所需的空间。

我已将绝对位置设置为左下角。这比将页边距设置为 0 更安全。

编辑:如果您不想更改页面大小,则必须使用 ScaleToFit() 方法:

Image img =
iTextSharp.text.Image.GetInstance(toSaveImage,
System.Drawing.Imaging.ImageFormat.Tiff);
img.ScaleToFit(PageSize.A4);

请注意,在最新的 iTextSharp 版本之一中引入了缩放以适合 Rectangle 对象的方法。另一种方法是使用需要矩形宽度和高度的 ScaleToFit() 方法。

关于c# PDF 中的高分辨率图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16970106/

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