PDFsharp在图形下绘制文字
PDFsharp draws text under graphics
我正在使用 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();
}
不幸的是,根据 this forum post,库代码中存在错误。
解决方法是 Save
和 Restore
XGraphics
对象在操作之间的状态。
第一个 post 中给出的代码在使用当前版本的 PDFsharp 1.50 时工作正常。
当使用 PDFsharp 版本 1.3x 或更早版本时,需要使用上一个答案中给出的解决方法。
我正在使用 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();
}
不幸的是,根据 this forum post,库代码中存在错误。
解决方法是 Save
和 Restore
XGraphics
对象在操作之间的状态。
第一个 post 中给出的代码在使用当前版本的 PDFsharp 1.50 时工作正常。
当使用 PDFsharp 版本 1.3x 或更早版本时,需要使用上一个答案中给出的解决方法。