CAD日記

主にAutoCADのことについて書いているけど、近頃は投資系ネタに注力している。自動売買、仮想通貨、PC関係、プログラミングなど。@caddiary

ソフト開発

PDFに捺印できるようにしたPDFアレコレを公開

投稿日:2020年3月15日 更新日:

半年ぶりにPDFアレコレをバージョンアップ。変更点は以下の通り。

Ver2.01 2020/3/15
・プレビューからの捺印機能に対応。捺印用データはとりあえずpdfのみで配置点が固定。
 ※そのうち、捺印データに画像や自作の捺印データで捺印できるようにしたい。
 ※画面でクリックした点をPDFの座標系に落とし込めればいいのだが。。
 ※Web任印は以下サイトで作るとよい。できるPDFが4MBとデカイのが難点。
  http://www.hakusyu.com/webmtm/
詳細はコチラ。

上でも少し触れたように、PDFに捺印できるようにした。はっきり言ってまだ実用に耐えないが、とにかくPDFに捺印できることを示したくて中途半端でも公開した。課題が多いのでこのあたりについては近々対応を進めていく。PDFiumの描画エンジンとiTextSharpのPDF編集が組み合わさると、こんなにアレコレできるんだということを今後も明らかにしていきたいぞ。

以下は、編集対象のPDFに対して捺印用のPDFを配置している処理。AddTemplateで100と150なんて固定値を入れているから、決まったところにしか配置してしまう。引数のpntがスクリーン座標なんで、これをPDFの座標に変換できればいけるんだけどその法則性がまだわかっていない。今後の調査で明らかにしていく。

public bool Natsuin(ref string file, int pno, string strNtin, Point pnt)
{
	string temp = uty.GetTempPDFName();
	bool stat = true;
	PdfReader reader = new PdfReader(file);
	PdfReader ntin = new PdfReader(strNtin);
	try
	{
		int pagesCount = reader.NumberOfPages;
		if (0 < pno && pno <= pagesCount)
		{
			PdfStamper stamper = new PdfStamper(reader, new FileStream(temp, FileMode.Create));
			PdfImportedPage page = stamper.GetImportedPage(ntin, 1);
			stamper.GetImportedPage(reader, pno);
			stamper.GetOverContent(pno).AddTemplate(page, 100, 150);
			stamper.Close();
		}
		else
		{
			stat = false;
			MessageBox.Show("ページが範囲外");
		}
	}
	catch (PdfException ex)
	{
		stat = false;
		MessageBox.Show(string.Format("捺印に失敗({0})", ex.Message));
	}
	finally
	{
		reader.Close();
		ntin.Close();
		if (stat)
		{
			uty.FileDelete(file);
			file = temp;
		}
	}
	return stat;
}

-ソフト開発

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

VC2017でWindowsの環境変数を取得する方法

C++のUnicodeプロジェクトにおいて、_wgetenvでWindowsの環境変数が取得できるのはわかる。 こんなソースがあって、ビルドしたらエラーになった。 void CMFCApplicati …

no image

BMPをJPEGに

ビットマップ(BMP)ファイルをJPEGファイルに変換できないものか。 そんなテーマが頭の中で渦巻いていた。 既存のアプリ(フリーソフトなど)を使えば簡単だが、 プログラム的にやるとなると、なかなか。 …

no image

UNICODE対応プログラム

開発環境:VC6 プリプロセッサの定義に、UNICODE,_UNICODEを追加。(_MBCSをカット) EXEの場合は、エントリポイントシンボルにwWinMainCRTStartupを記述。 ・ch …

no image

PDF印刷のアプリ指定

PCにAdobe ReaderとAcrobatの両方が入っている場合、PDFファイルを 右クリックメニューから印刷ってやると、どっちで印刷されるのか? Windows XPまでは、拡張子の関連付けのと …

PDFファイルを扱うプログラミング用ライブラリ一覧

以下の記事がよく読まれているみたいなので、もっと幅広く「PDFファイルを扱うプログラミング用ライブラリ一覧」という本記事を書いてみる気になった。 iTextSharpのバージョンとライセンスが難しい …