gpt4 book ai didi

itextsharp - 如何使用itextsharp在输出pdf中计算正确的图像大小?

转载 作者:行者123 更新时间:2023-12-04 00:40:38 25 4
gpt4 key购买 nike

我正在尝试使用 itextsharp 将图像添加到 pdf 中,无论图像大小如何,它似乎总是映射到 pdf 内部的不同更大尺寸?

我添加的图像是 624x500 像素(DPI:72):

alt text http://www.freeimagehosting.net/uploads/727711dc70.png

这是输出pdf的屏幕:

alt text http://www.freeimagehosting.net/uploads/313d49044d.png

这是我创建文档的方式:

Document document = new Document();                
System.IO.MemoryStream stream = new MemoryStream();
PdfWriter writer = PdfWriter.GetInstance(document, stream);
document.Open();


System.Drawing.Image pngImage = System.Drawing.Image.FromFile("test.png");
Image pdfImage = Image.GetInstance(pngImage, System.Drawing.Imaging.ImageFormat.Png);


document.Add(pdfImage);
document.Close();

byte[] buffer = stream.GetBuffer();
FileStream fs = new FileStream("test.pdf", FileMode.Create);
fs.Write(buffer, 0, buffer.Length);
fs.Close();

关于如何计算正确尺寸的任何想法?

我已经尝试过 ScaleAbsolute 并且图像仍然以不正确的尺寸呈现。

最佳答案

我忘了提及我正在使用 itextsharp 5.0.2。

原来 PDF DPI = 110,这意味着每英寸 110 个像素,并且由于 itextsharp 使用点作为测量单位,那么:

  • n 像素 = n/110 英寸。
  • n 英寸 = n * 72 点。

  • 拥有将像素转换为点的辅助方法就是我所需要的:
    public static float PixelsToPoints(float value,int dpi)
    {
    return value / dpi * 72;
    }

    通过使用上面的公式并传递 110 的 dpi 值,它完美地工作:

    注意:由于您可以创建任意大小的 pdf 文档,因此在打印文档时这可能会导致不正确的缩放。要解决这个问题,您需要做的就是在宽度和高度之间设置正确的纵横比 [大约 1:1.4142](参见: Paper Size - The international standard: ISO 216)。

    关于itextsharp - 如何使用itextsharp在输出pdf中计算正确的图像大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2752789/

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