我正在使用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();
}
如何在矩形顶部渲染文字?
我发现之后绘制的任何图像都会出现在矩形的顶部。这是唯一隐藏的文字。
答案 0 :(得分:1)
试试这样:
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();
}
不幸的是,根据this forum post,库的代码中存在一个错误。
解决方法是Save
和Restore
XGraphics
对象在操作之间的状态。
答案 1 :(得分:1)
使用当前版本的PDFsharp 1.50时,第一篇文章中给出的代码工作正常。
使用PDFsharp版本1.3x或更早版本时,需要在上一个答案中给出的解决方法。