年別アーカイブ: 2020年

e-na伊那谷 旅便り 第10回 おてんとさんぽ

東京では桜が満開のようですが伊那谷の桜はまだまだこれからです。
今月末頃から徐々に開花予想となっています。
例年ですと高遠城址公園の桜を見るためのツアーバスを多く見かけますが
今年は残念ながら桜まつりなどのイベントは軒並み中止のようですので
静かな春になりそうです。

(去年の遠城址公園の夜桜です)

ここ数年、春から秋にかけて増えてきたイベントの1つにクラフトフェアがあります。
手作りが好きで毎年あちこちのクラフトフェアに出かけているのですが
今年はどうなるのでしょう、開催自粛になったりもあるでしょうか。

私の地元のおすすめのクラフトフェアはここです。

おてんとさんぽ
辰野町の産直・クラフト市
http://otentosanpo.jp/
(参加作家さんの作品写真や動画ものっています)

ここは地元の有志が実行委員となって運営や準備を行っています。
2011年から毎年秋に行われていて、今年は10回目になるようです。
陶芸・木工・革製品など様々な手作り作品や地元の農産物の販売、ワークショップもあります。
絵本の読み聞かせやミニコンサートもあったりと幅広い年代の方が楽しめるイベントです。
今年は 10月3日(土)・4日(日) だそうです。
この頃には落ち着いてお出掛けできるといいですね。


e-na伊那谷 旅便り
前回:第9回 ソースカツ丼
次回:第11回 ルビーの絨毯

新型コロナウィルスCOVID-19と戦うための情報システムの必要性について【2020/03/26 記事ライセンス追記】

3月23日に小池東京都知事が東京ロックダウン(都市封鎖)の可能性に言及する[1]など、新型コロナウィルスの脅威はいよいよ切迫した情勢となってきた。その背景には、「海外の様々な地域でロックダウンが始まっているため在留邦人が帰国してくるが、その人たちの中に感染者が含まれており、これまでなんとか避けてきた感染者の爆発的増加のリスクが高まっている」という状況分析がある[2]。

こうした状況を鑑みて、次に新型コロナウィルスCOVID-19と戦うための方策と問題を整理し、新しい情報システムについて提言する。

COVID-19の感染パラメータR0

ある感染症に対して、誰も免疫をもたない集団に初めて感染症を持ち込んだ一人の感染者が感染力を失うまでに何人に感染させるかを指数としたものがR0である[3]。COVID-19のR0はWHOのサイトでは予備的に1.4-2.5とされている[4]。R0が1より小さければ自然に収束するが、1より大きければ、何も対策しないと感染者数は集団免疫ができるまで増えていくことになる。

問題は増えていくスピードである。北大の西浦教授のグループの論文によると、ある感染者の発症から、その感染者から感染した2次感染者が発症するまでの期間の中央値は約4日~5日とされており、この日数はCOVID-19の潜伏期間とほぼ同じか少し短いようだ[5]。このことはCOVID-19は感染して潜伏期間中・未発症のときにも感染することを意味する。このため、感染して発症した人だけを隔離しても感染を防止できない。

諸外国のCOVID-19感染防止策

一般的にはR0を操作して感染拡大を防ぐことになる。以下、[3]より引用である。

R0 = β×k×D
βは、一回の接触あたりの感染確率、
kは、ある時間あたりに1人の人間が集団内で平均何回の接触をするかの係数、
Dは、感染症ごとに推定されている感染期間(kと同じ時間単位で測定)を表します。
βの感染確率は、感染症および接触の種類によって異なりますが、マスク着用、手洗いといった公衆衛生学的対策により、βを低下させることができます。
kについては、人々が接触する回数が減れば、減らすことが可能です。

