加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – PdfSharp:在文档中旋转页面

发布时间:2020-12-15 08:12:12 所属栏目:百科 来源:网络整理
导读:我正在创建一个Web应用程序,用于在我们的数据库中维护PDF文档,这些文档在我们接收传真时通过自动系统进入.用户需要能够查看这些文档,并且当他们以错误的方式放入传真机时,他们需要能够对这些文档执行的一个更常见的事情是翻转/旋转单个页面.这几乎总是180度
我正在创建一个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,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));
}

解决方法

这不是我的专业领域,而是“page.Rotate = 180;”我会尝试这样的事情:
page.Rotate = (page.Rotate + 180) % 360;

(未经测试的代码,可能需要演员)

添加文本时,您可以测试“page.Rotate == 180”并使用不同的代码(如“graphics.RotateTransform(180)”).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读