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

WinMergeのフィルタ

【2018/11/24追記】 この書きっぷりではあまりにもわかりずらいので、整理して追加情報を加えて新たな記事とした。 WinMegeのフィルタについて今すぐ知りたいならココを読め プログラマにとって …

マルチスレッドプログラミング(C#編)

マルチスレッドプログラミング(C++編) マルチスレッドプログラミング(VB.net編) に続く第三弾はC#編。

【C#プログラミング】pictureBoxとBitmapで画面ズームと画面移動機能を実装したい

PDFアレコレでPDFを描画するために利用しているのがpictureBox。とっても便利なクラスで、PDFiumのでRenderした結果であるImageを渡すだけで済んでいる。こんな感じで。。 pic …

高速なPDFビューアをC#とPDFiumでサクっと作ってみよう!

どんなPDFビューアを作ったのかというと、こんなモノ。 開いたPDFがCADの図面っぽいが、れっきとしたPDFファイルであり、ベクトル情報をちゃんと表現しているかを明らかにしたかったので使ったデータ。 …

no image

いたちごっこ3

開発者の考えた対策は空しく敗れ、3度目の戦いが始まるところから話は始まります。 ●3度目のクラック 開発者の考えたトラップに、クラッカーは見事に”はまって”くれました。でも、依 …