中国では1月23日に武漢を封鎖(ロックダウン)し、武漢以外でも外出禁止などの措置をとったようだが、これは強制的に接触回数(k)をゼロに抑え込むことに相当する。現在、欧米各国でも同じようにロックダウンを選択する地域が増えている。都市封鎖では都市の出入りのみでなく、同時に外出などの活動も厳しく制限することになる。kをゼロにもっていけばCOVID-19の感染数は増えなくなるのは明らかである。しかし、劇薬であり、経済活動がほぼ完全に停止する。長期間に及べば破産する企業や個人が続出するだろう。ロックダウンは長期的に継続できないので必ず解除される。COVID-19が全世界に広まってしまった以上、解除後に他の地域からCOVID-19が再移入されることになる。従って、ロックダウンは最後の解決策にはならないであろう。

日本でのCOVID-19感染状況経過

日本は1月15日に初の感染者が確定した[6]。この方は武漢からの帰国者である。その後、しばらくの間、COVID-19については政府のチャーター便による帰国者とダイアモンドプリンセスの乗客・乗員の感染者の話題が中心で、国内の市中では観光業界に感染者が現れたぐらいであった。

中国政府が武漢を封鎖したのは1月23日であり、海外への団体旅行は27日から停止された。武漢で新型コロナウィルスが広がり始めたのは2019年の12月以降である。武漢国際空港の2019年の月間平均値で東京と大阪へ向かう人数を合計すると7,905人となっている([7] 表2)。こうして、日本では1月から2月の上旬まで、中国から来日した人が日本で発症するケースが主体であった。しかし、2月中旬に東京の屋形船での集団感染(クラスター)が発生した頃からは国内での人から人への感染が増えてきた。

政府・自治体の対応

政府は1月30日から新型コロナウイルス感染症対策本部を設置し、随時会議を行っていたが、2月14日には「専門家会議」の設置を決定しており、その後、25日に「新型コロナウイルス感染症対策の基本方針」が決定された[8]。 また、厚労省にはクラスター対策班が設置されている。

2月のCOVID-19の感染報告数は都道府県別にかなり差異があり、2月末には都道府県別でみると北海道が最も多かった[9]。北海道の鈴木知事は2月28日夕方に「緊急事態宣言」を出し2月28日から3月19日までの3週間、週末の外出を控えるように要請するに至った[10]。

3月下旬の状況

3月23日まで、日本のCOVID-19市中感染者数は無症状110名、発症者980名、陽性症状確認中5名である(武漢からのチャーター便による帰国者、空港検疫を除く)[11]。これまでは感染者数の増加スピードは欧米と比べて非常に緩やかである。これは日本では欧米に比べてR0がかなり小さいことを意味している。R0が小さいのは、欧米諸国と比較して日本ではマスクを着用する人の割合が多い、手洗いやアルコール除菌が普及している、キスや握手などで人同士の接触の習慣がない、などで感染確率(β)が小さいことが一つの理由と考えられる。また、政府や自治体の要請に従順に従って外出やイベントを控えた人が増えたことで、接触回数(k)が低下したことも理由に挙げられるだろう。

しかし、3月24日には1日に65人(患者58名、無症状病原体保有者3名、陽性確定例(症状有無確認中)4名)という、過去最大数の感染者が報告されている[12]。

クラスター対応という戦略

日本では専門家会議が、より踏み込んで「密閉空間であり換気が悪い」「手の届く距離に大勢の人がいる」「近距離での会話や発声がある」という3つの条件が重なった場で、集団感染(クラスター)が発生するので、これを避けることを勧告している。この根拠は、クラスター対策班の成果として「多くの事例では新型コロナウイルス感染者は、周囲の人にほとんど感染させていないものの、一人の感染者から多くの人に感染が拡大したと疑われる事例が存在」が判明したことによる。つまり、COVID-19は、一定の条件がそろうと大勢に感染しクラスターができるが、そうでないと全く感染しないことが多い、という特異な感染パターンを持つようである[13]。これは上記のβが環境依存になっていることを示すのではないかと思われるが、このような事実を発見できたことは幸運である。

この結果をみると、まれにクラスターが発生するときに一人で多数の感染者を生み出すので、そのようなクラスターの連鎖が起きないように、連鎖を断ち切ることを徹底することでR0を小さくできる。

二つの問題点

