Barteksc android pdf viewer
AndroidPdfViewer 1.x is available on AndroidPdfViewerV1 repo, where can be developed independently. Version 1.x uses different engine for drawing document on canvas, so if you don’t like 2.x version, try 1.x.
Library for displaying PDF documents on Android, with animations , gestures , zoom and double tap support. It is based on PdfiumAndroid for decoding PDF files. Works on API 11 (Android 3.0) and higher. Licensed under Apache License 2.0.
What’s new in 2.8.0?
- Add handling of invalid pages, inspired by pull request #433. Exception on page opening crashed application until now, currently OnPageErrorListener set with Configurator#onPageError() is called. Invalid page color ( Color class) can be set using Configurator#invalidPageColor()
- Implement canScrollVertically() and canScrollHorizontally() methods to work e.g. with SwipeRefreshLayout
- Fix bug when Configurator#load() method was called before view has been measured, which resulted in empty canvas
2.8.1 fixes bug with rendering PDFView in Android Studio Layout Editor
2.8.2 fixes not loaded pages when using animated PDFView#jumpTo()
Changes in 2.0 API
- Configurator#defaultPage(int) and PDFView#jumpTo(int) now require page index (i.e. starting from 0)
- OnPageChangeListener#onPageChanged(int, int) is called with page index (i.e. starting from 0)
- removed scrollbar
- added scroll handle as a replacement for scrollbar, use with Configurator#scrollHandle()
- added OnPageScrollListener listener due to continuous scroll, register with Configurator#onPageScroll()
- default scroll direction is vertical, so Configurator#swipeVertical() was changed to Configurator#swipeHorizontal()
- removed minimap and mask configuration
Add to build.gradle:
Library is available in jcenter repository, probably it’ll be in Maven Central soon.
Include PDFView in your layout
Load a PDF file
All available options with default values:
- pages is optional, it allows you to filter and order the pages of the PDF as you need
Scroll handle is replacement for ScrollBar from 1.x branch.
From version 2.1.0 putting PDFView in RelativeLayout to use ScrollHandle is not required, you can use any layout.
To use scroll handle just register it using method Configurator#scrollHandle() . This method accepts implementations of ScrollHandle interface.
There is default implementation shipped with AndroidPdfViewer, and you can use it with .scrollHandle(new DefaultScrollHandle(this)) . DefaultScrollHandle is placed on the right (when scrolling vertically) or on the bottom (when scrolling horizontally). By using constructor with second argument ( new DefaultScrollHandle(this, true) ), handle can be placed left or top.
You can also create custom scroll handles, just implement ScrollHandle interface. All methods are documented as Javadoc comments on interface source.
Version 2.3.0 introduced document sources, which are just providers for PDF documents. Every provider implements DocumentSource interface. Predefined providers are available in com.github.barteksc.pdfviewer.source package and can be used as samples for creating custom ones.
Predefined providers can be used with shorthand methods:
Custom providers may be used with pdfView.fromSource(DocumentSource) method.
By default, generated bitmaps are compressed with RGB_565 format to reduce memory consumption. Rendering with ARGB_8888 can be forced by using pdfView.useBestQuality(true) method.
Double tap zooming
There are three zoom levels: min (default 1), mid (default 1.75) and max (default 3). On first double tap, view is zoomed to mid level, on second to max level, and on third returns to min level. If you are between mid and max levels, double tapping causes zooming to max and so on.
Zoom levels can be changed using following methods:
Why resulting apk is so big?
Android PdfViewer depends on PdfiumAndroid, which is set of native libraries (almost 16 MB) for many architectures. Apk must contain all this libraries to run on every device available on market. Fortunately, Google Play allows us to upload multiple apks, e.g. one per every architecture. There is good article on automatically splitting your application into multiple apks, available here. Most important section is Improving multiple APKs creation and versionCode handling with APK Splits, but whole article is worth reading. You only need to do this in your application, no need for forking PdfiumAndroid or so.
Why I cannot open PDF from URL?
Downloading files is long running process which must be aware of Activity lifecycle, must support some configuration, data cleanup and caching, so creating such module will probably end up as new library.
How can I show last opened page after configuration change?
You have to store current page number and then set it with pdfView.defaultPage(page) , refer to sample app
How can I fit document to screen width (eg. on orientation change)?
Use this code snippet:
If you have any suggestions on making this lib better, write me, create issue or write some code and send pull request.
Created with the help of android-pdfview by Joan Zapata
About
Android view for displaying PDFs rendered with PdfiumAndroid
Источник
Barteksc android pdf viewer
This is repo with version 1.x of AndroidPdfViewer. Version 1.x uses different engine for drawing document on canvas, so if you don’t like 2.x version, try this. This version is still updated and supported.
Library for displaying PDF documents on Android, with animations , gestures , zoom and double tap support. It is based on PdfiumAndroid for decoding PDF files. Works on API 11 and higher. Licensed under Apache License 2.0.
What’s new in 1.6.0?
- Add change from AndroidPdfViewer 2.4.0 which replaces RenderingAsyncTask with Handler to simplify code and work with testing frameworks
Add to build.gradle:
Library is available in jcenter repository, probably it’ll be in Maven Central soon.
Include PDFView in your layout
Load a PDF file
All available options with default values:
- enableSwipe is optional, it allows you to block changing pages using swipe
- pages is optional, it allows you to filter and order the pages of the PDF as you need
- onDraw is also optional, and allows you to draw something on a provided canvas, above the current page
Use ScrollBar class to place scrollbar view near PDFView
in layout XML (it’s important that the parent view is RelativeLayout):
in activity or fragment
scrollBar.setHorizontal(true); or app:sb_horizontal=»true» may be used to set ScrollBar in horizontal mode.
ScrollBarPageIndicator is added to scrollbar automatically and is shown while dragging scrollbar handler, displaying number of page on current position. Its position is automatically calculated based on ScrollBar‘s position.
Version 1.5.0 introduced document sources, which are just providers for PDF documents. Every provider implements DocumentSource interface. Predefined providers are available in com.github.barteksc.pdfviewer.source package and can be used as samples for creating custom ones.
Predefined providers can be used with shorthand methods:
Custom providers may be used with pdfView.fromSource(DocumentSource) method.
By default, generated bitmaps are compressed with RGB_565 format to reduce memory consumption. Rendering with ARGB_8888 can be forced by using pdfView.useBestQuality(true) method.
Double tap zooming
There are three zoom levels: min (default 1), mid (default 1.75) and max (default 3). On first double tap, view is zoomed to mid level, on second to max level, and on third returns to min level. If you are between mid and max levels, double tapping causes zooming to max and so on.
Zoom levels can be changed using following methods:
Why resulting apk is so big?
Android PdfViewer depends on PdfiumAndroid, which is set of native libraries (almost 16 MB) for many architectures. Apk must contain all this libraries to run on every device available on market. Fortunately, Google Play allows us to upload multiple apks, e.g. one per every architecture. There is good article on automatically splitting your application into multiple apks, available here. Most important section is Improving multiple APKs creation and versionCode handling with APK Splits, but whole article is worth reading. You only need to do this in your application, no need for forking PdfiumAndroid or so.
If you have any suggestions on making this lib better, write me, create issue or write some code and send pull request.
Created with the help of android-pdfview by Joan Zapata
Источник
Barteksc android pdf viewer
Looking for new maintainer!
AndroidPdfViewer 1.x is available on AndroidPdfViewerV1 repo, where can be developed independently. Version 1.x uses different engine for drawing document on canvas, so if you don’t like 2.x version, try 1.x.
Library for displaying PDF documents on Android, with animations , gestures , zoom and double tap support. It is based on PdfiumAndroid for decoding PDF files. Works on API 11 (Android 3.0) and higher. Licensed under Apache License 2.0.
What’s new in 3.2.0-beta.1?
- Merge PR #714 with optimized page load
- Merge PR #776 with fix for max & min zoom level
- Merge PR #722 with fix for showing right position when view size changed
- Merge PR #703 with fix for too many threads
- Merge PR #702 with fix for memory leak
- Merge PR #689 with possibility to disable long click
- Merge PR #628 with fix for hiding scroll handle
- Merge PR #627 with fitEachPage option
- Merge PR #638 and #406 with fixed NPE
- Merge PR #780 with README fix
- Update compile SDK and support library to 28
- Update Gradle and Gradle Plugin
Changes in 3.0 API
- Replaced Contants.PRELOAD_COUNT with PRELOAD_OFFSET
- Removed PDFView#fitToWidth() (variant without arguments)
- Removed Configurator#invalidPageColor(int) method as invalid pages are not rendered
- Removed page size parameters from OnRenderListener#onInitiallyRendered(int) method, as document may have different page sizes
- Removed PDFView#setSwipeVertical() method
Add to build.gradle:
or if you want to use more stable version:
Library is available in jcenter repository, probably it’ll be in Maven Central soon.
If you are using ProGuard, add following rule to proguard config file:
Include PDFView in your layout
Load a PDF file
All available options with default values:
- pages is optional, it allows you to filter and order the pages of the PDF as you need
Scroll handle is replacement for ScrollBar from 1.x branch.
From version 2.1.0 putting PDFView in RelativeLayout to use ScrollHandle is not required, you can use any layout.
To use scroll handle just register it using method Configurator#scrollHandle() . This method accepts implementations of ScrollHandle interface.
There is default implementation shipped with AndroidPdfViewer, and you can use it with .scrollHandle(new DefaultScrollHandle(this)) . DefaultScrollHandle is placed on the right (when scrolling vertically) or on the bottom (when scrolling horizontally). By using constructor with second argument ( new DefaultScrollHandle(this, true) ), handle can be placed left or top.
You can also create custom scroll handles, just implement ScrollHandle interface. All methods are documented as Javadoc comments on interface source.
Version 2.3.0 introduced document sources, which are just providers for PDF documents. Every provider implements DocumentSource interface. Predefined providers are available in com.github.barteksc.pdfviewer.source package and can be used as samples for creating custom ones.
Predefined providers can be used with shorthand methods:
Custom providers may be used with pdfView.fromSource(DocumentSource) method.
Version 3.0.0 introduced support for links in PDF documents. By default, DefaultLinkHandler is used and clicking on link that references page in same document causes jump to destination page and clicking on link that targets some URI causes opening it in default application.
You can also create custom link handlers, just implement LinkHandler interface and set it using Configurator#linkHandler(LinkHandler) method. Take a look at DefaultLinkHandler source to implement custom behavior.
Pages fit policy
Since version 3.0.0, library supports fitting pages into the screen in 3 modes:
- WIDTH — width of widest page is equal to screen width
- HEIGHT — height of highest page is equal to screen height
- BOTH — based on widest and highest pages, every page is scaled to be fully visible on screen
Apart from selected policy, every page is scaled to have size relative to other pages.
Fit policy can be set using Configurator#pageFitPolicy(FitPolicy) . Default policy is WIDTH.
By default, generated bitmaps are compressed with RGB_565 format to reduce memory consumption. Rendering with ARGB_8888 can be forced by using pdfView.useBestQuality(true) method.
Double tap zooming
There are three zoom levels: min (default 1), mid (default 1.75) and max (default 3). On first double tap, view is zoomed to mid level, on second to max level, and on third returns to min level. If you are between mid and max levels, double tapping causes zooming to max and so on.
Zoom levels can be changed using following methods:
Why resulting apk is so big?
Android PdfViewer depends on PdfiumAndroid, which is set of native libraries (almost 16 MB) for many architectures. Apk must contain all this libraries to run on every device available on market. Fortunately, Google Play allows us to upload multiple apks, e.g. one per every architecture. There is good article on automatically splitting your application into multiple apks, available here. Most important section is Improving multiple APKs creation and versionCode handling with APK Splits, but whole article is worth reading. You only need to do this in your application, no need for forking PdfiumAndroid or so.
Why I cannot open PDF from URL?
Downloading files is long running process which must be aware of Activity lifecycle, must support some configuration, data cleanup and caching, so creating such module will probably end up as new library.
How can I show last opened page after configuration change?
You have to store current page number and then set it with pdfView.defaultPage(page) , refer to sample app
How can I fit document to screen width (eg. on orientation change)?
Use FitPolicy.WIDTH policy or add following snippet when you want to fit desired page in document with different page sizes:
How can I scroll through single pages like a ViewPager?
You can use a combination of the following settings to get scroll and fling behaviour similar to a ViewPager:
If you have any suggestions on making this lib better, write me, create issue or write some code and send pull request.
Created with the help of android-pdfview by Joan Zapata
About
Android view for displaying PDFs rendered with PdfiumAndroid
Источник