可以从中检索的数据
PdfDestination
大部分都是非常原始的PDF。因此,目标不是您想要的格式,而是名称、字节字符串或数组。前两个选项是命名目的地,即您必须在
目的地
名称树。
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 ...]
}
}
在检查其余数组条目时,实际上需要考虑此数组的多种可能形式:
[
页
/XYZ公司
左上缩放
]
显示指定的页面
页
,坐标为(
左,顶部
)位于窗口的左上角,页面内容通过因子缩放放大。任何参数的空值
左,顶部,
或
快速移动
指定应保持该参数的当前值不变。A.
快速移动
0的值与null值具有相同的含义。
[
页
/适合]
显示指定的页面
页
,其内容被放大到刚好可以在水平和垂直方向上容纳整个页面。如果所需的水平和垂直放大系数不同,请使用两者中较小的放大系数,将页面在窗口中的其他维度居中。
[
页
/菲斯
顶部
]
显示指定的页面
页
,具有垂直坐标
顶部
位于窗口的顶部边缘,页面内容被放大到刚好可以容纳窗口内页面的整个宽度。的空值
顶部
指定应保持该参数的当前值不变。
[
页
/FitV公司
左边
]
显示指定的页面
页
,具有水平坐标
左边
位于窗口的左边缘,页面内容被放大到刚好适合窗口内页面的整个高度。的空值
左边
指定应保持该参数的当前值不变。
[
页
/FitR公司
左下右上
]
显示指定的页面
页
,其内容放大到刚好适合坐标指定的矩形
左、下、右、,
和
顶部
在水平和垂直方向上完全位于窗口内。如果所需的水平和垂直放大系数不同,请使用两者中较小的放大系数,将矩形在另一个维度的窗口中居中。
[
页
/FitB]
(PDF 1.1)显示指定的页面
页
,其内容被放大到刚好可以在水平和垂直方向上完全适应窗口中的边界框。如果所需的水平和垂直放大系数不同,请使用两者中较小的放大系数,将边界框居中放置在其他尺寸的窗口中。
[
页
/FitBH公司
顶部
]
(PDF 1.1)显示指定的页面
页
,具有垂直坐标
顶部
位于窗口的顶部边缘,页面内容被放大到刚好可以容纳窗口内边框的整个宽度。的空值
顶部
指定应保持该参数的当前值不变。
[
页
/FitBV公司
左边
]
(PDF 1.1)显示指定的页面
页
,具有水平坐标
左边
位于窗口的左边缘,页面内容被放大到刚好可以容纳窗口内边框的整个高度。的空值
左边
指定应保持该参数的当前值不变。
(ISO 32000-2,表149目标语法)