Hi Thomas,
thanks for responding.
I have created some sample code, please see below. And I have also attached a sample PDF document.
(In my original post I was talking about a TOC, but I really meant bookmarks. Just to avoid any confusion...)
Any chance you could show me how to keep the bookmarks or any hints on how to achieve this?
Many thanks in advance, your help is much appreciated.
Stevo
Code:
'this is the pdf with the bookmarks that I would like to keep in the final PDF
Dim pdfWithBookmarks As PdfDocument = PdfReader.Open("D:\sample.pdf", PdfDocumentOpenMode.Import)
'this is the pdf I am creating on the fly and from which I would like to add a page to the pdfWithBookmarks
Dim pdfToBeAddedFrom As PdfDocument = New PdfDocument()
pdfToBeAddedFrom.Info.Title = "This is the PDF that I am creating on the fly and from which I would like to add a page to the pdfWithBookmarks"
'create page that will be added to the pdfWithBookmarks later on
Dim page2BeAdded As PdfPage = pdfToBeAddedFrom.AddPage()
' draw and print something on page to be added...
Const myText As String = "Text 42 text 42 text 42 text 42 text 42 text 42 text 42 text 42 text 42 text 42 text 42"
Dim mygfx As XGraphics = XGraphics.FromPdfPage(page2BeAdded)
Dim myfont As New XFont("Times New Roman", 10, XFontStyle.Bold)
Dim mytf As New XTextFormatter(mygfx)
Dim myrect As New XRect(40, 100, 250, 220)
mygfx.DrawRectangle(XBrushes.SeaShell, myrect)
mytf.DrawString(myText, myfont, XBrushes.Black, myrect, XStringFormats.TopLeft)
'create Memory Stream from pdfToBeAddedFrom and open it as a new PdfDocument with Import Mode, so we can add pages from this document later on
Dim pdfToBeAddedFromContents As Byte() = Nothing
Using stream As New MemoryStream()
pdfToBeAddedFrom.Save(stream, True)
pdfToBeAddedFromContents = stream.ToArray()
End Using
' this is the combined PDF
Dim combinedPDF As PdfDocument = New PdfDocument()
'add page created on the fly
combinedPDF.AddPage(PdfReader.Open(New MemoryStream(pdfToBeAddedFromContents), PdfDocumentOpenMode.Import).Pages(0))
'add pages from pdfWithBookmarks
Dim pageCount As Integer = pdfWithBookmarks.PageCount
For idx As Integer = 0 To pageCount - 1 Step 1
Dim pageTmp As PdfPage = pdfWithBookmarks.Pages(idx)
combinedPDF.AddPage(pageTmp)
Next
'now save and display with default viewer
Dim tempFileName4CombinedPdf As String = Path.GetTempFileName()
File.Delete(tempFileName4CombinedPdf)
tempFileName4CombinedPdf = Path.ChangeExtension(tempFileName4CombinedPdf, ".pdf")
combinedPDF.Save(tempFileName4CombinedPdf)
System.Diagnostics.Process.Start(tempFileName4CombinedPdf)