【发布时间】:2015-05-19 07:40:48
【问题描述】:
我刚刚花了一个小时想出了一个解决方案,我敢肯定这不是最好的;如果有更好的解决方案,我会很高兴。
我需要围绕一个点旋转页面上的所有文本。我尝试将点转换为原点,执行旋转然后再转换回来,但似乎最终的转换是相对于旋转转换发生的(考虑一下,这是有道理的)。
这是我的代码的降低复杂度的版本:
imports itextsharp.text
public class Example
public shared function RotateAboutPoint(byval sourceReader as pdf.pdfreader, byval rads as double, byval centreX as double, byval centreY as double) as pdf.pdfreader
Using ms As New System.IO.MemoryStream
Using doc As New Document
Using writer As pdf.PdfWriter = pdf.PdfWriter.GetInstance(doc, ms)
doc.Open()
For i As Integer = 1 To sourceReader.NumberOfPages
Dim p As pdf.PdfTemplate = writer.GetImportedPage(sourceReader, i)
dim trans as new itextsharp.awt.geom.affinetransform
trans.translate(-centrex, -centrey)
trans.rotate(-rads)
trans.translate(centerx, centery)
doc.setpagesize(sourcereader.getpagesizewithrotation(I))
doc.newpage()
writer.DirectContent.AddTemplate(p, trans)
Next i
doc.Close()
End Using
End Using
sourceReader.Close()
sourceReader.Dispose()
return New pdf.PdfReader(ms.ToArray)
End Using
end function
end class
【问题讨论】:
标签: .net pdf rotation itextsharp affinetransform