NamedDestinations转移到页面目标

时间:2014-05-14 11:22:32

标签: vb.net itextsharp

我尝试合并PDF,同时将nameddestinations转移到新的合并文件,转移到页面目的地而不是命名,请验证以下代码。

For i As Integer = 0 To bookOrder.SelectNodes("//fileInfo/filename").Count - 1
        reader = New PdfReader(bookOrder.SelectNodes("//fileInfo/filename").Item(i).InnerText)
        reader.ConsolidateNamedDestinations()
        n = reader.NumberOfPages
        tempBookmarks = SimpleBookmark.GetBookmark(reader)

        If i = 0 Then
            document = New iTextSharp.text.Document(reader.GetPageSizeWithRotation(1))
            pdfCpy = New PdfCopy(document, New FileStream(outputPdf, FileMode.Create))
            document.Open()
            SimpleBookmark.ShiftPageNumbers(tempBookmarks, page_offset, Nothing)
            page_offset += n
            If tempBookmarks IsNot Nothing Then
                bookmarks.AddRange(tempBookmarks)
            End If

            totalPages = n

        Else

            SimpleBookmark.ShiftPageNumbers(tempBookmarks, page_offset, Nothing)
            If tempBookmarks IsNot Nothing Then
                bookmarks.AddRange(tempBookmarks)
            End If

            page_offset += n
            totalPages += n
        End If

        For j As Integer = 1 To n
            page = pdfCpy.GetImportedPage(reader, j)
            pdfCpy.AddPage(page)
        Next

        pdfCpy.AddNamedDestinations(SimpleNamedDestination.GetNamedDestination(reader, False), page_offset - n)


        reader.Close()
    Next

它的工作正常,但链接目的地已从命名更改为页面...请告诉我需要更正的地方以解决此问题。

1 个答案:

答案 0 :(得分:1)

您指示iText使用ConsolidateNamedDestinations()合并指定的目的地。 此函数将所有本地命名链接替换为实际目标。 如果从代码中删除此方法,则不会更改命名目标。