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 を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

C++

プログラム言語で唯一まともに使えるのがC++だったりするおいらなわけだが、 C++のことをずいぶん知っているかというとそうでもなかったりする。 absという関数があって、絶対値を求めるものだっていうの …

no image

UNICODE対応プログラム

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

zipcopy Ver1.07リリース

zipcopyをリビジョンアップして、Ver1.07とした。 詳細は以下の通り。 Ver1.07 2020/3/1 ・zip圧縮と解凍、ファイルコピーと削除処理についてスレッド化して、これら処理中にダ …

Hyper-Vのvhdxを圧縮するのはPowerShellでやるんだけど、その自動化手法がおもしろいじゃん(3)

vhdを手軽に圧縮できるPowerShellプログラムの決定版。 まずは、前回考えたことを振り返る。。 ps1内のvhdのファイルパスを自分で書き変えなきゃいけないのが難点だから、ps1と同じ場所にあ …

PDFアレコレVer1.01リリース

趣味のプログラムってホント楽しくて、平日の夜中だってのに眠りを忘れて取り組んでしまった。