このようなクラスター対応の戦略を実行するにあたっては、次にあげる大きな障害がある。

第一は入手できる情報の遅延である。例えば、3月24日の感染者報告に記載されている地方自治体からの報告の内容をみると、発熱などが発症してからでも1週間以上経過している人が多い。潜伏期間を考えると、この人たちが感染したのは2週間ほど前になるのではないだろうか。ある感染者がら次の感染者に感染するまでの日数が4~5日ということは2週間の情報の遅れで3次感染まで進む可能性がある。このため、もし、ここでクラスターの連鎖が起きてしまうと、知らない間に感染者が急増してしまう。

第二は感染者を特定できないうちに感染が広がってしまうことである。22日から厚労省の統計で空港検疫の数値が出始めたが、24日時点でPCR件数1417に対して陽性18(1.3%)。無症状が13、症状あり5なので、感染していて症状がない人の方がずっと多い[11]。また、しばらく前に武漢からチャーター便で帰国した人は全数検査しているが、最初の数便(2/7まで)ではPCR件数566人に対して陽性9名(陽性率1.6%)。無症状保菌者3名、発症者6名であった[14]。

PCR検査に精度の問題があるとしても、流行っている地域から来た人の中には、100人あたり1人~2人くらいの感染者がいて、そのうちかなり高い比率が感染しているけれど無症状の人、ということになる。感染して無症状でも他の人を感染させる可能性がある。しかし、無症状感染者はもし感染リンクが追えないとすると判別がつかない。

対策案

第一の問題に対する対策としては感染者情報を収集して公開する速度を速くすることが必要である。このためには、新しい情報システムを構築する必要があるだろう。データの可視化については、現在、オープンソースの可視化システムができており、例えば、北海道庁の対策の成果はだれでもビジュアルに確認できるようになっている[15]。これによって、鈴木知事の緊急事態宣言が成果を上げたことが可視化されるのは素晴らしい。

しかし、ここに表示されるデータは2週間ほど前に起きた事象を反映する、古い情報であることを忘れてはならない。しかも、どうやらこのデータ収集は手作業で行われているようだ。既に疫学関係者のブログや疫学会の要望にもあがっているので、ここでは繰り返さないが、ここはシステム化して手作業の負荷を減らすとともに、情報伝達のタイムラグを小さくして、対策措置の有効性を確認できるまでの期間を短くしないと、COVID-19の感染速度についていけない。

第二の問題に対する解決策としては、流行っている地域や場所にいた人の情報、流行っている地域から来た人の情報をスマホアプリを使って収集管理し、後日に、もし感染が発生した場合に、その人たちや濃厚接触した人々に通知する仕組みを構築すると良いだろう。いち早く参加者に感染の警告を通知することで、外出したり人と会うのを自粛してもらえるようにしたい。こうした情報システムを構築するのは比較的容易と考えられるので早期に取り組むべきである。

(3/30追記)ニュースを見ていると、そろそろ、病院で患者を収容しきれない状態になっているということで、医師会の記者会見で緊急事態を宣言するべきではないかと提案したという[16]。症状や位置を追跡用するためのスマホアプリを用意したうえで軽症者は退院・自宅待機とするなどの対策を提案したい。(ここまで)

(5/2追記)5月中旬より新しい情報システムが導入されることになったようです。⇒「新型コロナウイルス感染者等情報把握・管理支援システム(仮称)の導入について

最後に

武漢からチャーター便で帰国した人の全数検査でみるように、武漢でCOVID-19が流行っている頃の集団でも100人に1~2にしか感染者がいなかったということは、逆に見れば100人中98人から99人は感染していないということになる。集団の中に含まれる極小数の感染者による感染を避けるために都市全体をロックダウンする、というような激しい手段を取るのはあまりにも非生産的である。コンピュータの能力を生かした情報システムをうまく使ってもっとスマートな対応を目指していきたい。

資料

