カテゴリー別アーカイブ: PDF Viewer

☆Android対応 PDF描画ライブラリー pdfview☆

こんにちは!
アンテナハウスでは、Android 対応 PDF 描画ライブラリー Antenna House pdfview 1.0.1版を2015年6月3日にリリースいたしました。

お客様が開発される Android アプリケーションへ、PDF ファイルの表示・閲覧機能を組み込むことができる PDF 描画ライブラリーです。是非 Android アプリ開発にご利用ください!!

【製品の特長】
Android アプリで PDF 表示・検索が可能に!

  • PDF からビットマップへの変換を提供。
  • PDF からのテキスト抽出を提供。
  • ネイティブコードとして開発され、C言語API が提供されます。

サンプル簡易 PDF ビューアーが付属

  • すぐに実行可能な apk ファイルが付属。
  • ネイティブコードを Java から利用。
  • Java ソースコードが付属します。
  • ソースコードは開発にご利用頂けます。

アプリへの組み込みにご利用ください

  • 開発アプリケーションへの組み込み。
  • DRM や外部システムとの連携など、独自機能をもった PDF ビューアー開発。

☆すぐにお試し可能な評価版もございます。

詳しくは下記アンテナハウスのホームページをご確認ください。
→ http://www.antenna.co.jp/ahpdfview/

【お問合せ先】
アンテナハウス株式会社
OEM営業グループ
e-mail:oem@antenna.co.jp
tel:03-5829-9021


再配布用各種ビューア製品

OEM 営業グループでは、Windows の他に iOS/Android で動作するビューアを公開しています。今回はそれぞれのビューアの特徴をご紹介いたします。

  • PDF Viewer SDK
    Windows 32bit/64bit 用 PDF 表示ソリューションを開発するための開発者向けライブラリです。表示、文字列検索、印刷、画像保存の基本機能に加え、しおりの追記/修正や、サムネイルを操作する事ができます。主にアプリケーションの PDF 表示機能や PDF のダイレクト印刷、PDF の画像生成用など 30 社以上に供給しています。
  • Antenna House pdfview
    Android 用 PDF 表示ソリューションを開発するための開発者向けライブラリです。現在は β 版を公開中ですが、表示速度等の向上を行い、今月中にリリース版を公開する予定です。Android アプリ内で PDF の表示をさせたい場合にご利用いただけます。
  • iOS/Android 用ドキュメントビューアアプリ
    現在は、iOS 版の β 版を公開しています。こちらは上記製品と異なり、PDF に加えて、MS Office のデータ、一太郎データの表示が可能です。

上記ビューアは、全て国内自社開発の為、アフターサポートも安心してご使用いただけます。

お問い合わせ先
アンテナハウス株式会社
OEM 営業グループ
oem@antenna.co.jp
TEL: 03-5829-9021


pdfview の問題点

現状の pdfview にはまだまだ問題点があります。
そのうちのいくつかを説明します。

■描画の不具合

描画の不具合で、一つ上げると下記のファイルのマスク・重ね合わせ処理の違いがあります。
http://www.akita-jas.com/images/brochure.pdf

はっぴの画像でマスクの濃淡が反転しているように見えますが、何枚かの画像を重ね合わせていて違いの原因を細かく追い切れていません。他にも描画の不具合は、探せば色々見つかると思います。

■未実装の描画処理

未実装の描画処理もいくつかあります。
例えば注釈の描画、レイヤーの描き分けにまだ対応できていません。

注釈の例
http://www.adobe.com/jp/acrofamily/features/acro_nikkei/pdfs/Annotation.pdf

pdfview ではまだ注釈の表示はできません。
なお、PDF Viewer SDK では Viewer Control での注釈の表示は可能です。

レイヤーの例
http://www.pdfill.com/example/pdf_layer_new.pdf

画像の比較だけでは少しわかりにくいですが、元の PDF ファイルではページ内の各部分がレイヤーに分かれていてそれぞれ表示、非表示の切り替えができます。pdfview ではレイヤーの表示、非表示の切り替えに対応できておらず、すべて表示されます。pdfview ではページ下の × ✓ ⦿ の3つとも表示されていますが、本来はこのうちの一つだけが表示されるものです。

