我尝试合并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
它的工作正常,但链接目的地已从命名更改为页面...请告诉我需要更正的地方以解决此问题。
答案 0 :(得分:1)
您指示iText使用ConsolidateNamedDestinations()
合并指定的目的地。
此函数将所有本地命名链接替换为实际目标。
如果从代码中删除此方法,则不会更改命名目标。