[1] 知事「都市封鎖回避への協力を」 NHK News Web 2020年3月23日
[2] 厚生労働省クラスター対策班による都における現状分析・推計 厚生労働省クラスター対策班 2020年3月21日
[3] 感染症疫学の用語解説 日本疫学会
[4] Statement on the meeting of the International Health Regulations (2005) Emergency Committee regarding the outbreak of novel coronavirus (2019-nCoV) WHO 2020年1月23日
[5] Serial interval of novel coronavirus (COVID-19) infections 2020年3月4日
[6] 新型コロナウイルスに関連した肺炎の患者の発生について(1例目)厚生労働省 2020年1月16日
[7] Nowcasting and forecasting the potential domestic and international spread of the 2019-nCoV outbreak originating in Wuhan, China: a modelling study 2020年1月31日
[8] 新型コロナウイルス感染症対策の基本方針 新型コロナウイルス感染症対策本部決定 2020年2月25日
[9] 新型コロナウイルス感染症の現在の状況と厚生労働省の対応について(令和2年2月28日版) 厚生労働省 (注記)(別添1)国内事例(チャーター便帰国者を除く)の表を集計。
[10] 北海道知事 道民に「緊急事態宣言」NHK News Web
[11] 新型コロナウイルス感染症の現在の状況と厚生労働省の対応について(令和2年3月24日版) 厚生労働省 (注記)24日12時までと明記されているが、実際には3月23日に自治体から報告された件数までの集計である。厚労省は前日に地方自治体から報告された件数を翌日の日付で公表している。
[12] 新型コロナウイルスに関連した患者等の発生について(3月24日公表分) 厚生労働省 地方自治体の報告を整理したもの
[13] Closed environments facilitate secondary transmission of coronavirus disease 2019 (COVID-19) 2020年3月3日
(注記)問14 集団感染を防ぐためにはどうすればよいでしょうか?(厚生労働省)に同じデータが掲載されている。
[14] 新型コロナウイルス感染症の現在の状況と厚生労働省の対応について(令和2年2月7日版)厚生労働省 2.国内の発生状況についての表より
[15] 道内の最新感染動向北海道庁サイト
[16] 「緊急事態宣言を出してほしい」日本医師会が会見、医療崩壊に危機感

 


2020/03/26 追記:

クリエイティブ・コモンズ・ライセンス
この作品は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。

著作権利者の表記は次のいずれかをご使用ください。

  • アンテナハウス株式会社
  • AntennaHouse,Inc.

※上記の宣言によってCC-BY-4.0 の対象としているのは本記事に関してのみとなります。また、引用箇所についての権利は各著作権利者に帰属します。

以上追記。


[AH Formatter V7.0 の新機能] BPIL による行分割

2020年2月20日にリリースされた『AH Formatter V7.0』の新機能、今回は行分割についてご紹介します。

『AH Formatter V7.0』では行分割を Knuth-Plass の Breaking Paragraphs into Lines(以降、BPIL)のアルゴリズムに従って行う方法を導入しました。BPIL は、主に欧文組版のためのアルゴリズムで、ブロック全体のバランスを考慮して分割位置を決定します。

BPIL については過去のブログで詳しく触れていますので、こちらもご覧ください。
Breaking Paragraphs into Lines

例えば、『AH Formatter』の従来の行分割では次のように組版されます。
従来の行分割の例

BPIL で組版すると以下のような結果になります。
BPILの行分割の例

全体のバランスが考慮され行末のアキの幅がより均等になります。
※ 行末のアキの幅を分かりやすくするため、あえて justify していません。

BPIL が機能するのは既定値でオプション設定ファイルの bpil で指定されている言語 “Latn Grek Cyrl” または axf:line-break=”bpil” が設定されているブロックです。制御はオプション設定ファイルなどで行え、もちろん従来の行分割になるよう機能を無効にすることも可能です。詳しくは行分割をご覧ください。

新しい行分割アルゴリズムが導入された『AH Formatter V7.0』を非是お試しください。

この記事の画像は公開サンプルを用いたものとなります。実際のデータは公開サンプルのページよりダウンロードいただけます。

評価版は以下よりお申し込みいただけます。
AH Formatter 評価版のお申し込み