■サンプルの速度

Android のサンプルとしてビューアーアプリケーションを用意していますが、動作速度が遅いという問題があります。速度低下の原因は色々考えられるのですが、そのうち、拡大表示を行った時にあきらかに速度が落ちるという問題があります。これは内部の動作としてページ全体を描画してその一部を画面に表示するという、単純な実装になっている事が原因と考えています。拡大されたページ全体を描画するため、倍率の分増加する使用メモリーを確保する時間が必要で、また描画する領域も大きくなるのでその描画処理に時間がかかるという事です。

実際に描画が必要なのは表示される領域だけですので、描画する領域をページ内の表示する領域だけに絞って確保するメモリーを減らし、描画することで、ある程度は速度の改善は可能と考えています。
できれば次回公開する版に反映させたいと思います。

また、描画処理自体の処理も改善を図っていますので、新しい版のほうが速くなっているかと思います。


PDF 表示機能の比較 (2015-3-9)

以前、PDF ビューアーアプリケーションの表示機能の比較を1つのファイルについて行ってみました。
PDF 表示機能の比較

今回また pdfview のサンプルプログラムを含めて、複数のアプリケーションでサンプル PDF ファイルの表示を開いて比較しました。再現結果に差があったファイルについていくつか紹介しようと思います。

比較に使用したアプリケーションは下記のとおりです。

Adobe Reader XI バージョン 11.0.10 ・・(Adobe)
PDF-XChange Viewer バージョン 2.5 ・・(XChange)
Foxit J-Reader バージョン 7.0.7.1210 ・・(Foxit)
Antenna House PDF Viewer SDK バージョン 3.4 AvsPDFViewerSample ・・(ViewerSDK)
Antenna House pdfview 開発中の版 Windows ・・(pdfview)

以下ではそれぞれ、Adobe XChange Foxit ViewerSDK pdfview と略します。
Windows 8.1 Pro 上で実行しました。画面の解像度の設定は 96 dpi です。

■3BigPreview.pdf

以前比較したファイルと同じものです。
http://acroeng.adobe.com/Test_Files/viewing/3BigPreview.pdf

それぞれのアプリケーションで、倍率 50 % で表示しました。

細かい違いはあるもののそれぞれ問題なく描画されているようにみえます。 ただひとつ気になるのが ViewerSDK の Level 2 Pattern の箇所の画像のパターンが他のアプリケーションよりも大きい事です。

3BigPreview-pdfviewersdk-pattern

ViewerSDK-pattern

これは実はタイリングパターンの数が多いときに描画に時間がかかりすぎるため、パターンをある大きさ以下にはならないように制限を設けているというものなのです。そのためタイリングパターンを含むファイルは低倍率では正確に描画できなくなっています。 倍率を 50 % にしたのはそれを確認するためです。

■BlendModes-rgb.pdf

色の重ねあわせを表現するための PDF の仕様にブレンドモードというものがあります。
このファイルではブレンドモードの適応状況を確認することができます。
http://www.pdfvt.com/pdf/BlendModes-rgb.pdf

Foxit ViewerSDK は Adobe XChange pdfview に比べて再現性に劣ると言えるでしょう。

■taisyou.pdf

縦書きのサンプルです。
https://www.npa.go.jp/koutsuu/kikaku9/taisyou.pdf

XChange では括弧 “(” “)” が縦書き用のグリフで描画されないようです。

■zapf-dingbats.pdf

ZapfDingbats フォントのサンプルです。
http://www.w3.org/Style/XSL/TestSuite/contrib/XEP/Tests/zapf-dingbats.pdf

Adobe と Foxit で同じフォントが使われているようです。
XChange と pdfview もまた同じフォントのようですが、Adobe のものとは異なります。
(a1 ~ a3 のはさみの向きが目安になるでしょう。)
ViewerSDK は絵文字で描画されませんでした。

■結論

上記より Adobe を基準にすると pdfview が最も近い描画結果を得られるという結論となります。と言いたいところですが、今回は pdfview での描画に問題があるファイルはあえて選ばれておりません。しかし pdfview が他の描画システムよりも優位になる場合があることは確かだと言えるかと思います。
(pdfview 開発者記)

