国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

如何通過C++ 給PDF文檔添加文字水印

這篇具有很好參考價值的文章主要介紹了如何通過C++ 給PDF文檔添加文字水印。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

因PDF文檔具有較好的穩(wěn)定性和兼容性,現(xiàn)在越來越多的合同、研究論文、報告等都采用PDF格式。為了進一步保護這些重要文檔內(nèi)容免受未經(jīng)授權(quán)的復(fù)制或使用,我們可以添加水印以表明其狀態(tài)、所有權(quán)或用途。針對工作中可能出現(xiàn)的在 C++ 應(yīng)用程序中給 PDF 文檔添加文字水印的需求,本文將詳細展示如何通過第三方國產(chǎn)庫Spire.PDF for C++來實現(xiàn)這一功能。

?文章來源地址http://www.zghlxwxcb.cn/news/detail-746984.html

安裝 :?Spire.PDF for C++是一款國產(chǎn)獨立 PDF 控件,可實現(xiàn) C++ 程序中創(chuàng)建、讀取、操作、編輯和轉(zhuǎn)換 PDF 文檔。推薦的安裝方式是在Visual Studio 中通過NuGet搜索 “spire.pdf.cpp”,然后點擊下載將其安裝到程序中?;蛘呦螺d?Spire.PDF for C++?到本地,解壓后手動將庫復(fù)制到程序中。

?

在 PDF 文檔中添加單行文字水印

