当前位置: 首页 > 编程语言 > C#

如何使用iTextSharpPdfReader从PdfFile获取UserUnit属性分享

时间:2023-04-11 01:45:12 C#

PdfReader实例。我想获取每个页面的尺寸——以像素为单位。到目前为止,据我所见,PDF文件似乎在点上工作——点是一种可配置的单位,存储在名为UserUnit的元素内的某种字典中。将我的PDF文件加载到PdfReader中,我需要做什么来获取每个页面的UserUnit(显然它可能因页面而异),因此我可以获得以像素为单位的页面尺寸。目前我有这段代码,它以“点”为单位获取每个页面的尺寸——我猜我只需要UerUnit,然后可以将其相乘以获得像素或类似的东西。//创建一个读取PDF的对象PdfReaderreader=newiTextSharp.text.pdf.PdfReader(file_content);for(inti=1;i<=reader.NumberOfPages;i++){Rectangledim=reader.GetPageSize(i);int[]xy=newint[]{(int)dim.Width,(int)dim.Height};//以“点”为单位返回页面大小page_data[objectid+'-'+i]=xy;干杯!请允许我引用我的书:iTextinAction-第二版,第9页:常见问题解答PDF文档中的度量单位是什么?PDF中的大多数度量都以用户空间单位表示。ISO-32000-1(第8.3.2.3节)告诉我们“默认用户空间中单位大小的默认值(1/72英寸)与点(pt)大致相同,点(pt)是印刷中广泛使用的单位行业。它不完全一样;没有普遍的定义。“简而言之,1英寸=25.4毫米=72个用户单位(大致相当于72点)。在下一页中,我将说明可以更改用户单位的默认值,并添加一个示例说明如何使用不同用户单位的页面创建文档。现在回答你的问题:假设你有一个现有的PDF,你如何找出使用的是哪个用户单位?在我们回答这个问题之前,我们需要看一下ISO-32000-1.在7.7.3.3页面对象中,您将在表30“页面对象中的条目”中找到对UserUnit的描述:(可选;PDF1.6)一个正数,表示默认用户空间单位的大小,按1缩放/以72英寸的倍数表示。支持值的范围应取决于实现。默认值:1.0(用户空间单位为1/72英寸)。此键在PDF1.6中引入;您不会在较旧的文档...它是可选的,因此您不会总能在每页词典中找到它。在我的书中,我还解释了UserUnit键的最大值为75,000。现在如何使用iTextSharp检索此值?你已经有了Rectangledim=reader.GetPageSize(i);返回媒体框。这可能不是页面可见部分的大小。如果为页面定义了CropBox,则查看器的大小将比xy小得多(但您可能已经知道)。您现在需要的是一个页面字典,以便您可以检索UserUnit键的值:PdfDictionarypageDict=reader.GetPageN(i);PdfNumberuserUnit=pageDict.GetAsNumber(PdfName.USERUNIT);大多数时候userUnit会是null,但如果不是,你可以使用userUnit.FloatValue。以上是C#学习教程:如何使用iTextSharpPdfReader从PdfFile中获取UserUnit属性共享的所有内容。注意——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: