我正在创建一个Web应用程序,用于在我们的数据库中维护PDF文档,这些文档在我们接收传真时通过自动系统进入。用户需要能够查看这些文档,并且当他们以错误的方式放入传真机时,他们需要能够处理这些文档的一个更常见的事情是翻转/旋转单个页面。这几乎总是180度旋转页面。我已经创建了一个函数来执行此操作,这似乎有效,但只是第一次调用它。对此功能的任何后续调用似乎都不再起作用。与此函数相关的另一个奇怪的事情是,我还有另一个被调用的方法,它会在选定位置向文档添加一些文本。我传入文本和一些坐标,并将文本写入文档中的那些坐标,一切都很好。这个问题是,在文档被旋转之后(将 旋转一次),如果用户试图在某处向文档添加文本,它似乎会反转它放置文本的坐标,文本是颠倒的。
所有这些告诉我,最终,我正在以某种方式错误地进行页面轮换。我似乎无法找到任何关于如何以正确的方式在PdfSharp文档中旋转页面的好样本,因此一些指导将非常有用并且非常感激。提前谢谢。
这是我目前用于旋转页面和向页面添加文本的代码:
// This is how I'm rotating the page...
public PdfDocument FlipPage(byte[] documentSource, int pageNumber)
{
using (var stream = new MemoryStream())
{
stream.Write(documentSource, 0, documentSource.Length);
var document = PdfReader.Open(stream);
var page = document.Pages[pageNumber - 1];
page.Rotate = 180;
return document;
}
}
// This is how I'm adding text to a page...
public static void AddTextToPage(this PdfDocument document, int pageNumber, Annotation annotation)
{
var page = document.Pages[pageNumber - 1];
annotation.TargetHeight = page.Height.Value;
annotation.TargetWidth = page.Width.Value;
var graphics = XGraphics.FromPdfPage(page);
var textFormatter = new XTextFormatter(graphics);
var font = new XFont("Arial", 10, XFontStyle.Regular);
graphics.DrawString(annotation.Text, font, XBrushes.Red, new PointF((float)annotation.TargetX, (float)annotation.TargetY));
}
答案 0 :(得分:6)
这不是我的专业领域,而是“page.Rotate = 180;”我会尝试这样的事情:
page.Rotate = (page.Rotate + 180) % 360;
(代码未经过测试,可能需要演员)
添加文本时,可以测试“page.Rotate == 180”并使用不同的代码(如“graphics.RotateTransform(180)”)。