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

プロパティシート

ソフト開発の話です。 私はVC6でソフトを作ってます。 ダイアログボックスの作りこみは、おもしろいものです。 プログラマーにとっては、デザイン的センスを問われる分野ですかね。 プロパティシートとは、ペ …

no image

CArrayで配列の配列(ネスト)を実現する方法

CArrayで配列の配列(ネスト)を実現したいことがよくある。 シンプルにこんなことやると、ビルドエラーになる。 typedef struct { // 構造体 CStringArray m_ary; …

PDFium ViewerによるPDFレンダリングがイケてる

PDFが電子ペーパーの絶対的な標準になったなか、PDFをプログラムであつかうのがとても簡単になってきた。

no image

イテレータ(Iterator)

あるコンポーネントで初めて出会いました。コンポーネントがバージョンアップされたときに、オブジェクト指向的な作りに一新されて、いろいろ変わったのですが中でもイテレータという訳の分からないものに遭遇して、 …

PDFiumはPDFからテキスト抽出するのもちょー簡単

PDFiumを語るのに日本語はいらない。プログラマーはプログラム言語で語る。PDFiumの処理は、tryとfinallyのところだけを見てくれればよい。たったこれだけでPDFからテキストを抽出できるの …