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

関連記事

Teigha改めODAでDWGをDXFに変換するプログラムをつくってみよう!【Part.1】

Teigha改めODA(Open Design Alliance)は有料のライブラリー。商用利用するならば、最低でも年間1500ドル(初年度2000ドル)を要する。この場合、配布本数が100本に限られ …

PDFアレコレでPDF暗号化(セキュリティ設定)の第一歩を踏み出した

PDFアレコレをバージョンアップ。約2か月ぶり。 Ver3.01 2020/7/26 ・セキュリティ設定を変更できるようにした。読取パスワード、編集パスワード、編集許可の各種項目が設定可能。  暗号化 …

no image

random

JavaScriptと格闘してみたよ。 テーマはランダム。 10個の画像の中から、任意の3個の画像をWebサイトに表示する、 ってのが要求仕様。 Math.floor(Math.random() * …

デュアルモニターでツールバーをドラッグすると枠非表示で残像が出る

デュアルモニター環境で、MFCで作ったアプリをメインモニター側に出して、アプリのツールーバー(CToolBar)をドラッグすると、枠がメインモニター側に表示されずに、サブモニター側に枠と残像が表示され …

PDFアレコレはiTextSharp7も組み込むことにする

PDFiumViewerを使ってPDFアレコレという名のフリーソフトを作ってみたわけだが、PDFiumViewerの限界が見えてきた。