PDFsharp рисует текст под графикой

Я использую PDFsharp для создания PDF-документа с нуля. Я пытаюсь написать текст поверх прямоугольника, заполненного gradleиентом. После создания документа gradleиент появляется поверх текста, полностью скрывая текст.

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(); } 

К сожалению, в коде библиотеки есть ошибка в этом сообщении форума . Обходной путь заключается в Save и Restore XGraphics объекта XGraphics между операциями.

Код, указанный в первом сообщении, отлично работает при использовании текущей версии PDFsharp, 1.50.

Обходной путь, указанный в предыдущем ответе, необходим при использовании PDFsharp версии 1.3x или более ранней версии.