[AH Formatter V7.0 の新機能] エラー行指定ジャンプ機能のご紹介

AH Formatter V7.0 で追加された機能のひとつに、組版時エラーが出た際、ワンクリックで簡単にエディタを起動し、エラーが出た箇所を容易に修正するための機能があります。AH Formatter V7.0 で、エラーログにファイルパスへのリンクが追加されました。
エラーログの例

この機能の使用前には少し準備が必要です。
GUI の [組版メニュー]-[その他設定]-外部エディタのタブの、行指定時コマンドライン引数という項目を調整します。
その他設定ダイアログ

この項目で外部エディタに指定されたエディタで行指定して起動するオプションを指定します。%1 がオープンするファイル名、%line が行番号となります。

上記で行指定パラメータを指定した状態で、エラーログの青色のファイルパスのリンクをクリックすると、指定したエディタを起動し、エラーのある行にジャンプします。このように自動的にエラーのある行から編集を開始することができるため、エラーの位置を検索する手間が省けるようになりました。

詳しくは、ヘルプの「ログウィンドウ」と「外部エディタ」をご覧ください。

ドキュメントの修正がさらに容易になった AH Formatter V7.0 を是非ご活用ください。


e-na伊那谷 旅便り 第9回 ソースカツ丼

伊那市あるいは伊那谷のローカルフード(B級グルメ)として思い付くものといえば、馬刺し、おたぐり、ソースカツ丼、ローメン、高遠蕎麦、昆虫食、最近力を入れているところではガレットなどいろいろありますが、今回はソースカツ丼のお話を。

伊那谷名物 ソースカツ丼

続きを読む


AH Formatter V7.0 の新機能確認サンプル

先月 2020年2月20日に XML/HTML 自動組版ソフトのベストセラー『AH Formatter』をバージョンアップした『AH Formatter V7.0』を公開しました。この『AH Formatter V7.0』の新機能をご確認いただくためのサンプルは、「サンプルFO集」ページに掲載しています。ここには、XSL-FO の基本仕様と『AH Formatter』の拡張機能を使用したサンプルFO を豊富にご用意していますので、是非ご活用ください。

『AH Formatter V7.0』で追加された機能は、「V7.0 の新しい機能」に列挙しています。『AH Formatter V7.0』では、欧文組版における行分割処理の改良、BIDI処理の改良、GUI の改良、ドロップキャップ、PDF 2.0 出力、PDF/X-4p 出力、Adobe Fonts や WebP への対応など盛りだくさんです。自動組版にご興味ございましたら、是非評価版をお試しください。

評価版は以下のページよりお申し込みいただけます。
AH Formatter 評価版のお申し込み

AH Formatter のロゴ


e-na伊那谷 旅便り 第8回 伊那市長谷 春の訪れ

2月下旬、伊那市長谷を訪れました。長谷は伊那市東部に位置し、桜で有名な高遠地区よりも奥地にあります。

常福寺

伊那市長谷溝口にある曹洞宗のお寺です。

福寿草が咲いています。
今年の冬は暖かかったためか、例年より10日ほど早く咲き始めたようです。

ここ数年は暖冬で見る機会も少ないですが、寒い冬に雪の中で咲いている福寿草も良いです。

ここ常福寺は、樹齢120年といわれる枝垂れ桜も有名です。

4月中旬から下旬にはきれいな花が咲くでしょう。また、その頃に訪れてみたいです。

道の駅 南アルプスむら長谷

常福寺から2Km少し伊那市街方面。道の駅 南アルプスむら長谷に来ました。
伊那市駅からは 13km ほど、国道152号の沿線にあります。

ここでは、地元で作った野菜や長野県の限定商品などを販売しています。

地域限定のポテトチップスとふき味噌。

ここに入っているパン屋さんでは、焼きたてのパンが買えます。

左上:ブルーベリーマフィン。
右上:チョコレートマフィン。
左下:桜姫パイ(サクサクのあんこパイでした)。
右下:チーズケーキ。
人気のクロワッサンはこの日は予約が必要で買えませんでした。

