プロジェクトの所有権は最近変更され、プロジェクトを追跡するための貢献者を積極的に探しています。訪問してください
androidpdfviewer 1.xは、androidpdfviewerv1リポジトリで利用でき、独立して開発できます。バージョン1.xは、キャンバスにドキュメントを描画するために異なるエンジンを使用するため、2.xバージョンが気に入らない場合は1.xを試してください。
AndroidにPDFドキュメントを表示するためのライブラリ、 animations
、 gestures
、 zoom
、およびdouble tap
サポートを備えています。 PDFファイルをデコードするためのPDFIUMANDROIDに基づいています。 API 11(Android 3.0)以上で動作します。 Apacheライセンス2.0に基づいてライセンスされています。
fitEachPage
オプションでPR#627をマージしますPRELOAD_OFFSET
にContants.PRELOAD_COUNT
置き換えましたPDFView#fitToWidth()
(引数のないバリアント)Configurator#invalidPageColor(int)
メソッドは無効なページがレンダリングされませんOnRenderListener#onInitiallyRendered(int)
メソッドからページサイズのパラメーターを削除します。PDFView#setSwipeVertical()
メソッドを削除しましたbuild.gradleに追加:
implementation 'com.github.barteksc:android-pdf-viewer:3.2.0-beta.1'
または、より安定したバージョンを使用する場合:
implementation 'com.github.barteksc:android-pdf-viewer:2.8.2'
ライブラリはJCenterリポジトリで利用できますが、おそらくMaven Centralにすぐに開催されるでしょう。
Proguardを使用している場合は、次のルールをProguard configファイルに追加します。
-keep class com.shockwave.**
< com .github.barteksc.pdfviewer.PDFView
android : id = " @+id/pdfView "
android : layout_width = " match_parent "
android : layout_height = " match_parent " />
デフォルト値を持つすべての利用可能なオプション:
pdfView . fromUri ( Uri )
or
pdfView . fromFile ( File )
or
pdfView . fromBytes ( byte [])
or
pdfView . fromStream ( InputStream ) // stream is written to bytearray - native code cannot use Java Streams
or
pdfView . fromSource ( DocumentSource )
or
pdfView . fromAsset ( String )
. pages ( 0 , 2 , 1 , 3 , 3 , 3 ) // all pages are displayed by default
. enableSwipe ( true ) // allows to block changing pages using swipe
. swipeHorizontal ( false )
. enableDoubletap ( true )
. defaultPage ( 0 )
// allows to draw something on the current page, usually visible in the middle of the screen
. onDraw ( onDrawListener )
// allows to draw something on all pages, separately for every page. Called only for visible pages
. onDrawAll ( onDrawListener )
. onLoad ( onLoadCompleteListener ) // called after document is loaded and starts to be rendered
. onPageChange ( onPageChangeListener )
. onPageScroll ( onPageScrollListener )
. onError ( onErrorListener )
. onPageError ( onPageErrorListener )
. onRender ( onRenderListener ) // called after document is rendered for the first time
// called on single tap, return true if handled, false to toggle scroll handle visibility
. onTap ( onTapListener )
. onLongPress ( onLongPressListener )
. enableAnnotationRendering ( false ) // render annotations (such as comments, colors or forms)
. password ( null )
. scrollHandle ( null )
. enableAntialiasing ( true ) // improve rendering a little bit on low-res screens
// spacing between pages in dp. To define spacing color, set view background
. spacing ( 0 )
. autoSpacing ( false ) // add dynamic spacing to fit each page on its own on the screen
. linkHandler ( DefaultLinkHandler )
. pageFitPolicy ( FitPolicy . WIDTH ) // mode to fit pages in the view
. fitEachPage ( false ) // fit each page to the view, else smaller pages are scaled relative to largest page.
. pageSnap ( false ) // snap pages to screen boundaries
. pageFling ( false ) // make a fling change only a single page like ViewPager
. nightMode ( false ) // toggle night mode
. load ();
pages
オプションであり、必要に応じてPDFのページをフィルタリングおよび注文できますスクロールハンドルは、1.xブランチのScrollbarを交換します。
バージョン2.1.0から、 PDFViewをrelativeLayoutに置くためにScrolllollhandleを使用することは不要で、レイアウトを使用できます。
使用するには、Method Configurator#scrollHandle()
使用して登録するだけです。この方法は、Scrollhandleインターフェイスの実装を受け入れます。
AndroidPDFViewerを使用して出荷されたデフォルトの実装があり、 .scrollHandle(new DefaultScrollHandle(this))
で使用できます。 DefaultScrollhandleは、右側(垂直にスクロールするとき)または底部(水平方向にスクロールするとき)に配置されます。 2番目の引数( new DefaultScrollHandle(this, true)
)を持つコンストラクターを使用することにより、ハンドルを左または上部に配置できます。
また、カスタムスクロールハンドルを作成し、 Scrollhandleインターフェイスを実装することもできます。すべての方法は、インターフェイスソースに関するJavadocのコメントとして文書化されています。
バージョン2.3.0は、PDFドキュメント用のプロバイダーであるドキュメントソースを紹介しました。すべてのプロバイダーは、 DocumentSourceインターフェイスを実装しています。事前定義されたプロバイダーは、 com.github.barteksc.pdfviewer.sourceパッケージで入手でき、カスタムのプロバイダーを作成するためのサンプルとして使用できます。
事前定義されたプロバイダーは、速記の方法で使用できます。
pdfView.fromUri(Uri)
pdfView.fromFile(File)
pdfView.fromBytes(byte[])
pdfView.fromStream(InputStream)
pdfView.fromAsset(String)
カスタムプロバイダーはpdfView.fromSource(DocumentSource)
メソッドで使用できます。
バージョン3.0.0は、PDFドキュメントでリンクのサポートを導入しました。デフォルトでは、 DefaultLinkHandlerが使用され、同じドキュメント内のページを参照するリンクをクリックして、宛先ページにジャンプし、いくつかのURIがデフォルトアプリケーションで開く原因をターゲットにするリンクをクリックします。
また、カスタムリンクハンドラーを作成し、 LinkHandlerインターフェイスを実装して、 Configurator#linkHandler(LinkHandler)
メソッドを使用して設定することもできます。 DefaultLinkhandlerソースを見て、カスタム動作を実装してください。
バージョン3.0.0以降、ライブラリは3つのモードでページを画面にサポートしています。
選択されたポリシーとは別に、すべてのページが他のページに比べてサイズがあるようにスケーリングされます。
FITポリシーはConfigurator#pageFitPolicy(FitPolicy)
を使用して設定できます。デフォルトのポリシーは幅です。
デフォルトでは、生成されたビットマップはRGB_565
形式で圧縮され、メモリ消費量を削減します。 ARGB_8888
でレンダリングすることは、 pdfView.useBestQuality(true)
メソッドを使用して強制できます。
3つのズームレベルがあります:MIN(デフォルト1)、MID(デフォルト1.75)、および最大(デフォルト3)。最初のダブルタップでは、ビューは中間レベルにズームされ、2番目に最大レベルに、3回目のリターンで最小レベルに戻ります。中間レベルと最大レベルの間にある場合、二重のタッピングによりズームが最大などになります。
ズームレベルは、次の方法を使用して変更できます。
void setMinZoom ( float zoom );
void setMidZoom ( float zoom );
void setMaxZoom ( float zoom );
Android PDFViewerは、多くのアーキテクチャでネイティブライブラリ(ほぼ16 MB)のセットであるPDFiumandroidに依存しています。 APKは、市場で利用可能なすべてのデバイスで実行するために、このすべてのライブラリを含める必要があります。幸いなことに、Google Playを使用すると、複数のAPK、たとえばすべてのアーキテクチャごとにアップロードできます。アプリケーションを自動的に複数のAPKに分割するという良い記事があります。最も重要なセクションは、 APKスプリットで複数のAPKの作成とバージョンコード処理を改善することですが、記事全体を読む価値があります。アプリケーションでこれを行うだけで、PDFiumandroidなどを分岐する必要はありません。
ファイルのダウンロードは、アクティビティライフサイクルを認識する必要がある長い実行プロセスであり、構成、データのクリーンアップ、キャッシュをサポートする必要があるため、このようなモジュールの作成はおそらく新しいライブラリになります。
現在のページ番号を保存してから、 pdfView.defaultPage(page)
で設定する必要があります。サンプルアプリを参照してください
FitPolicy.WIDTH
ポリシーを使用するか、異なるページサイズのドキュメントに希望のページをフィットする場合は、次のスニペットを追加します。
Configurator . onRender ( new OnRenderListener () {
@ Override
public void onInitiallyRendered ( int pages , float pageWidth , float pageHeight ) {
pdfView . fitToWidth ( pageIndex );
}
});
次の設定の組み合わせを使用して、ビューページと同様のスクロールとフリングの動作を取得できます。
. swipeHorizontal ( true )
. pageSnap ( true )
. autoSpacing ( true )
. pageFling ( true )
このLIBをより良くすることについて何か提案がある場合は、私を書き、問題を作成するか、コードを書き、プルリクエストを送信してください。
Joan ZapataによってAndroid-PDFViewの助けを借りて作成されました
Copyright 2017 Bartosz Schiller
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.