C++實現添加圖片水印到PDF文檔
水印是顯示在文檔內容后面的淡色文字或圖片,可以用于指示文檔的狀態(tài)(保密、草稿等),也可以含蓄地展示公司徽標。水印有助于提示文檔的來源,從而避免未經允許的復制和轉發(fā)。本文將介紹如何使用 Spire.PDF for C++ 在 PDF 文檔中添加圖片水印。
安裝 Spire.PDF for C++
有兩種方法可以將 Spire.PDF for C++ 集成到您的應用程序中。一種方法是通過 NuGet 安裝它,另一種方法是從我們的網站下載包并將庫復制到您的程序中。通過 NuGet 安裝更簡單,更推薦使用。您可以通過訪問以下鏈接找到更多詳細信息。
如何將 Spire. PDF for C++ 集成到 C++ 程序中
添加單一圖片水印到 PDF 文檔
Sprie.PDF for C++ 提供的 PdfPageBase->GetCanvas()->DrawImage() 方法可以在 PDF 頁面的任意位置繪制圖片,而通過對圖片的透明度進行調節(jié)可以實現淡色效果,使其不覆蓋文檔內容。添加單一圖片水印的操作步驟如下:
- 創(chuàng)建 PdfDocument 的對象。
- 使用 PdfDocument->LoadFromFile() 方法載入 PDF 文件。
- 使用 PdfImage::FromFile() 方法載入圖片。
- 循環(huán)遍歷文檔頁面以繪制水印。
- 使用 PdfDocument->GetPages()->GetItem() 方法獲取指定頁面。
- 使用 PdfPageBase->GetCanvas()->SetTransparency() 方法設置透明度。
- 使用 PdfPageBase->GetCanvas()->DrawImage() 方法將圖片繪制在頁面上。
- 使用 PdfDocument->SaveToFile() 方法保存文檔。
#include "Spire.Pdf.o.h"
using namespace Spire::Pdf;
int main()
{
//創(chuàng)建PdfDocument的對象
PdfDocument* document = new PdfDocument();
//載入PDF文件
document->LoadFromFile(L"C:/我們之間的距離.pdf");
//載入圖片
PdfImage* img = PdfImage::FromFile(L"C:/Logo.png");
//獲取圖片的高度和寬度
int imageWidth = img->GetWidth();
int imageHeight = img->GetHeight();
for (int i = 0; i < document->GetPages()->GetCount(); i++)
{
//獲取指定頁面
PdfPageBase* page = document->GetPages()->GetItem(i);
//獲取頁面的高度和寬度
float pageWidth = (float)(page->GetActualSize()->GetWidth());
float pageHeight = (float)(page->GetActualSize()->GetHeight());
//設置透明度
page->GetCanvas()->SetTransparency(0.3f);
//將圖片繪制在頁面中央
page->GetCanvas()->DrawImage(img, pageWidth / 2 - imageWidth / 2, pageHeight / 2 - imageHeight / 2, imageWidth, imageHeight);
}
//保存文檔
document->SaveToFile(L"Output/單一圖片水印.pdf");
document->Close();
delete document;
}
添加平鋪圖片水印到 PDF 文檔
PdfTilingBrush 類表示平鋪畫筆,可以生成重復平鋪圖案來填充區(qū)域。以下是插入平鋪水印的詳細操作步驟:
- 創(chuàng)建一個自定義方法 InsertTiledImagetWatermark(PdfPageBase* page, PdfImage* image, int rowNum, int columnNum) 來添加平鋪水印到 PDF 頁面??赏ㄟ^參數 rowNum 和 columnNum 來指定平鋪水印的行數和列數。
- 創(chuàng)建 PdfDocument 的對象。
- 使用 PdfDocument->LoadFromFile() 方法載入 PDF 文檔。
- 遍歷文檔中的所有頁面,并調用自定義方法 InsertTiledImageWatermark() 來給每一頁添加水印。
- 使用 PdfDocument->SaveToFile() 方法保存文檔。
#include "Spire.Pdf.o.h"
using namespace Spire::Pdf;
void InsertTiledImageWatermark(PdfPageBase* page, PdfImage* img, int row, int column) {
//創(chuàng)建平鋪筆刷
PdfTilingBrush* brush = new PdfTilingBrush(new SizeF(page->GetCanvas()->GetSize()->GetWidth() / (int)(row), page->GetCanvas()->GetSize()->GetHeight() / (int)(column)));
//設置透明度
brush->GetGraphics()->SetTransparency(0.3);
//將圖片繪制在筆刷上
brush->GetGraphics()->DrawImage(img, new PointF((brush->GetSize()->GetWidth() - img->GetWidth()) / 2.f, (brush->GetSize()->GetHeight() - img->GetHeight()) / 2.f));
//使用筆刷將圖片繪制在頁面上
page->GetCanvas()->DrawRectangle(brush, new RectangleF(new PointF(0, 0), page->GetCanvas()->GetSize()));
}
int main()
{
//創(chuàng)建PdfDocument的對象
PdfDocument* pdf = new PdfDocument();
//載入PDF文件
pdf->LoadFromFile(L"C:/我們之間的距離.pdf");
//載入圖片
PdfImage* img = PdfImage::FromFile(L"C:/Logo.png");
//循環(huán)遍歷文檔頁面以添加水印
for (int i = 0; i < pdf->GetPages()->GetCount(); i++) {
//獲取一個頁面
PdfPageBase* page = pdf->GetPages()->GetItem(i);
//添加水印到頁面
InsertTiledImageWatermark(page, img, 3, 3);
}
//保存文檔
pdf->SaveToFile(L"Output/平鋪圖片水印.pdf");
pdf->Close();
delete pdf;
}
到此這篇關于C++實現添加圖片水印到PDF文檔的文章就介紹到這了,更多相關C++ PDF添加圖片水印內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
strings命令分析淺談Go和C++編譯時的一點小區(qū)別
今天小編就為大家分享一篇關于strings命令分析淺談Go和C++編譯時的一點小區(qū)別,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-04-04

