CAD日記

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

ソフト開発

PDFアレコレにページ挿入機能を追加

投稿日:

PDFアレコレのページ挿入機能とちょっとした不具合修正。
Ver2.08 2020/5/6
・ページ挿入に対応した。指定したページの前に、指定したPDFファイルまたは空白ページを挿入できる。指定ページに最終ページを指定すれば最後に追加できる。
・プロパティ画面にキャンセルボタンを追加した。(OKボタンだと常に更新していたため)
・PDFを編集した際、%Temp%フォルダに作業用のPDFが残っていたので削除するようにした。
詳細はコチラ。

ページ挿入のUIは以下の通り。

位置として指定したページの前に挿入することとして、挿入対象をファイルか空白ページとして指定する。
ファイルとすれば、OKボタンを押した後にPDFファイルを指定して挿入する。位置はコンボボックス形式として、内容は全ページ分の数値と最終ページ。初期値はプレビュー画面で表示していたページ。最終ページという選択を可能としたのがポイントで、これによりPDF内のどこにでもページを挿入できる仕様とした。
空白ページとすれば、内部処理で空白ページを作っている。空白ページの用紙サイズは、プレビュー画面で表示していたページのサイズとした。空のページを追加したいのはヤマヤマだったが、オブジェクトを何も追加しないと0バイトのPDFになってしまったので、何も見えないオブジェクトとしてArialの半角スペース文字を追加しておいた。

以下、iTextSharpをC#で組んでいる人でPDFページ挿入をしようという人に参考になるかと思って、ソースコードを公開しておく。
PDFの空ページを作る処理。空ページを作るために半角スペースの文字を入れているが、文字フォントが埋め込まれて20kbほどのサイズになるのが難点。空ページにするために何かをいれなきゃいけないのはいいとして、それを何にするのか。。今後検討の上、改善していこう。

ページ挿入処理。PdfCopyというクラスを使うのがポイント。挿入位置による分岐処理が美しくない。考え方として(selpageの値によって)3つのケースに分けたのはいいんだけど、そもそもケース分けは必要なかったか。元PDFの前半、挿入するページ、元PDFの後半というように3つのブロック分けて、selpageの値によって1つ目と3つ目のいずれかをやらないようにすればよい。

-ソフト開発

執筆者:


comment

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

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

関連記事

no image

ペーパーモデル化ツール3

3年半の沈黙を経て、ペーパーモデル化ツールのバージョンアップが行われた。 とりあえずはVectorにアップロードされただけであり、販促活動はこれから 本格的に行われていくはずだ。 興味がある人は、以下 …

C#でzip圧縮と解凍したりasync/awaitで非同期処理をするソースコード公開

zipcopyという名の開発プロジェクトはここらで終わりにしようと思い至ったので、そのソースコードを公開する。 zipcopyのソースコード 開発環境はVisualStudio 2017 C#で、Nu …

PDFアレコレはこんなところが落としどころかね

この3連休はPDFiumを使ったサンプルアプリ作成に取り組んでいて、まぁそこそこの感じにできあがったのでここらでいったん完成としておく。

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

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

no image

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

CArrayで配列の配列(ネスト)を実現したいことがよくある。 シンプルにこんなことやると、ビルドエラーになる。

一方、こんなふうにする …