2016-01-21 82 views
1

我使用PDFsharp生成一個從無到有的PDF文檔中的文本。我正在嘗試在漸變填充矩形的頂部寫入文本。生成文檔後,漸變顯示在文本頂部,使文本完全隱藏。PDFsharp繪製在圖形

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

如何使文本呈現在矩形的頂部?

我發現我後來畫任何圖像將出現在矩形的頂部。這只是隱藏在後面的文字。

回答

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在庫的代碼中的錯誤。 解決方法是SaveRestore操作之間的XGraphics對象的狀態。

+0

太棒了!這也解決了我在使用alpha通道時遇到的問題。謝謝! –

+0

使用當前版本的PDFsharp(1.50,去年發佈)時,不需要解決方法。那些想要堅持版本1.3x的人必須使用解決方法。 –

1

在第一篇文章中給出的代碼中使用PDFsharp,1.50的當前版本時,工作正常。當使用PDFsharp版本1.3倍或更早需要

在以前的答案給出的解決方法。

+0

太棒了!當重建樣品我只是用下面的NuGet包,我認爲是最新的:https://www.nuget.org/packages/PdfSharp/ –

+1

添加的NuGet頁面的頂部是一張紙條,上面有更新版本,並在該頁面的底部是一個包含詳細信息的列表。 –

+0

是在測試版v1.50? Visual Studio的NuGet Package Manager將1.32.2602作爲2012年2月16日發佈的最新穩定版本。 –