PDFsharp在图形下绘制文本

我正在使用PDFsharp从头开始生成PDF文档。 我试图在渐变填充矩形上面写文字。 生成文档后,渐变显示在文本顶部,使文本完全隐藏。

using (var document = new PdfDocument()) { var page = document.AddPage(); var graphics = XGraphics.FromPdfPage(page, XGraphicsPdfPageOptions.Append); graphics.SmoothingMode = XSmoothingMode.HighQuality; var bounds = new XRect(graphics.PageOrigin, graphics.PageSize); graphics.DrawRectangle( new XLinearGradientBrush( bounds, XColor.FromKnownColor(XKnownColor.Red), XColor.FromKnownColor(XKnownColor.White), XLinearGradientMode.ForwardDiagonal), bounds); graphics.DrawString( "Hello World!", new XFont("Arial", 20), XBrushes.Black, bounds.Center, XStringFormats.Center); document.Save("test.pdf"); document.Close(); } 

如何在矩形顶部渲染文本?

我发现之后绘制的任何图像都会出现在矩形的顶部。 这是唯一隐藏的文字。

试试这样:

 using (var document = new PdfDocument()) { var page = document.AddPage(); var graphics = XGraphics.FromPdfPage(page, XGraphicsPdfPageOptions.Append); graphics.SmoothingMode = XSmoothingMode.HighQuality; var bounds = new XRect(graphics.PageOrigin, graphics.PageSize); var state = graphics.Save(); graphics.DrawRectangle( new XLinearGradientBrush( bounds, XColor.FromKnownColor(XKnownColor.Red), XColor.FromKnownColor(XKnownColor.White), XLinearGradientMode.ForwardDiagonal), bounds); graphics.Restore(state); graphics.DrawString( "Hello World!", new XFont("Arial", 20), XBrushes.Black, bounds.Center, XStringFormats.Center); document.Save("test.pdf"); document.Close(); } 

不幸的是,根据这篇论坛post ,图书馆的代码中存在一个错误。 解决方法是在操作之间SaveRestore XGraphics对象的状态。

使用当前版本的PDFsharp 1.50时,第一篇文章中给出的代码工作正常。

当使用PDFsharp版本1.3x或更早版本时,需要在上一个答案中给出的解决方法。