PdfSharp:在文档中旋转页面

本文关键字:旋转 文档 PdfSharp | 更新日期: 2023-09-27 18:17:31

我正在创建一个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));
}

PdfSharp:在文档中旋转页面

这不是我的专业领域,而是"page "。旋转= 180;"我想试试这样做:

page.Rotate = (page.Rotate + 180) % 360;

(未测试的代码,可能需要强制转换)

添加文本时,可以测试"page"。旋转== 180",然后使用不同的代码(如"graphics.RotateTransform(180)")。