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

PDFの用紙サイズはポイントで表現されている

PDFの用紙サイズをiTexSharpで取得したら、mmでもinchでもない、 謎の数値が得られたので、調べてみたらポイントという単位だった。 ポイントとは、WordやEXCELで文字の大きさを指定す …

no image

アプリでzip圧縮と解凍をやりたくてzlibを組み込んでみたんだけど。。

でかいファイルは、圧縮してコンパクトに扱いたくなる。 テキスト形式で定義されているファイルをアプリで読み書きする。 テキストは圧縮すれば1/5くらいになるので、その結果小さくなった ファイルをアプリの …

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

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

zipcopy Ver1.02リリース

昨日に引き続きリビジョンアップを実施して、Ver1.02とした。 Ver1.02での変更点は以下の通り。 ・7zipを使わずに、DotNetZipの機能で圧縮・解凍を行えるようにした。 ・ファイル削除 …

no image

テキストファイルの最大行数

【2018/12/24追記】以下の記事も参考になるかな。 扱えるテキストファイルの最大行数は1億行 バカでかいテキストファイルを作る必要があって、結果約2GBにもなった。 CADから出力するんだけど、 …