概要
過去の投稿で PDF SHARP を利用し、スタンプPDF作成・Acrobat Reader DC にスタンプ登録する方法について紹介しました。つい2~3日前ですが、Acrobat Reader DCに「クリップボード画像をスタンプとして貼り付ける」という機能があることを発見しました。PDFスタンプを作成、登録するのは複雑とまでは言いませんが、日付印など日々登録する場合などは少し面倒だと思います。
クリップボードから、スタンプとして画像を貼り付ける方法を確認してみました。
スタンプの利用目的・課題など
過去の投稿でPDF SHARPを使い、PDFへの画像挿入も試みていますが、スタンプの長所としては人が任意の位置に押印・移動など出来ることだと思います。様式の位置ずれ等により自動化が困難な場合や人に確認させる目的などのケースがあると思いますが、登録など準備は簡素化したいので、クリップボードから貼り付けられることはよいと思います。
一方、スクリーンキャプチャーなどによるクリップボード画像は、元の画像の透明情報を持っていないので、下図の様に周辺も塗り潰してしまいます。今回はこの透明情報をクリップボードにコピーする方法を確認しています。
利用手順
今回 試作したクリップボード貼り付けプログラム(下図左)で「クリップボードにコピー」ボタンを押すとコピーされます。但し、この段階でPDFに貼り付けることは出来ません。下図中央の様なアラームがPCスクリーン右下に表示されます。Acrobat Reader側は、下右図の様にメニューがクリック出来ない様になっています。
根拠ない勝手な思い込みですが、Officeクリップボードサポート形式に出来ると直接PDFに貼り付け出来ると思っています。結局、プログラムでサポート形式に変換することは出来ませんでした。
Acrobat Reader DC の PDF上に直接、画像を貼り付けることは出来ませんが、一旦 Officeソフト(Word、Excel、PowerPoint)に貼りつけ([Ctrl+V] 等)、画像選択状態でコピー([Ctrl+C] 等)すると、Acrobat Reader DCの「クリップボード画像をスタンプとして貼り付ける」メニューが有効になり、クリック出来る様になります。クリックするとマウスカーソルがスタンプ形状になり、PDF上の任意位置で押印可能になります。
但し、Wordの場合は、1:1の大きさでコピーされますが、Excel,PowerPoint は、なぜかスタンプが巨大化するのでかなり扱いにくいです。
プログラム
クリップボード貼り付けプログラムコードです。
private void button1_Click(object sender, EventArgs e)
{
System.IO.MemoryStream memorystream = new System.IO.MemoryStream();
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(pictureBox1.Image);
//bitmap.MakeTransparent(Color.White);
bitmap.Save(memorystream, System.Drawing.Imaging.ImageFormat.Png);
System.Windows.Forms.IDataObject dataobject = new DataObject();
dataobject.SetData("PNG", true, memorystream);
Clipboard.SetDataObject(dataobject, true);
bitmap.Dispose();
memorystream.Dispose();
}
関連確認事項
Word 等、Officeソフトに画像挿入時、いつも挿入後、折り返し設定していましたが、デフォルト設定できることを今回知りました。「ファイル」-「オプション」-「詳細設定」で選択します。
まとめ
大きいスタンプはあまり気になりませんが、小さいものは貼り付け時の画像劣化が気になります。少し PDF Sharpスタンプは登録手順が増えるのですが、画質はきれいなんですよね。でも、使える文字フォントは少ない・・・。なかなか、完璧は難しいです。
関連投稿
① C# PDF Sharp でPDFスタンプを作る
https://kats-eye.net/info/2020/07/01/pdf-stamp/
② C# PDF Sharp を使う
https://kats-eye.net/info/2020/07/04/pdf-sharp/