CAD日記

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

ソフト開発

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

投稿日:2018年9月17日 更新日:

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

今回からx64 OSでしか動作しない仕様とした。x86でも動くのは確認しているんだが、いかんせんPDFiumのdllがデカいから都度アップしているとサーバーの容量を食ってしょうがないから。
PDFアレコレ紹介ページ

何を変えたかってことでは。。。
・ファイルオープン/クローズを画像変換や描画などの処理から切り分けた
・処理結果をログ形式にして積み上げていくことにした
・画像変換でメモリーを無駄に消費していたので都度解放するようにした
・描画時にマウスホイールでページ移動できるようにした
・描画時にPDFの用紙サイズを表示した

C#のようなmanagedの言語をガッツり使うのは初めてなもんで、メモリーの扱いにとまどった。unmanagedであれば、取得したメモリーは明示的に開放しなければならないし、クラスの中で取得しているメモリーはスコープを抜けたら解放してくれる。ところがmanagedはひたすらメモリーを使い続けて、よきタイミングでガバっと解放する。managedでもスコープ抜けたら解放してくれると誤解していたがそんなことないのね。画像を扱う場合は大量のメモリーを使うから特に注意が必要。100MB単位でメモリーが消費されていく様は見てられない。メモリー消費が可視化されるあたりはVisualStudioが新しいからってこともあるわけで、やっぱ新しい環境は使わなきゃいかんな。Disposeなる関数を都度呼ぶことが絶対に必要なことだということを学んだ。

PDFium Viewerは、他にPDFのページ分割や結合ができる模様。もう一段の強化をするかどうかはまた考えていきましょ。もし現行機能においてこんなことができたらいいね、っていう要望があればコメントされたし。実現可能でおもしろそうな機能なら次の版に組み込んでみるから!

-ソフト開発

執筆者:


  1. コーイチ より:

    コーイチ
    参考までに
    using を使えば、Disposeを省略できますよ。
    https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/using-statement

  2. com より:

    なるほど〜。disposeってフレーズは聞きなれないものでしたが、usingで囲むのが得策のようですね。

comment

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

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

関連記事

no image

USBメモリを小容量に見せかける方法

USBメモリの大容量化が年々加速している。 おいらが最初に買ったのが10年くらい前で、128MBで1万円くらいだったか。 今では、4GBが500円で買える時代になっている。 個人で使うには容量が多いに …

no image

TEMPフォルダ書き込みエラーが頻発したのはなぜだろう

「環境変数TEMPトラブルについて振り返る」という記事に書いた出来事は1か月ほど前に起きたことでありWindows Serverでもあったから、レアな事象としてとらえていたが、一昨日の金曜日に起きたこ …

no image

レイヤ付きPDFを出力する弊害

Illustratorという高価なアプリを使ってPDFを出力すると、PDFにレイヤが付いてしまって非表示にしたはずのレイヤが表示されて困ったなという事象に2回遭遇したので以下に記録。共通しているのが、 …

no image

複数ファイルの名前やパスを取得するのに便利なフリーソフト

ファイル名の一覧を作りたいときに使えるものはこれだ。 NameToClipboard64 インストーラは付いていないが、以下の簡単な操作でセットアップができる。 1.zipをダウンロード後解凍して適当 …

no image

コンピュータの日付

痛い目にあった記録。 無料試用期間30日間、そんなソフトを開発している。 動作確認するために、コンピュータの日付を変更する。 日付を数日後に変更して「残り27日です」とちゃんと出るか。 もっと先の日付 …