Girando no Itextsharp, preservando a localização e a orientação dos comentários

Para resumir, estou usando o Itextsharp para importar páginas específicas de um PDF, possivelmente girar, redimensionar ou alterar a página e exportá-la para um novo PDF. Para esse fim, estou usando a classe PDFWriter do Itext. O problema que encontro é que, ao usar a classe do gravador, ela não parece incluir as anotações visíveis que aparecem na página de origem (no meu caso, é um comentário) na página de saída. Curiosamente, ele inclui o OCR incorporado sem problemas.

Além disso, ao usar a classe Itext PDFcopy, ela funciona exatamente como eu quero (copiar comentários corretamente na fonte), infelizmente o PDFcopy não possui muitas funcionalidades facilmente acessíveis para os tipos de coisas que eu preciso fazer com a página ( por exemplo, redimensionar páginas).

Então, eu estou procurando uma das duas soluções:

Preferencialmente, eu gostaria de continuar usando a classe writer, mas preciso copiar / duplicar quaisquer anotações visíveis etc. das páginas de origem e incluí-las na saída.

-Precisa de algum código de exemplo do uso da classe PDFCopy para redimensionar uma página. Existe uma função pdfcopy.Setpagesize (que não funciona, o que suspeito significa que estou fazendo errado), mas basicamente não tenho idéia de como dimensionar adequadamente a página de origem quando ela precisar ser redimensionada.

Aqui está um pseudo-código para lhe dar uma idéia de onde estou em termos de uso da classe PDFWriter:

      '...

Dim MS As New MemoryStream()
Dim document As New Document
Dim WriterPDF As PdfWriter = PdfWriter.GetInstance(document, MS)
Dim reader As PdfReader = Nothing
Dim cb As PdfContentByte = WriterPDF.DirectContent
reader = New PdfReader(New MemoryStream(File.ReadAllBytes(FilePathList.Item(ItemNum))))

For Each PageItem As Integer In PageNumList
   Dim page As PdfImportedPage = WriterPDF.GetImportedPage(reader, PageItem)
   Dim PageSizeStandard As Rectangle = PageSize.LETTER
  document.SetPageSize(PageSizeStandard)

   Dim tm = New System.Drawing.Drawing2D.Matrix()

        'code to resize, rotate etc... tm.scale, tm.rotate, etc.

   cb.AddTemplate(page, tm)
   document.NewPage()

next

Como alternativa, o código PDFCopy que estou usando para rotação envolve:

 Dim MasterCopy As PdfCopy = New PdfCopy(document, New FileStream(outputPath, FileMode.Create))
      '...
 Dim PageDict As PdfDictionary = reader.GetPageN(PageItem)
' can get current rotation with this... 
' Dim Rot As PdfNumber = PageDict.Get(PdfName.ROTATE)

      '...
Dim RotatedPageSizeHeight As Single = reader.GetPageSizeWithRotation(PageItem).Height
Dim RotatedPageSizeWidth As Single = reader.GetPageSizeWithRotation(PageItem).Width

If RotatedPageSizeWidth > RotatedPageSizeHeight Then
     PageDict.Put(PdfName.ROTATE, New PdfNumber(90))
     'there is a Pdfname.Size, but no idea if that's even what I need or how to use it.
     'with the writer class I use a matrix to scale the page, works fine. 
End If

      '... 
MasterCopy.AddPage(page)

Desculpe, o pseudo-código está um pouco fragmentado, tentando mantê-lo breve. Informe-me se posso fornecer informações adicionais. E obrigado antecipadamente!

questionAnswers(1)

yourAnswerToTheQuestion