Q: The code listed below is how we rotate PDF files with PDFTron. Can
you please advise whether we are rotating the file incorrectly or this
a defect in the file.
VB.NET sample code:
Public Shared Sub RotatePdf(ByVal sourcePdfFilePath As String, ByVal
destinationFilePath As String, ByVal rotation As Rotation)
Dim objDoc As PDFDoc = Nothing
Dim oExportedFileNames As Generic.List(Of String) = Nothing
Dim strExportFileName As String = String.Empty
Dim itr As PageIterator = Nothing
Dim intCurrentPageNumber As Integer = 1
Dim eRotate As PDFTRON.PDF.Page.Rotate =
PDFTRON.PDF.Page.Rotate.e_0
Try
\'verify file
If File.Exists(sourcePdfFilePath) = False Then Throw New
FileNotFoundException(\"File: \" & sourcePdfFilePath)
\'verify destination directory
If Directory.Exists(Path.GetDirectoryName
(destinationFilePath)) = False Then Throw New
DirectoryNotFoundException(\"Destination directory does not exist: \"
& Path.GetDirectoryName(destinationFilePath))
PDFNet.Initialize()
PDFNet.SetResourcesPath(GetPdfResourcePath)
PDFNet.SetTempPath(GetPdfTempPath)
\'open source
objDoc = New PDFDoc(sourcePdfFilePath)
objDoc.InitSecurityHandler()
itr = objDoc.GetPageIterator()
Select Case rotation
Case PdfEngine.Rotation.rt180
eRotate = PDFTRON.PDF.Page.Rotate.e_180
Case PdfEngine.Rotation.rt90CCW
eRotate = PDFTRON.PDF.Page.Rotate.e_270
Case PdfEngine.Rotation.rt90CW
eRotate = PDFTRON.PDF.Page.Rotate.e_90
Case Else
eRotate = PDFTRON.PDF.Page.Rotate.e_0
End Select
While itr.HasNext()
intCurrentPageNumber = itr.GetPageNumber()
objDoc.GetPage(intCurrentPageNumber).SetRotation
(eRotate)
itr.Next()
End While
\'yes save by linearization
objDoc.Save(destinationFilePath,
SDFDoc.SaveOptions.e_incremental)
Finally
objDoc.Close()
objDoc = Nothing
End Try
End Sub
-------
A: The problem is that you are applying specific rotation to a given
page, but the page is already rotated (i.e. page.GetRotate() returns
270). To fix the problem you need to add your additional rotation to
the existing rotation value.