【发布时间】:2014-05-29 11:28:28
【问题描述】:
我目前正在使用 PdfSharp 创建一个 PDF,其中主要包含文本和一些图像。 文本元素有不同的颜色。我的问题是,一旦我使用与开始使用的颜色不同的颜色,文本在生成的 PDF 中不可见(例如,我从黑色文本开始,切换到红色文本,红色文本不可见)。所有文本元素都在生成的 PDF 中(我可以选择它们),但红色元素是不可见的。
代码如下:
// Create a new PDF document with one page
var document = new PdfDocument();
var page = document.AddPage();
page.Width = 800;
page.Height = 600;
var defaultFont = new XFont("Arial", 12, XFontStyle.Regular, new XPdfFontOptions(PdfFontEmbedding.Always));
var gfx = XGraphics.FromPdfPage(page);
// black text
gfx.DrawString("black", defaultFont, XBrushes.Black, new XRect(x, y, width, height), XStringFormats.Center);
// red text
gfx.DrawString("red", defaultFont, XBrushes.Red, new XRect(x2, y2, width2, height2), XStringFormats.Center);
我已经找到了一个解决方案(重新创建 XGraphics 对象),但它很安静,因为每次颜色更改后都需要调用它:
// ...
// black text
gfx.DrawString("black", defaultFont, XBrushes.Black, new XRect(x, y, width, height), XStringFormats.Center);
// disposing the old graphics context and creating a new one seems to help
gfx.Dispose();
gfx = XGraphics.FromPdfPage(page);
// red text
gfx.DrawString("red", defaultFont, XBrushes.Red, new XRect(x2, y2, width2, height2), XStringFormats.Center);
我想有更好的解决方案,但我还没有找到。
编辑
正如answer 中所建议的,我想创建一个 SSCCE。在创建过程中,我发现了实际的错误。我没有使用XBrushes.Red,而是使用了自己定义的XBrush,但在上面的代码sn-p中没有提到它,因为我认为没有必要。
【问题讨论】: