代码之家  ›  专栏  ›  技术社区  ›  Speed

如何从iText 7中pdf的大纲/书签访问矩形、拟合类型、缩放、页码

  •  0
  • Speed  · 技术社区  · 7 年前

    我正在使用iText 7。

    我正在尝试使用iText访问PDF书签的属性,如(矩形、适合类型、缩放、页码)。

    我遵循这个层次结构-> PdfDocument -&燃气轮机; GetOutlines(true) -&燃气轮机;这将给出每个书签/大纲。 我已经遍历了每个书签,但我无法访问应该包含矩形、适合类型、缩放和页码的视图目标属性。

    我知道在创建我使用过的新书标记时 PdfExplicitDestination.CreateXYZ 但我无法从pdf文档访问查看目的地。

    1 回复  |  直到 7 年前
        1
  •  0
  •   mkl    7 年前

    可以从中检索的数据 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目标语法)