我正在尝试使用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();
Run Code Online (Sandbox Code Playgroud)
有关如何计算正确尺寸的任何想法?
我试过ScaleAbsolute,图像仍然呈现不正确的尺寸.
MK.*_*MK. 21
我忘了提到我正在使用itextsharp 5.0.2.
原来,PDF DPI = 110,这意味着每英寸110像素,并且因为itextsharp使用点作为测量单位,然后:
有一个帮助方法将像素转换为点是我需要的:
public static float PixelsToPoints(float value,int dpi)
{
return value / dpi * 72;
}
Run Code Online (Sandbox Code Playgroud)
通过使用上面的公式并传递dpi值110,它完美地工作:
alt text http://www.freeimagehosting.net/uploads/1c8287b8d9.png
注意:由于您可以创建任何所需尺寸的pdf文档,因此在打印文档时可能会导致缩放不正确.要解决这个问题,您需要做的就是在宽度和高度之间保持正确的纵横比[约1:1.4142](参见:纸张尺寸 - 国际标准:ISO 216).
| 归档时间: |
|
| 查看次数: |
18295 次 |
| 最近记录: |