如何从iText 7中的PDF格式的轮廓/书签访问矩形,拟合类型,缩放,页码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从iText 7中的PDF格式的轮廓/书签访问矩形,拟合类型,缩放,页码相关的知识,希望对你有一定的参考价值。
我正在使用iText 7。
我试图使用iText访问PDF书签的属性(矩形,适合类型,缩放,页码)。
我遵循这个层次结构 - > PdfDocument
- > GetOutlines(true)
- >这给出了每个书签/大纲。我已遍历每个书签但我无法访问应包含矩形,适合类型,缩放和页码的视图目标属性。
我知道在创建新书签时我使用过PdfExplicitDestination.CreateXYZ
但我无法从pdf文档访问视图目的地。
您可以从PdfDestination
检索的数据主要是非常原始的PDF。因此,目标不是您想要的格式,而是名称,字节字符串或数组。前两个选项是命名目标,即您必须在Dests名称树中查找目标数组。
IDictionary<String, PdfObject> names = document.GetCatalog().GetNameTree(PdfName.Dests).GetNames();
[...]
if ([... some PdfOutline instance ...].GetDestination() is PdfDestination destination)
{
PdfObject destObject = destination.GetPdfObject();
if (destObject is PdfString str)
{
destObject = names[str.ToUnicodeString()];
}
else if (destObject is PdfName nam)
{
destObject = names[nam.GetValue()];
}
现在你应该有一个PdfArray
并可以检查它的值。页面字典是其中的第一个对象,所以
if (destObject is PdfArray arr)
{
if (arr.Get(0) is PdfDictionary pageDict)
{
int pageNumber = document.GetPageNumber(pageDict);
[...]
}
[... inspect remaining array entries ...]
}
}
在检查剩余的数组条目时,实际上有许多可能的形式要考虑:
[page / XYZ left top zoom]显示页面指定的页面,坐标(左,上)位于窗口的左上角,页面内容通过因子缩放放大。任何参数left,top或zoom的空值指定该参数的当前值应保持不变。缩放值0具有与空值相同的含义。
[page / Fit]显示页面指定的页面,其内容放大到足以在窗口内水平和垂直放置整个页面。如果所需的水平和垂直放大系数不同,请使用两者中较小的一个,将窗口中的页面居中放在另一个维度中。
[page / FitH top]显示页面指定的页面,垂直坐标顶部位于窗口的上边缘,页面内容放大到足以适合窗口内页面的整个宽度。 top的空值指定该参数的当前值应保持不变。
[page / fitV left]显示页面指定的页面,水平坐标位于窗口的左边缘,页面内容放大到足以适合窗口内页面的整个高度。 left的null值指定该参数的当前值应保持不变。
[page / FitR左下方右上方]显示页面指定的页面,其内容放大到足以完全适合窗口左,底,右和顶部指定的矩形,水平和垂直均在窗口内。如果所需的水平和垂直放大系数不同,请使用两者中较小的一个,将窗口中的矩形居中放在另一个维度中。
[page / FitB](PDF 1.1)显示页面指定的页面,其内容放大到足以完全在窗口内水平和垂直方向放置其边界框。如果所需的水平和垂直放大系数不同,请使用两者中较小的一个,将窗口中的边界框居中放在另一个维度中。
[page / FitBH top](PDF 1.1)显示页面指定的页面,垂直坐标顶部位于窗口的上边缘,页面内容放大到足以适合其边界框内的整个宽度。窗口。 top的空值指定该参数的当前值应保持不变。
[page / FitBV left](PDF 1.1)显示页面指定的页面,水平坐标位于窗口的左边缘,页面内容放大到足以适合其边界框内的整个高度。窗口。 left的null值指定该参数的当前值应保持不变。
(ISO 32000-2,表149 - 目标语法)
以上是关于如何从iText 7中的PDF格式的轮廓/书签访问矩形,拟合类型,缩放,页码的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 iText 7 删除受密码保护的 pdf 中的密码