pdfview 及び PDF Viewer SDK については、鋭意改善しています。
次回 pdfview の問題点を紹介します。


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

サムネイルコントロール編~

以前の記事で、簡単な PDF ビューアを作成しました。今回は、サムネイル表示機能を追加してみます。
PDF Viewer SDK PDFビューア
サムネイル表示には、PDFThumbnailCtrl を使用します。
コントロールの配置は Visual Studio のツールボックスからドラッグ&ドロップするだけです。
PDF Viewer SDK サムネイル表示機能追加
さて、現時点では各コントロールは独立した状態なので、二つのコントロールの同期を取る必要があります。

  • 一方のコントロールで PDF ファイルがオープンされたら、もう一方のコントロールにオープンした PDF ファイルを割り当てる。
  • 一方のコントロールでページが遷移したら、もう一方のコントロールでも同じページに遷移する。

それぞれのタイミングで処理をするには、DocumentOpend イベント、PageTurned イベントのイベントハンドラを実装します。

では、コードを見てみましょう。(サンプルでは.Net I/F版C# 言語を使用)

private void pdfThumbnailCtrl1_DocumentOpened(int hPDFDocument)
{
   pdfPageViewCtrl1.AttachPDFDocument(hPDFDocument);
}
private void pdfPageViewCtrl1_DocumentOpened(int hPDFDocument)
{
   pdfThumbnailCtrl1.AttachPDFDocument(hPDFDocument);
}
private void pdfThumbnailCtrl1_PageTurned(int pageNumber)
{
   pdfPageViewCtrl1.GotoPage(pageNumber);
}
private void pdfPageViewCtrl1_PageTurned(int pageNumber)
{
   pdfThumbnailCtrl1.GotoPage(pageNumber);
}

オープンした PDF ファイルの割り当ては AttachDocument メソッド、指定のページへの遷移は GoToPage メソッドを使用します。

アプリケーションを実行します。

PDF Viewer SDK サムネイル表示

PDF ファイルを開くと、サムネイルと本文が表示され、サムネイルをクリックすると該当ページが表示されるようになりました。

このように、サムネイルの表示も簡単に追加することができました。
以上、PDFThumbnailCtrl の紹介でした。

アンテナハウス製品紹介セミナー

 2015年3月5日、アンテナハウス製品紹介セミナー が開催されます。PDF Viewer SDK のセッションや相談会もございますので、ご興味のある方はぜひご参加ください。

評価版のお申し込み:↓
http://www.antenna.co.jp/oem/ViewerSDK/trial.html
お問い合わせ:↓
SDK はOEM販売となります。OEMご相談窓口へお問い合わせください。


PDF Viewer SDK V3.4 リリース、PDFViewerAPIが64ビット対応

PDF Viewer SDK は、独自のWindows用PDFビューアーを開発するための組み込み用SDKです。OEM製品としてご提供しております。

PDF Viewer SDK には、PDFファイルのディスプレイへの描画(レンダリング)、画像ファイル出力、印刷が可能なライブラリであるPDFViewerAPI(C/C++)と、コントロールを貼り付けることで簡単にPDFビューアーの開発が可能なPDFViewerCtrl(ActiveX/.Net)の二つのコンポーネントがあります。

今回リリースされたV3.4では、PDFViewerAPI が 64ビットに対応しました。
(※PDFViewerCtrlは32ビット版のみです。)

従来は、64ビットOS上では WOW64エミュレーションにより32ビットで動作しておりました。今回より64ビットネイティブアプリケーションからも利用できるようになります。

  • アプリケーションが64ビットで開発されており、32ビット版が利用できない。
  • 32ビット版ではメモリ上限に達することがありメモリ不足になるケースを減らしたい。

などの場合、64ビット版のご利用をぜひご検討ください。

PDF Viewer SDK の機能その他の詳細について、下記のWebページをご覧ください。
また評価版もご用意しておりますので、ご興味のある方はぜひ評価版をお試しください。

PDF Viewer SDK
http://www.antenna.co.jp/oem/ViewerSDK/
評価版のお申し込み:
http://www.antenna.co.jp/oem/ViewerSDK/trial.html
お問い合わせ:
SDKはOEM販売となります。OEMご相談窓口へお問い合わせください。


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

前回、PDFを開くところまでアプリケーションを作成しました。
今回は、ページ送りなどの動作を追加して、もう少しビューアらしくしたいと思います。

ページ移動ボタンの追加

先頭/前/次/最終の各ページへの移動用ボタンを追加していきます。フォームデザイナでボタンを4つ貼り付け、Textプロパティを「<<」「<」「>」「>>」とします。

ボタン追加画面

ボタン追加画面

「開く」ボタンのコードを追加したときと同様に、ボタンクリック動作のメソッドを自動生成してコードを追加して行きます。

private void button2_Click(object sender, EventArgs e)
{
   pdfPageViewCtrl1.GotoFirstPage();
}
private void button2_Click(object sender, EventArgs e)
{
   pdfPageViewCtrl1.GotoFirstPage();
}
private void button3_Click(object sender, EventArgs e)
{
   pdfPageViewCtrl1.GotoPreviousPage();
}
private void button4_Click(object sender, EventArgs e)
{
   pdfPageViewCtrl1.GotoNextPage();
}
private void button5_Click(object sender, EventArgs e)
{
   pdfPageViewCtrl1.GotoLastPage();
}

コードはコントロールのページ移動用のメソッドを呼び出すだけです。
これでページ移動動作の実装は完了です。

表示モードの追加

次は表示モードを変更してみます。「幅に合わせる」「全体表示」ボタンを追加します。

表示モードの変更:ボタンの追加

表示モードの変更:ボタンの追加

同じくボタンの動作を作成します。ボタンクリック時のコードは下記を入力します。


private void button6_Click(object sender, EventArgs e)
{
   pdfPageViewCtrl1.ViewMode = AvsDotNetGuiCtl.AvsViewMode.AVM_FITWIDTH;
}
private void button7_Click(object sender, EventArgs e)
{
   pdfPageViewCtrl1.ViewMode = AvsDotNetGuiCtl.AvsViewMode.AVM_FITPAGE;
}

ここでは、PDFPageViewCtrlのViewModeプロパティを設定することで表示モードを変更しています。AVM_FITWIDTHが幅に合わせる、AVM_FITPAGEがページ全体表示に対応します。

アプリケーションの実行

ではアプリケーションを実行して見ましょう。

ビューア確認画面

ビューア確認画面

ページ移動のボタンで、ページ移動ができるようになっていると思います。
全体表示ボタンを押すと、ページ全体が表示されます。

このように、PDFViewCtrlに用意されたメソッドやプロパティを操作することで、簡単にビューア機能を組み込みアプリケーションから制御ができます。

SDK にはサンプルアプリケーションとして、本格的なビューアのサンプルソースコードも付属していますので、これをそのまま利用することもできます。

作成したPDFビューア(サンプル)

作成したPDFビューア(サンプル)

ご興味のある方はぜひ評価版をお試しください。
以上、PDFViewerCtrlのご紹介でした。
PDF Viewer SDK で簡単PDFビューア作成(4)に続きます。

評価版のお申し込み:
http://www.antenna.co.jp/oem/ViewerSDK/trial.html
お問い合わせ:
SDKはOEM販売となります。OEMご相談窓口へお問い合わせください。


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

『Antenna House PDF Viewer SDK』は PDF表示機能をアプリケーションに組み込むための開発者向けSDKです。
SDKに含まれるPDFViewerCtrlはGUIアプリケーションに簡単にPDFビューア機能を組み込むことを目的としたコンポーネントです。本日はPDFViewerCtrlを使用して、簡単なPDFビューアを作成して見たいと思います。.Net/ActiveXで開発が可能ですが、今回は.Net版を利用してC# でフォームアプリケーションを作成します。

開発環境
  • Visual Studio 2010 SP1(Visual C#)
  • .Net Framework 4.0

プロジェクトの作成

開発の準備としてVisual Studioを起動する前に、環境変数”Path”にbin¥Win32 フォルダのパスを追加しておきます(.Net版の場合のみ)。
Visual Studioを起動したら、新しいプロジェクトを作成します。 [ファイル]-[新規作成]-[プロジェクト]から「新しいプロジェクト」ダイアログを開きます。

Visual Studio 起動画面

Visual Studio 起動画面

今回は C#フォームアプリケーションとして開発するので、VisualC#の「Windowsフォーム アプリケーション」を選択します。
適当なプロジェクト名(ここでは” AvsDotNetGuiSample”)を入力し[OK]を押すと、プロジェクトが作成されます。

作成されたプロジェクト画面

作成されたプロジェクト画面

PDFViewerCtrlの登録

次にPDFViewerCtrlをツールボックスから選択しフォームデザイナ上で貼り付けられるようにするためにVisual Studioに登録します。

メニューから[ツール]-[ツールボックス アイテムの選択]を選ぶと「ツールボックスアイテムの選択」ダイアログが表示されます。このダイアログで、右下の「参照…」ボタンを押してbin¥Win32ディレクトリにある AvsDotNetGuiCtl.dllを選択します。

ツールボックス:アイテム選択画面

ツールボックス:アイテム選択画面

すると「.Net Frameworkコンポーネント」タブに “PDFPageViewCtrl” “PDFThumbnailCtrl”が表示されます。それぞれ、PDF表示用コントロール、サムネイル表示用のコントロールになります。今回は“PDFPageViewCtrl”を利用していきます。

“PDFPageViewCtrl” “PDFThumbnailCtrl”にチェックが付いていることを確認して[OK]を押します。

ダイアログが閉じたあと Visual Studioのツールボックスペインを開くと、“PDFPageViewCtrl” “PDFThumbnailCtrl”のアイコンが追加されているのを確認してください。

アイコン追加確認画面(画像右下)

アイコン追加確認画面(画像右下)

以上で、コントロールを貼り付ける準備が出来ました。

次回は、実際にコントロールを貼り付けて、PDFファイルをオープンするコードを追加して行きたいと思います。


PDF Viewer SDK で PDFテキスト抽出

Antenna House PDF Viewer SDKはPDF表示のためのSDKですが、表示以外にも PDFファイル内のテキストを抽出することができます。今回はこの機能をご紹介したいと思います。

テキスト抽出に利用するのはSDKの PDFViewerAPI です。
開発言語は C/C++ が利用できます。

矩形内テキスト取得(getTextInRect)

ページとそのページの矩形を指定してテキストを抽出します。

 例)矩形 (4535, 3798)-(7933, 4535) → テキスト “UVWXYZ”

矩形内テキスト取得画面

 座標系は、原点は左上、x軸は右方向、y軸は下方向に増加します。
 長さの単位はTWIPで1/20ポイント、1/1440インチに相当します。
 TWIP は「Twentieth of an Inch Point」の略だそうです。

 1インチは 25.4mm ですので、
 1 mm = 1440/25.4 TWIP ≒ 56.69 TWIP の計算になります。

 例1 の矩形は、mm 単位では (80.0, 67.0) – (141.0, 80.0) になります。

文字単位でのテキストおよび座標の抽出(getPageTextString/getPageTextRegion)

ページと、そのページ内での文字の開始位置と終了位置を指定して、テキスト(getPageTextString)もしくはテキスト領域(getPageTextRegion)を取得します。

  • 例)開始位置 20、終了位置 26 → テキスト “UVWXYZ”
  • 例)開始位置 0、終了位置 1  → テキスト “A”
文字単位でのテキストおよび座標の抽出 (getPageTextString/getPageTextRegion)

文字単位でのテキストおよび座標の抽出
(getPageTextString/getPageTextRegion)

(開始位置, 終了位置)=(0, 1), (1, 2)のように進めることで、PDF内の文字との文字領域を順に取得することもできます。

なお、テキストの順序は PDFのページに文字コードが現れる順になります。
PDFによっては必ずしも見た目の順と一致しない場合がありますので、注意が必要です。

以上、PDF表示以外での利用方法のご紹介でした。
 
評価版のお申し込み:
http://www.antenna.co.jp/oem/ViewerSDK/trial.html
お問い合わせ:
SDKはOEM販売となります。OEMご相談窓口へお問い合わせください。


Pages: Prev 1 2