[英]How to add an image watermark in PDFsharp?
所有示例都展示了如何使用PDFsharp添加文本水印。 但是,如果我需要添加圖像水印怎么辦?
我這樣做:
if (!String.IsNullOrEmpty(_logo) && System.IO.File.Exists(_logo))
{
XImage logo = XImage.FromFile(_logo);
XRect rectLogo = new XRect(0, 0, page.Width, page.Height);
rectLogo.Scale(0.5, 0.5);
gfx.DrawImage(logo, rectLogo);
}
出現圖像,但不顯示水印。
編輯:
我終於手動放置了水印,但是,還有另一件事需要解決。 如何更改XImage的不透明度? 我可以通過使用圖像處理器來做到這一點,但這不是主意。 這是一款將使用普通用戶的軟件,我無法告訴他在將其分配為水印之前先對其進行修改。 有什么解決辦法嗎?
這是當前的代碼:
if (!String.IsNullOrEmpty(_logo) && System.IO.File.Exists(_logo))
{
XImage logo = XImage.FromFile(_logo);
double width = logo.PointWidth;
double height = logo.PointHeight;
double ratio = width / height;
if (width > page.Width.Point * 0.5)
{
width = page.Width.Point * 0.5;
height = width / ratio;
}
else if (height > page.Height.Point * 0.5)
{
height = page.Height.Point * 0.5;
width = height * ratio;
}
double offsetX = (page.Width.Point - width) / 2;
double offsetY = (page.Height.Point - height) / 2;
XRect rectLogo = new XRect(offsetX, offsetY, width, height);
gfx.DrawImage(logo, rectLogo);
}
PDFSharp的Watermark示例的問題在於,它們沒有使用PDF 1.6
版本( 參考 )中引入的真實水印功能。 這些示例使用XGraphics
對象在現有內容下繪制,但這只是一個偽造的水印。 這是文檔中的直接報價:
注意:從技術上講,此樣本中的水印是簡單的圖形輸出。 它們與PDF 1.5中引入的水印注釋無關。
請注意,Adobe的官方參考資料指出,水印注釋是在PDF 1.6中引入的,因此PDFSharp的文檔中似乎存在錯誤。
不幸的是,無論PDFSharp是否支持真實的水印,我都沒有可靠的消息來源,但是我還沒有看到任何證明。 事實是,完全支持PDF 1.4
版本,並且僅部分支持它上面的所有內容。
像往常一樣,計算機會執行您告訴他的操作,而不是您要他執行的操作。
如果要使圖像位於其他內容之下,請首先進行繪制。
如果要具有半透明圖像,請使用透明圖像或使用透明圖像繪制。 在這種情況下,您可以將圖像放置在頁面的所有其他內容之上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.