PDFをフォームに表示したい

解決


おかぽん  2015-07-29 01:07:54  No: 47486

現在、PDFのファイルをDB(Oracle)に保管しています。
内容表示は、一度ファイルに落として関連付けされたアプリにおまかせのスタイル。
これを外部のアプリを使用せず、自アプリ内で表示したいのです。
一言で言えば、ビューア機能の実装ですね。

例えば、Mr.XRayさんのページにAcrobatのタイプライブラリの取り込みの
サンプルがありますが、ユーザー側の環境において、必ずしもAcrobat製品が
インストールされている保証はないので除外したいところです。
http://mrxray.on.coocan.jp/Delphi/plSamples/720_Acrobat.htm

日本語も使えるHaru Free PDF Library(  http://libharu.org/  )
こちらは、dllができるので、もしかすると(日本語も)使えるのか!と、
半日悩んで、dllのビルドまでこぎ着けましたが、読むより書くだけ?
のような気分になって、とほほ。

そんなわけで、有償・無償問わず、ビューア機能を実装できるものを探しています。
もし、使ったことあるような方、探してみたことがある方、いらっしゃいましたら、
ぜひとも教えていただけないでしょうか?

# 仕様を読んで、自力実装とかは・・・厳しい

引き続き、調査を続けますので、よいものがあれば、紹介します。


igy  2015-07-29 01:35:52  No: 47487

実際、使ったわけではないのですが、以前、

Adobe ReaderがインストールされていなくてもPDFを印刷したい
https://www.petitmonte.com/bbs/answers?question_id=6633

で、いくつか挙げていました・・・・


Mr.XRAY  2015-07-29 01:58:45  No: 47488

>http://mrxray.on.coocan.jp/Delphi/plSamples/720_Acrobat.htm

上のタイトルに「・・・文書の表示と印刷」となっていて,記事の実際とは合わない記事もありますが.

>そんなわけで、有償・無償問わず、ビューア機能を実装できるものを探しています。

ActiveX, COM 版でしたら,例えばこんなのが,
(おそらく,ActiveX, COM 版以外はないのでは ...)
http://www.quickpdflibrary.com/products/quickpdf/features.php

≪PDF Viewing / PDF Rendering
PDF to image rasterization (BMP, TIFF, JPG, WMF, EMF, EPS, PNG and GIF)
View PDFs in your applications≫

という文章がありますから,おそらく.日本語はどうなのか分かりませんです.
試用版では日本語は表示できませんでした (今も変わらないと思います).
Adobe Reader をインストールするよも,ActiveX, COM なら.

あとは ABCpdf .NET 10J でしょうか.
これは,同梱の ActiveX を使用することになります (使用したことはありません).

http://www.newtone.co.jp/productabcpdf1000.html

↑に

≪PDF ドキュメントの動的な高速生成に加え、強力なレンダリング機能で 
PDF 読込に Adobe Reader を必要としない表示や印刷を実現できます。
たとえば、VB フォーム上の PictureBox を使ったPDF表示や PDF ファイルのサムネイル表示といった
コーディングが可能となります。 ≫

とあります (改行変更しています)

igy さんが示した記事中のリンクが一部消失しているか,以下に移動しています.

[PDF Viewer SDK]
http://www.antenna.co.jp/oem/ViewerSDK/index.html

これも,
≪AcrobatやAdobe Readerに依存せず、PDFの表示に関連する機能を盛り込んだ、独自のシステムやアプリケーションを開発することができます。 ≫
とあります.

[Foxit J-Reader 7.1をリリース]
http://www.foxit.co.jp/news/2921

≪高機能PDFビューワー「Foxit J-Reader」の最新版である「Foxit J-Reader 7.1」の無償配布を 2015年6月25日(木)
 より開始いたします。≫

とあります.

では,ご健闘をお祈りしています.


通りすがり  2015-07-29 02:11:10  No: 47489

ChromeのPDFレンダリングエンジンがオープンソース化されたPDFiumはどうでしょう?

PDFium
https://code.google.com/p/pdfium/

PDFium Component Suite
http://www.winsoft.sk/pdfium.htm

PdfiumViewer
https://github.com/pvginkel/PdfiumViewer

PdfiumLib
https://github.com/ahausladen/PdfiumLib


おかぽん  2015-07-29 20:45:44  No: 47490

igy さん、Mr.XRAY さん、通りすがり さん ありがとうございます。

"ビューア機能"と思い込み、なかなか希望のものが探し出せなくなって
しまっていたので非常に助かりました。

それから、すいません、再配布ライセンスがあることなど、考えてもいませんでした。
販売済み製品の機能拡張になり、かつアプリの分野を考えると、配布ライセンスの
価格が高額なものは、手を出せないかもしれません。

とりあえず、igy さんの過去の回答から、PDF Reference 1.7 を
ダウンロードしておきました。
Adobe PDF Reference Archives
http://www.adobe.com/devnet/pdf/pdf_reference_archive.html

次は、Mr.XRAYさんに紹介いただいた、Debenu PDF Viewer SDK
http://www.quickpdflibrary.com/products/quickpdf/features.php

これもとりあえずダウンロード
ただし、日本語の扱いが心配


Newtone ABCpdf .NET 10J
http://www.newtone.co.jp/productabcpdf1000.html

> ※当製品はランタイムライセスフリーではございません。
> 再配布ライセンスパック  1製品無制限の配布ライセンス  940,000
「うわ〜、どれだけ売れば回収できるんだ」という価格だから、
きっと稟議がおりないだろうな。
優先度低


Antenna House PDF Viewer SDK
http://www.antenna.co.jp/oem/ViewerSDK/index.html

ライセンスと価格
価格は、組み込み条件等により異なるため要問い合わせ

体験版
> 『Antenna House PDF Viewer SDK』の評価版は製品版そのままをご評価いただけます。
> 機能制限無しで使用可能なため、別途評価版借用契約を締結していただく必要があります。
ちょっとお試しというレベルでは、手を出しにくい。


Foxit PDF SDK
http://www.foxit.co.jp/solutions/developer
https://www.foxit.co.jp/products/foxit-pdf-sdk/foxit-pdf-sdk
Foxit PDF SDK 比較表
https://www.foxit.co.jp/products/foxit-pdf-sdk/foxit-pdf-sdk-comparison

こちらは、評価版とライセンス価格を問い合わせ中

最後、通りすがりさんが紹介してくださったPDFiumですが、

GoogleがChrome PDFエンジンのベースとして選択したFoxit PDF SDK
http://www.infoq.com/jp/news/2014/06/google-chrome-pdf-engine-free
> "オープンソース化されたFoxitのPDF技術により

ということで、ベースはFoxit PDF SDKなんですね。
ただし、オープンソースなのがちょっとひっかかる。
PdfiumViewerには pdfium.dll が含まれていますけど・・・。
と言いつつ、評価用に使わせていただくことにしましょうか。

時間はかかると思いますが、とりあえず、これらを候補として調査してみます。
本当にありがとうございました。


Harry  2015-07-30 08:03:34  No: 47491

PDFの表示と聞いて、自分が真っ先に思い浮かんだのがGhostscriptでした。
誰か挙げるだろうと思っていたのですが、出なかったので。

かつて自分が触れたわずかな経験(画像ビューアのIrfanViewのプラグインとして)では、
  1. 日本語フォント出力が汚い
  2. フォントや画像のアンチエイリアス/スムージングが効いていない
  3. ページ数が多いとかなり重い
など、あまり良い印象はありませんでした。特に1と2は深刻で、実用ギリギリ。

で、今回Delphiでの利用を検索してみますと…ありました、TPDFImageが。
早速 TPDFImage 1.5 をダウンロードしてみますと、TestPDF.exeというデモが同梱されて
いたので、適当なPDFを読ませてみました。すると…ガックリ、上記の悪い特徴がそのまま。
しかもおまけに、
  4. 読み込み時に Invalid floating point operation. が出て表示不能なPDFがある
という、さんさんたる結果でした。

TPDFImage 1.5 に同梱されているgsdll32.dllを確認しますと2006/05/22という大変古い
ものでしたので、ダメもとでこれを最新の Ghostscript 9.16 に含まれる2015/03/30の
ものに差し替えてみたところ…深刻だった1と2の問題は解消されていました!
残念ながら、4のエラーはそのままです。

ということで、エラーが出るとかパフォーマンスとかライセンス関連とか色々ありますけど、
「Delphiで今すぐに簡単に使える」というメリットがあるのでご紹介いたしました。
※エラーについてはDelphiが出していると推測しますので、おかぽんさんの技術力をもって
すれば、解決できるんじゃないかと…


おかぽん  2015-07-30 19:22:10  No: 47492

Harryさん、回答ありがとうございます。

TPDFImage
http://www.itf-it.de/index.php/en/en-homepage/en-aboutus/105-main/download/delphicomponents/99-en-tpdfimage

これでしょうか。説明を読む限り、画像データとして扱えるようです。
そしてgsdll32.dllを最新版にして、デモを実行し、22Mの某説明書PDFを
読み込ませたところ、
"Error from ghostscrip while convertinf file 〜〜 code -100 error" が発生。
TPDFImage のManual なら読み込めました。

英文とにらめっこしないといけない、ライセンス的な要素はもちろんでしたが、
なんだか初期化関数の gsapi_init_with_args API から躓いている様子。
GhostScriptのパラメータをちょいちょいっとしたら、使えるのかもしれませんが、
そこまで頭の容量がなくて、断念。
せっかく教えていただいたのですが、私(の環境?)には使えませんでした。
ソースもあって、魅力たっぷりなんですが・・・申し訳ない。
# この程度の技術力です、はい


おかぽん  2015-07-30 19:22:39  No: 47493

ついでに、Mr.XRAY さん紹介の Debenu PDF Viewer SDK の報告
http://www.debenu.com/products/development/debenu-pdf-viewer-sdk/

> ActiveX, COM 版でしたら,例えばこんなのが,
> (おそらく,ActiveX, COM 版以外はないのでは ...)
http://www.quickpdflibrary.com/products/quickpdf/features.php

Trialをダウンロードして調査しました。

ヘルプの Debenu PDF Viewer SDK Quick Start Guideに、使い方が書かれていますが
だいたい以下の手順

・最初にActiveX コントロール「DPVS ActiveX control」の取り込み

・作成できた「DPVActiveXLib_TLB.pas」をコンポーネント登録

・Delphi用のサンプルプログラム(DebenuViewerCtrlSample)があるので、それを開く

・フォームに貼り付けされた、DPVActiveX1のプロパティで、LibraryPathに
  DebenuPDFLibraryDLLXXXX.dll (XXXXはバージョン)のパスを指定。
  インストール先が、標準で"C:\Program Files\Debenu"以下で、
  PDF Viewer SDKフォルダ内に DebenuPDFLibraryDLLXXXX.dll  があります。
  実行ファイルと、DebenuPDFLibraryDLLXXXX.dll を同じフォルダ内に配置
  する場合は、パス不要。そうでなければ、フルパス or 相対パスのようです。

・同様に RenderePath にも DebenuPDFRendererDLLXXXX.dll (のパス)を指定

・LicenseKeyプロパティに、インストール先に存在するTRIAL_LICENSE_KEY.TXTを開き
  2行目の体験版のライセンスキー文字列をコピペ。

・NavigationPanel、Serchbar、ToolbarのOn/Offプロパティがありましたが、お好みで。

・実行

評価
PDF1.5で出力された、22Mのとある操作説明書pdfを読み込んでみましたが、ほぼ一瞬で1ページ目を表示。
早いっ!
ドラッグでスクロールすると・・・スムーズだ!
日本語も表示している!海外製のくせに(失礼な)やるな!

が!日本語文字あたりにカーソルを合わせ、ドラッグスクロールしようとすると・・・

「不正な浮動小数点演算命令」    がーん

一度出ると、繰り返し出る。マウスカーソルをPDFのページ外に移動させてEnterで
出なくなるが、再度ページ内に移動させると、再登場。
ページ移動ボタンで、次のページに移動すると、これで出なくなる。

問題のPDFを送れば解決するのか・・・。
完成度が高い(気がする)のに。

価格
$450  明日(31日)まで$315だ、さあ急げ!
また、開発者一人へのライセンスであり、実装するアプリケーション数がいくつあってもいいようだ。
おまけに「Royalty free.」これはありがたい。


おかぽん  2015-07-30 21:01:14  No: 47494

PDF Viewer Component
https://www.edrawsoft.com/pdfviewer.php
https://www.edrawsoft.com/download-pdf-component.php

どこの誰の情報ででみつけたのか忘れました。

評価
ActiveXコントロール
自身でPDFを描画(表示)するのではなく、どうも、"標準のPDFビューア"を自アプリ内に表示させるだけのもの。
なんだか見たことあるツールバーが出るなぁと思ったら、標準のPDFビューアが
埋め込まれているんだから当たり前か。
「PDF-XChange Viewer」「Adobe Reader」の環境でテストしたが、問題なし。
標準のPDFビューアがない環境はテストしていないので不明・・・どうなるんだろう?
標準のPDFビューアに関わりなく、自アプリ内での表示を行いたいので、ちょっと趣旨が違うし、
数多くあるビューア全てに対応しているかテストしないといけないかしら?

またコントロール上部に「PDF Viewer OCX (Evaluation Version 5)」のタイトルが出ている。
製品版になれば消えるのならいいけど、出しっぱなしだと、クラシック表示のタイトルバーと
見間違うくらいまぎらわしい。このタイトル部分をドラッグしても、フォームが移動しないので、ますます紛らわしい。

なお、C++で作成されたデモプログラムが添付されていますが、うちの環境では動きませんでした。
ファイル選択後 CPU100%のまま停止。
ActiveXを取り込み、Delphiで実行したら動作しました。

価格
$1495.00  (たぶん開発者ライセンス)
ロイヤリティフリー


igy  2015-07-31 06:32:12  No: 47495

日本語を含むPDFに対応したPDFコンポーネントを教えてください
http://www.freeml.com/delphi-users/788/latest

でも、いろいろ挙げられてますね。

ただ、

> 見落としていましたが、私が上げた以下の2つは日本語に対応していると記載されていました。
> ・Quick PDF Library
> ・PDFtoolkit VCL
> しかし、実際には完全に対応しきれておらず、現段階では採用できないレベルでした。
> 今後に期待したいと思います。

とのことです。

Quick PDF Library
のほうは、おかぽんさんが、

>ついでに、Mr.XRAY さん紹介の Debenu PDF Viewer SDK の報告

で確認されているみたいですが、

PDFtoolkit VCLのほうは、もしかすると改善されている可能性も・・

http://www.gnostice.com/PDFtoolkit_VCL.asp

Feature Matrix には、確かに

>Support for all character sets - Eastern Europe, Chinese, Japanese…

と、あるようです・・・


おとりすがり  2015-07-31 08:30:26  No: 47496

PDFium Component Suite For Firemonkeyを利用していますが
特に問題なく日本語PDFが表示できています。
http://www.winsoft.sk/index.htm

※余談ですがWindowsのDLLだけじゃなく、OSX用のdylibやAndroid用のsoもあるので
マルチデバイス開発に助かっています。


おかぽん  2015-07-31 17:22:38  No: 47497

igy さん追加情報ありがとうございます。

http://www.freeml.com/delphi-users/788/latest
6年以上前の投稿ですね。
まだ「これだ!」と言えるものが見つかっていないので、重複するものもありそうですが、調べて見ます。

おとりすがり さん、情報ありがとうございます。
PDFiumは、通りすがり(2015/07/28(火) 17:11:10)さんが紹介してくださったもので、
調査対象に入っていますが、今のところ後回しになっています。
とはいえ、動作報告として、非常にありがたく思います。


おかぽん  2015-07-31 17:39:40  No: 47498

Synactis PDF Viewer
http://www.synactis.com/

Adobe ReaderがインストールされていなくてもPDFを印刷したい
https://www.petitmonte.com/bbs/answers?question_id=6633

こちらで、igyさんが紹介してくださった Synactis PDF Viewer ですが、
ホームページを見ても、該当する製品はありません。
代わって以下の2製品があります。

PDF In-The-Box: Creating PDF files programmatically
http://www.synactis.com/pdf-in-the-box.htm
ALL In-The-Box, for creating and displaying documents programmatically
http://www.synactis.com/all-in-the-box.htm

どちらもダウンロードしてみましたが、ビューア機能は作成した(作成中の)PDFを表示する機能のようです。

また、LoadDocというメソッドがありましたが
This method cannot load PDF files. This is not the job of ALL In-The-Box.

どうやら、単純なビューア機能の製品はなくなったのかもしれません。

DelphiのコンポーネントがDelphi5以降存在します。
> Powerful. Easy to use. Royalty-free deployment!
> Delphi (in Win 32 mode): versions 5, 6, 7, 2007, 2009, 2010, XE, XE2, XE3, XE4, XE5, XE6, XE7

「Synactis PDF Viewer 」で検索すると、Vectorのようなダウンロードサイトに残ったものが
ダウンロードできそうですが、それは試していません。


おかぽん  2015-07-31 23:31:17  No: 47499

Foxit PDF SDK ActiveX 版
ttp://www.foxit.co.jp/solutions/developer
ttps://www.foxit.co.jp/products/foxit-pdf-sdk/foxit-pdf-sdk

本家FoxitSoftware
ttps://www.foxitsoftware.com/

評価
ActiveXコントロール
原因はよくわかりませんが、一部の日本語に文字化け
同じPDF文書内でも化ける文字と化けない文字がありました。
現行の本家Foxit Reader(日本語対応のFoxit J-Readerではない)でも文字化けしないので、文字化けの原因がよくわからない。

ツールバー、ステータスバーのOn/OffのプロパティがあってFoxitReaderのような表示にできる。
PDF Viewer Componentのように、ActiveX上部に「Foxit PDF SDK ActiveX Professional」が表示される。
# 頼む消えてくれ。もしくはもっと小さくなってくれ。
ツールバー用として、多言語に対応しているが、Foxit Reader同様言語ファイルを別途用意する必要がある。

価格
(株式会社 FoxitJapanへの問い合わせの結果)
Foxit PDF SDK ActiveX Pro版
初年度サポート込み 福沢諭吉紙幣50枚
再配布ライセンスは 1アカウント当たり野口英世1枚〜410円
1アプリケーション当たりの価格なので、複数のアプリに利用する場合は・・・

# 1アカウントって、結局どういう単位かはわかりませんでした。
# インストールしたPC単位とか、使用する利用者単位とか、事業所単位とか、もう少しわかりやすくしてほしいと思うの

おまけの言語ファイル
ttp://languages.foxitsoftware.com/index.php?proid=25


おかぽん  2015-08-01 02:30:16  No: 47500

訂正とか追記...

環境汚染が嫌で、仮想環境(XP)でテストしていましたが、実機環境(7)で動作
するような
サンプルプログラムを作成しテストして気がついた点、修正点を少々。

・Debenu PDF Viewer SDK について
「2015/07/30(木) 10:22:39」の投稿で、「不正な浮動小数点演算命令」が頻発しましたが、実機環境(7)では出ませんでした。
動作環境をよく見ていませんでしたが、XPでしか発生しないのであればイチオシです。
今日まで3割引・・・

・PDF Viewer Componentのタイトルバー
「PDF Viewer OCX (Evaluation Version 5)」のタイトルバーは、プロパティで
消すことができます。
当然ですが、体験版では消すことができません。

・Foxit PDF SDK ActiveX 版のタイトルバー
それらしいプロパティは存在しません。
ただ、PDF Viewer Component同様、体験版では消すことができないでしょう。

・PDFtoolkit VCL
テスト環境にインストールしていあるのがDelphi 5 のため、とりあえず
デモプログラムの PDFtoolkit VCL Viewer Exe Demo をダウンロード。
しかし、XPでも7でも盛大に文字化けしましたので、ビューア機能としては
改善されたとは言い難いです。
もしかすると、作成機能に関しては改善されているのかもしれませんが。


おかぽん  2015-08-05 02:45:44  No: 47501

時間がかかりましたが最後です

通りすがり 2015/07/28(火) 17:11:10 さんに紹介いただいたPDFium
https://code.google.com/p/pdfium/

PdfiumLib(https://github.com/ahausladen/PdfiumLib)とPdfiumViewer
https://github.com/pvginkel/PdfiumViewer)のpdfium.dllを利用
させていただきました。

テスト環境のDelphi5に合わせるため、PdfiumLibのソースをいろいろ書き換え
しましたが、それでも文字化けすることなく、正常に表示できました。
ただし、ページ移動のボタンとかは自分でコーディングする必要がありそうです。
複数ページがあってもスクロールバーも出ませんし、ページ内のリンク
クリックも反応しません(させる方法までは未チェックですけど)。
自前での実装が大変そうです。

とりあえずは、以上で動作したものを候補として、もう少し調査してみることにして、
本質問は、これにて〆させていただきます。

そして、多くの製品を紹介していただき、ありがとうございました。


おかぽん  2015-08-05 23:47:12  No: 47502

Debenu PDF Viewer SDK の価格訂正

「Debenu PDF Viewer SDK」は「Debenu Quick PDF Library」のアドオンなので、
「Debenu PDF Viewer SDK」単独で購入できません。
$450 は「Debenu Quick PDF Library」のライセンスを保持している人が
「Debenu PDF Viewer SDK」を購入する場合の価格
通常は「Debenu Quick PDF Library」とのセット購入が必要なので$949になるようです。

他の製品も同じようなミスがあるかもしれませんので、価格については、良く確認してください。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加