チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル»C++»Spire.PDF for C++»透かし»C++:PDF ドキュメントに画像透かしを追加する方法
2023-03-16

C++:PDF ドキュメントに画像透かしを追加する方法

透かしとは、文書の内容の後ろに表示される薄い色のテキストや画像のことで、文書の状態(機密、下書きなど)を示したり、会社のロゴを暗黙のうちに表示するために使用することができます。 透かしは、文書の出所を示すのに役立ち、無許可のコピーや再配布を避けることができます。 この記事では、Spire.PDF for C++ を使用して PDF 文書に画像透かしを追加する方法について説明します。

Spire.PDF for C++ をインストールします

Spire.PDF for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。

Spire.PDF for C++ を C++ アプリケーションに統合する方法

PDF 文書に単一の画像透かしを追加する

SpriePDF for C++ は、PdfPageBase->GetCanvas()->DrawImage() メソッドを提供し、PDF ページ上の任意の場所に画像を描画します。 そして、画像が文書の内容を覆い隠さないように、画像の透明度を調整することができます。 単一の画像透かしを追加する操作手順は以下の通りです。

  • PdfDocument のオブジェクトを作成します。
  • PdfDocument->LoadFromFile() メソッドを使用して、PDF ファイルを読み込みます。
  • PdfImage::FromFile() メソッドを使用して画像を読み込みます。
  • 文書ページをループして透かしを描画します。
  • PdfDocument->GetPages()->GetItem() メソッドを使用して、指定されたページを取得します。
  • PdfPageBase->GetCanvas()->SetTransparency() メソッドを使用して、透明度を設定します。
  • PdfPageBase->GetCanvas()->DrawImage() メソッドを使用して、ページ上に画像を描画します。
  • PdfDocument->SaveToFile() メソッドを使用して、ドキュメントを保存します。
  • C++
#include "Spire.Pdf.o.h"

using namespace Spire::Pdf;

int main()
{
	//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;
}

C++:PDF ドキュメントに画像透かしを追加する方法

PDF 文書にタイル状の画像透かしを追加する

PdfTilingBrush クラスは、タイリングブラシを表し、領域を埋めるためにタイリングパターンを生成することができます。 以下は、タイル状の画像透かしを挿入するための詳細な手順です。

  • カスタムのメソッド InsertTiledImagetWatermark(PdfPageBase* page, PdfImage* image, int rowNum, int columnNum) を作成して、PDF ページにタイル状の透かしを追加します。 パラメータ rowNum と columnNum を通して、タイル状の透かしの行と列の数を指定することができます。
  • PdfDocument のオブジェクトを作成します。
  • PdfDocument->LoadFromFile() メソッドを使用して、PDF 文書を読み込みます。
  • ドキュメント内のすべてのページをループし、カスタムメソッド InsertTiledImageWatermark() を呼び出して、各ページに透かしを追加します。
  • PdfDocument->SaveToFile() メソッドを使用して、ドキュメントを保存します。
  • C++
#include "Spire.Pdf.o.h"

using namespace Spire::Pdf;

void InsertTiledImageWatermark(PdfPageBase* page, PdfImage* img, int row, int column) {
    //タイルブラシを作成する
    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()
{
    //PdfDocumentのオブジェクトを作成する
    PdfDocument* pdf = new PdfDocument();

    //PDFファイルを読み込む
    pdf->LoadFromFile(L"C:/私たちの間の距離.pdf");

    //画像を読み込む
    PdfImage* img = PdfImage::FromFile(L"C:/Logo.png");

    //ページをループする
    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 ドキュメントに画像透かしを追加する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Read 551 times