ここ長谷には、ゼロ磁場で有名な分杭峠(冬季閉鎖中)や、南・中央・北アルプスが一望できる鹿嶺高原など自然に触れられる場所がたくさんあります。
新緑の頃、出かけてみるのも良いかもしれません。


e-na伊那谷 旅便り
前回:第7回 イナゴの佃煮
次回:第9回 ソースカツ丼

PDF Viewer SDK で簡単PDFビューア作成(8)

前回までで、印刷や保存やコピーを禁止したPDFビューアができました。
本日は、さらにユーザーが他のファイルをオープンできないようにして、指定したファイルだけ表示するようにしてみたいと思います。

●ファイルのオープンを禁止する

ファイルのオープンを禁止するには、まずオープンボタンを用意しないようにします。
下の画面は第5回までの記事で作成したPDFビューアからオープンボタンを削除したPDFビューアです。

これでボタンからオープンはできないのですが、SDKの2つのコントロールPDFPageViewCtrlとPDFThumbnailCtrl は、標準でファイルのドラッグ&ドロップを受け付けPDFをオープンするようになっています。

ドラッグ&ドロップでのオープンを禁止するには、第5回で紹介したドラッグ&ドロップ用のイベントハンドラを実装することで行います。

ここでは、DragDropFilesイベントのイベントハンドラを実装します。
Visual StudioのフォームデザイナーでPDFPageViewCtrlのプロパティを開き、イベントの画面で「DragDropFiles」を探して、右の空欄部分をダブルクリックします。

イベントハンドラの雛形コードが生成されますので、以下のように実装します。

    private int pdfPageViewCtrl1_DragDropFiles(string[] files)
    {
        return 0;
    }

このコードは、既定の動作(PDFファイルのオープン)を上書きし、何も処理を行わないようにします。これでアプリケーションにファイルがドラッグ&ドロップされてもオープンできなくなります。

PDFThumbnailCtrl もドラッグ&ドロップが可能ですので、DragDropFilesイベントのイベントハンドラを同じように実装してオープンできないようにします。

あとは、コントロールのOpenDocumentメソッドで、アプリケーションの起動時などに、表示したいPDFファイルをオープンするようにすれば、特定のファイルしかオープンできない閲覧専用のPDFビューアを作成することができます。

以上、「Antenna House PDF Viewer SDK」を利用した閲覧専用のPDFビューアの作り方のご紹介でした。

詳しい機能についてぜひ製品ページをご覧ください。

製品ページ:
https://www.antenna.co.jp/pdfviewersdk/
評価版ダウンロードページ:
https://www.antenna.co.jp/pdfviewersdk/trial.html

PDF Viewer SDK で簡単PDFビューア作成(7)

前回に続いて、印刷や保存やコピーを禁止したPDFビューアの作り方を紹介していきます。
本日はPDFの編集(注釈やページの入れ替え)や内容のコピーを禁止する方法を紹介します。

●PDFの編集やコピーを禁止する

PDF Viewer SDK で提供しているコントロールは、PDFファイルで制限されていなければ、注釈やページの編集、テキストのコピーができます。

保存ボタンを用意しなければ保存はできないのですが、編集もできないように制限したいところです。この動作はコントロールのCtrlStyleプロパティで変更できます。

〇読み取り専用モード

コントロールを読み取り専用にするには、CtrlStyleプロパティにAGCS_READONLYを指定します。

public Form1()
{
      InitializeComponent();

      pdfPageViewCtrl1.CtrlStyle |= (int)AvsCtrlStyle.AGCS_READONLY;
      pdfThumbnailCtrl1.CtrlStyle |= (int)AvsCtrlStyle.AGCS_READONLY;
}

PDFPageViewCtrl では、注釈の移動や削除、注釈の属性の編集などができなくなります。注釈を選択して右クリックメニューから開くプロパティダイアログでは、通常は線のスタイルや色を編集できますが、読み取り専用時にはプロパティが編集できません。

右クリックメニューから注釈のプロパティを開く

プロパティダイアログ

また、PDFThumbnailCtrl では、右クリックメニューでカット&ペーストや新規ページ挿入などのページ編集ができなくなります。

〇プレビューモード

読み取り専用モードにすることで編集はできないようになりました。しかし、読み取り専用モードでは PDFPageViewCtrl でのテキストはコピーできます。

テキストをコピーできないようにするには、AGCS_PREVIEWMODEを指定します。

      pdfPageViewCtrl1.CtrlStyle |= (int)AvsCtrlStyle.AGCS_PREVIEWMODE;
      pdfThumbnailCtrl1.CtrlStyle |= (int)AvsCtrlStyle.AGCS_READONLY;

プレビューモードでは注釈も選択できなくなりポップアップ注釈も開きません。
これで編集やコピーを禁止することができました。

CtrlStyleプロパティを使うと、この他にも注釈を非表示にしたり、オープンアクションを実行しない等の制御ができます。

次回は、ユーザが他のファイルはオープンできないようにしてみたいと思います。

詳しい機能についてぜひ製品ページをご覧ください。

製品ページ:
https://www.antenna.co.jp/pdfviewersdk/
評価版ダウンロードページ:
https://www.antenna.co.jp/pdfviewersdk/trial.html

PDF Viewer SDK で簡単PDFビューア作成(6)

PDFは表示させたいけれど、その内容は印刷されたり保存されたりコピーされたくない、という場合は多いようです。

今回は、印刷や保存やコピーを禁止したPDFビューアの作成方法をご紹介したいと思います。
「Antenna House PDF Viewer SDK」を利用したPDFビューアの作成方法は、以下の記事を参考にしてください。

●印刷や保存を禁止する

次の画面はSDKに付属するサンプルビューアAvsDotNetGuiCtlSampleのソースコードをVisual Studioのフォームデザイナーで開いたところです。

赤枠部分がSDKで提供しているWindows Formコントロールです。それ以外のメニューやボタンはサンプルビューア側で用意しています。

その動作もサンプルビューア側で実装されています。たとえば、印刷メニューが選択された場合はそのイベントハンドラで印刷メソッドPrintDocumentを呼び出します。

private void printMenuItem_Click(object sender, EventArgs e)
{
      pdfPageViewCtrl1.PrintDocument(true, "", 0, 0, 0, 0, 0, 
           AvsPrintOrientation.APO_AUTO, AvsPrintPageScaleMode.APS_SHRINKTOPAPER, 
           true, 1, false, "", 0);
}

最初の引数では、コントロール側で実装ずみの印刷ダイアログを表示するようtrueを指定しています。

実は、印刷や保存を禁止するのは簡単で、単にこのようなメニューやボタンなどのGUIを用意せず、印刷などの処理を呼び出さなければよいのです。そうすればアプリケーションのユーザは操作を行うことができません。実際、第5回までの記事で作成したPDFビューアは、印刷や保存ボタンを用意していませんので、印刷や保存ができません。

では、ショートカット・キーはどうでしょうか。

ショートカット・キーもサンプルビューア側でメニュー項目に割り当てています。以下はForm1.cs ファイルのForm1コンストラクタの冒頭付近のコードです。

printMenuItem.ShortcutKeyDisplayString = "Ctrl+P";
printMenuItem.ShortcutKeys = Keys.Control | Keys.P;

ショートカット・キーもこのような割当を行わなければアプリケーションのユーザは操作ができません。

以上のように、コントロールの機能をアプリケーションから呼び出せないようにすることで、印刷や保存の制限は簡単にできます。

それでは、PDFの編集(注釈やページの入れ替え)や内容のコピーを禁止するにはどうすればよいでしょうか。これはまた次回にご紹介したいと思います。

詳しい機能についてぜひ製品ページをご覧ください。

製品ページ:
https://www.antenna.co.jp/pdfviewersdk/
評価版ダウンロードページ:
https://www.antenna.co.jp/pdfviewersdk/trial.html

Pages: Prev 1 2 3 4 5 6 7 8 9 10 11 Next