簡體   English   中英

如何在PDFsharp中添加圖像水印?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM