我使用iText for .NET来读取pdf文件页面大小(宽度和高度),当我在PDF查看器中搜索文档属性时,它以英寸显示尺寸:
我手动将英寸转换为px,它以像素为单位获取尺寸,但在iText中,GetPagesize()
方法返回另一个值。
维度值不同的原因是什么?哪个值是正确的?
答案 0 :(得分:2)
您假设iText为您提供以像素为单位的维度(px
)并且该假设是错误的。请阅读常见问题解答:How do the measurement systems in HTML relate to the measurement system in PDF?
1英寸= 25.4毫米= 72个用户单位(PDF)
1英寸= 25.4毫米= 72磅(排版)
1英寸= 25.4毫米= 96像素(图像)
你可能会混淆96 px和72 pt。
如果您将GetPagesize()
返回的值除以72,而仍然得到不同的维度,那么可能会有/CropBox
。 GetPageSize()
返回/MediaBox
值。但是,还有GetCropBox()
方法。如果未定义/CropBox
,则此方法将返回null
,并且可见页面大小将与实际页面大小相同(假定/CropBox
值与/MediaBox
相同{1}}值)。
如果GetCropBox()
方法未返回null
,则页面的可见部分裁剪为较小的而不是/MediaBox
定义的维度。这可以解释为什么PDF查看器中显示的值小于您根据GetPageSize()
方法返回的值所期望的值。在这种情况下,您需要使用GetCropBox()
方法返回的值。