프로젝트의 소유권은 최근에 변경되었으며 우리는 프로젝트를 다시 추적 할 수있는 기고자를 적극적으로 찾고 있습니다. 방문하십시오
Androidpdfviewer 1.x는 Androidpdfviewerv1 Repo에서 사용할 수 있으며 독립적으로 개발할 수 있습니다. 버전 1.x는 캔버스에 문서를 그리는 데 다른 엔진을 사용하므로 2.x 버전이 마음에 들지 않으면 1.x를 사용해보십시오.
animations
, gestures
, zoom
및 double tap
지원이 포함 된 Android에 PDF 문서를 표시하기위한 라이브러리. PDF 파일을 디코딩하기위한 PDFiumAndroid를 기반으로합니다. API 11 (Android 3.0) 이상에서 작동합니다. Apache License 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 분기에서 스크롤 바를 교체합니다.
버전 2.1.0 ScrollHandle을 사용하려면 PDFVIEW를 RelativelAyout 에 넣는 것은 필요하지 않습니다. 모든 레이아웃을 사용할 수 있습니다.
스크롤 핸들을 사용하려면 메소드 Configurator#scrollHandle()
사용하여 등록하십시오. 이 메소드는 스크롤 핸들 인터페이스의 구현을 허용합니다.
Androidpdfviewer와 함께 제공되는 기본 구현이 있으며 .scrollHandle(new DefaultScrollHandle(this))
와 함께 사용할 수 있습니다. defaultscrollhandle 은 오른쪽 (수직으로 스크롤 할 때) 또는 하단 (가로로 스크롤 할 때)에 배치됩니다. new DefaultScrollHandle(this, true)
사용자 정의 스크롤 핸들을 만들고 스크롤 핸들 인터페이스를 구현할 수도 있습니다. 모든 방법은 인터페이스 소스에 대한 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 가지 모드로 페이지를 화면에 맞추는 것을 지원합니다.
선택된 정책 외에도 모든 페이지는 다른 페이지와 비교하여 크기를 갖도록 확장됩니다.
Configurator#pageFitPolicy(FitPolicy)
사용하여 FIT 정책을 설정할 수 있습니다. 기본 정책은 너비 입니다.
기본적으로 생성 된 비트 맵은 RGB_565
형식으로 압축하여 메모리 소비를 줄입니다. pdfView.useBestQuality(true)
메소드를 사용하여 ARGB_8888
로 렌더링 할 수 있습니다.
최소 (기본 1), 중간 (기본 1.75) 및 최대 (기본 3)의 세 가지 줌 레벨이 있습니다. 첫 번째 이중 탭에서는보기가 중간 레벨로 확대되고 최대 수준에서 2 점, 세 번째는 최소 레벨로 돌아갑니다. 중간과 최대 레벨 사이에 있다면 이중 태핑으로 인해 축소가 최대로 증가합니다.
다음 방법을 사용하여 줌 레벨을 변경할 수 있습니다.
void setMinZoom ( float zoom );
void setMidZoom ( float zoom );
void setMaxZoom ( float zoom );
Android PDFViewer는 많은 아키텍처에 대한 기본 라이브러리 (거의 16MB) 인 PDFiumAndroid에 의존합니다. APK에는 시장에서 이용할 수있는 모든 장치에서 실행하려면이 모든 라이브러리가 포함되어야합니다. 다행히 Google Play를 사용하면 모든 아키텍처 당 하나의 APK와 같은 여러 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 );
}
});
다음 설정의 조합을 사용하여 viewPager와 유사한 스크롤 및 플링 동작을 얻을 수 있습니다.
. 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.