Spire.PDF for C++ 沒有提供直接在PDF中插入水印的接口或類,但可以通過在PDF頁面上繪制文本并設(shè)置其透明度來模擬添加文字水印的效果。主要步驟如下:

  1. 創(chuàng)建 PdfDocument 對象。
  2. 使用 PdfDocument->LoadFromFile() 方法加載示例 PDF 文檔。
  3. 使用 PdfDocument->GetPages()->GetItem() 方法獲取檔中的特定頁面。
  4. 使用 PdfPageBase->GetCanvas()->TraslateTransform() 方法將頁面坐標系平移至指定位置。
  5. 使用 PdfPageBase->GetCanvas()->RotateTransform() 方法將坐標系旋轉(zhuǎn)指定角度。(第四五步是為了確保水印以指定角度顯示在頁面中心位置。
  6. 使用 PdfPageBase->GetCanvas()->DrawString() 方法在PDF頁面上繪制文本水印。
  7. 使用 PdfDocument->SaveToFile() 方法保存結(jié)果文檔。

C++代碼:

#include "Spire.Pdf.o.h";
 
using namespace std;
using namespace Spire::Pdf;
 
int main()
{
 
    //創(chuàng)建PdfDocument對象
    intrusive_ptr <PdfDocument> doc = new PdfDocument();
 
    //加載PDF文件
    doc->LoadFromFile(L"協(xié)議.pdf");
 
    //創(chuàng)建TrueType字體
    intrusive_ptr <PdfTrueTypeFont> font = new PdfTrueTypeFont(L"黑體", 60.0f, PdfFontStyle::Bold, true);
 
    //創(chuàng)建筆刷
    intrusive_ptr <PdfBrush> brush = PdfBrushes::GetSkyBlue();
 
    //指定水印文本
    wstring text = L"內(nèi)部文件";
 
    //測量水印文本大小
    SizeF textSize = font->MeasureString(text.c_str());
 
    //計算兩個偏移量,用于計算坐標系的平移量
    float offset1 = (float)(textSize.GetWidth() * sqrt(2) / 4);
    float offset2 = (float)(textSize.GetHeight() * sqrt(2) / 4);
 
    //遍歷文檔中的頁面
    for (size_t i = 0; i < doc->GetPages()->GetCount(); i++)
    {
        //獲取指定頁面
        intrusive_ptr <PdfPageBase> page = doc->GetPages()->GetItem(i);
 
        //設(shè)置透明度
        page->GetCanvas()->SetTransparency(0.8);
 
        //將頁面坐標系平移至指定位置
        page->GetCanvas()->TranslateTransform(page->GetCanvas()->GetSize()->GetWidth() / 2 - offset1 - offset2, page->GetCanvas()->GetSize()->GetHeight() / 2 + offset1 - offset2);
 
        //逆時針旋轉(zhuǎn)坐標系45度
        page->GetCanvas()->RotateTransform(-45);
 
        //在頁面上繪制水印
        page->GetCanvas()->DrawString(text.c_str(), font, brush, 0, 0, new PdfStringFormat(PdfTextAlignment::Left));
    }
 
    //保存結(jié)果文檔
    doc->SaveToFile(L"Output\\文字水印.pdf");
    doc->Close();
}

?

單行水印效果:

如何通過C++ 給PDF文檔添加文字水印

?

在 PDF 文檔中添加多行文字水印

使用Spire.PDF for C++提供的 PdfTilingBrush 類可以實現(xiàn)平鋪水印效果。平鋪筆刷會生成一個平鋪圖案,用它重復(fù)填充指定圖形區(qū)域即可在 PDF 文檔中添加多行水印。主要步驟如下:

  1. 創(chuàng)建自定義方法 InsertTiledTextWatermark(intrusive_ptr <PdfPageBase> page, wstring watermarkText, intrusive_ptr <PdfTrueTypeFont> font, int rowNum, int columnNum)來為 PDF 頁面添加平鋪水印。(其中參數(shù) rowNum 和 columnNum 指定平鋪水印的行數(shù)和列數(shù))。
  2. 創(chuàng)建 PdfDocument 對象。
  3. 使用 PdfDocument->LoadFromFile() 方法加載 PDF 示例文檔。
  4. 遍歷文檔中的所有頁面,并調(diào)用自定義方法 InsertTiledTextWatermark() 將水印添加到每一頁。
  5. 使用PdfDocument->SaveToFile()方法保存結(jié)果文檔。

C++代碼:

#include "Spire.Pdf.o.h";
 
using namespace std;
using namespace Spire::Pdf;
 
static void InsertTiledTextWatermark(intrusive_ptr <PdfPageBase> page, wstring watermarkText, intrusive_ptr <PdfTrueTypeFont> font, int rowNum, int columnNum)
{
    //測量水印文本大小
    SizeF textSize = font->MeasureString(watermarkText.c_str());
 
    //計算兩個偏移量,用于計算坐標系的平移量
    float offset1 = (float)(textSize.GetWidth() * sqrt(2) / 4);
    float offset2 = (float)(textSize.GetHeight() * sqrt(2) / 4);
 
    //獲取頁面高度和寬度
    float height = page->GetActualSize()->GetHeight();
    float width = page->GetActualSize()->GetWidth();
 
    //創(chuàng)建平鋪筆刷
    intrusive_ptr <PdfTilingBrush> brush = new PdfTilingBrush(new SizeF(width / columnNum, height / rowNum));
    brush->GetGraphics()->SetTransparency(0.3f);
    brush->GetGraphics()->TranslateTransform(brush->GetSize()->GetWidth() / 2 - offset1 - offset2, brush->GetSize()->GetHeight() / 2 + offset1 - offset2);
    brush->GetGraphics()->RotateTransform(-45);
 
    //在筆刷上繪制水印文字
    brush->GetGraphics()->DrawString(watermarkText.c_str(), font, PdfBrushes::GetRed(), 0, 0, new PdfStringFormat(PdfTextAlignment::Left));
 
    //使用平鋪筆刷繪制一個覆蓋整個頁面的矩形
    page->GetCanvas()->DrawRectangle(brush, new RectangleF(new PointF(0, 0), page->GetActualSize()));
}
 
int main()
{
 
    //創(chuàng)建PdfDocument對象
    intrusive_ptr <PdfDocument> doc = new PdfDocument();
 
    //加載PDF文件
    doc->LoadFromFile(L"協(xié)議.pdf");
 
    //指定水印文本
    wstring text = L"內(nèi)部文件";
 
    //創(chuàng)建TrueType字體
    intrusive_ptr <PdfTrueTypeFont> font = new PdfTrueTypeFont(L"黑體", 30.0f, PdfFontStyle::Bold, true);
 
    //遍歷文檔中的頁面
    for (size_t i = 0; i < doc->GetPages()->GetCount(); i++)
    {
        //調(diào)用自定義方法來插入多行文本水印
        InsertTiledTextWatermark(doc->GetPages()->GetItem(i), text.c_str(), font, 3, 3);
    }
 
    //保存結(jié)果文件
    doc->SaveToFile(L"Output\\多行水印.pdf");
    doc->Close();
}

?

多行水印效果:

如何通過C++ 給PDF文檔添加文字水印

?

此外還可參考:C++給PDF文檔添添加圖片水印

?

到了這里,關(guān)于如何通過C++ 給PDF文檔添加文字水印的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Java給PDF文檔添加水印信息

    ? ? ? ? 在word生成pdf后,或者上傳pdf文件,用戶希望給pdf文檔添加水印信息,具體代碼如下 ? 一. 首先pom中需要引入 核心代碼如下,寫在某個 service 下面 用到的實體類 ?方法測試

    2024年02月09日
    瀏覽(28)
  • 使用itext7為pdf文檔添加水印

    iText7是一款功能強大的開源PDF處理庫,用于創(chuàng)建、編輯和處理PDF文檔。相比于iTextSharp,iText7具有更先進的功能和更好的性能。 添加水印是iText7的一個常見應(yīng)用場景。水印可以用于保護文檔的版權(quán),標識文檔的狀態(tài)或來源等。使用iText7添加水印可以通過以下步驟實現(xiàn): 導入

    2024年04月22日
    瀏覽(27)
  • C# 圖片轉(zhuǎn)PDF,PDF增加水印文字

    好久沒寫博客了,今天給大家分享一個圖片轉(zhuǎn)PDF的相關(guān)操作,也算是一次總結(jié)吧。 首先需要準備動態(tài)庫itextsharp.dll,這個dll去網(wǎng)上下載,都可以下載到,C#對PDF的操作都是基于這個類庫來實現(xiàn)的。話不多說,直接上代碼。

    2024年02月09日
    瀏覽(29)
  • Python操作Word水?。禾砑游淖只驁D片水印

    Python操作Word水?。禾砑游淖只驁D片水印

    在Word文檔中,可以添加半透明的圖形或文字作為水印,以保護文檔的原創(chuàng)性,防止未經(jīng)授權(quán)的復(fù)制或使用。除了提供安全功能外,水印還可以展示文檔創(chuàng)作者的信息、附加的文檔信息,或者僅用于文檔的裝飾。本文將介紹如何使用 Spire.Doc for Python 在程序中的輕松 添加文字和

    2024年02月08日
    瀏覽(24)
  • pdf添加水印

    pdf添加水印

    引入依賴 添加水印 添加字體文件到resouresFontsimsun.ttc 用到的字體文件(幼圓常規(guī),C盤Windows/Fonts目錄下 測試用例

    2024年02月07日
    瀏覽(22)
  • 如何使用ComPDFKit Web SDK添加在線編輯PDF文檔功能

    文檔編輯功能提供了一系列的操作頁面的能力,使用戶能夠控制文檔結(jié)構(gòu),并調(diào)整文檔的布局和格式,確保文檔內(nèi)容以合理有序的方式精準呈現(xiàn)。 ComPDFKit 文檔編輯的優(yōu)勢 插入或刪除頁面:?向文檔插入或刪除頁面,以滿足特定的排版要求。 文檔結(jié)構(gòu)調(diào)整:?調(diào)整頁面排列順

    2024年02月19日
    瀏覽(40)
  • 使用PyMuPDF添加PDF水印

    使用PyMuPDF添加PDF水印

    使用Python添加PDF水印的博客文章。 C:pythoncodenewpdfwatermark.py 在日常工作中,我們經(jīng)常需要對PDF文件進行處理。其中一項常見的需求是向PDF文件添加水印,以保護文件的版權(quán)或標識文件的來源。本文將介紹如何使用Python編程語言和PyMuPDF庫在PDF文件中添加水印。 在開始之前,確

    2024年02月11日
    瀏覽(43)
  • SpringBoot 實現(xiàn) PDF 添加水印

    SpringBoot 實現(xiàn) PDF 添加水印

    PDF(Portable Document Format,便攜式文檔格式)是一種流行的文件格式,它可以在多個操作系統(tǒng)和應(yīng)用程序中進行查看和打印。在某些情況下,我們需要對 PDF 文件添加水印,以使其更具有辨識度或者保護其版權(quán)。本文將介紹如何使用 Spring Boot 來實現(xiàn) PDF 添加水印的方式。 PDFBox

    2024年02月09日
    瀏覽(31)
  • SpringBoot實現(xiàn)pdf添加水印

    SpringBoot實現(xiàn)pdf添加水印

    在某些情況下,我們需要對 PDF 文件添加水印,以使其更具有辨識度或者保護其版權(quán)。本文將介紹幾種方案來實現(xiàn)PDF添加水印。 git地址:https://gitee.com/ninesuntec/pdf-add-watermark PDFBox 是一個流行的、免費的、用 Java 編寫的庫,它可以用來創(chuàng)建、修改和提取 PDF 內(nèi)容。PDFBox 提供了許

    2024年02月13日
    瀏覽(21)
  • 如何通過Java代碼將 PDF文檔轉(zhuǎn)為 HTML格式

    如何通過Java代碼將 PDF文檔轉(zhuǎn)為 HTML格式

    雖然PDF文件適合用于打印和發(fā)布,但不適合所有類型的文檔。例如,包含復(fù)雜圖表和圖形的文檔可能無法在PDF中呈現(xiàn)得很好。但是HTML文件可以在任何可運行瀏覽器的計算機上進行閱讀并顯示。并且HTML還具有占用服務(wù)器資源較小,便于搜索引擎收錄的特點。那么今天這篇文章就

    2024年02月05日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包