From 3ce8f194fc72f8086f52cc76721b51bc1de55452 Mon Sep 17 00:00:00 2001 From: irwanto Date: Wed, 19 Feb 2025 18:52:29 +0700 Subject: [PATCH 1/2] Support RTL android adding RTL on android --- .../src/main/java/org/wonday/pdf/PdfView.java | 48 +++++++++++++++++-- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/android/src/main/java/org/wonday/pdf/PdfView.java b/android/src/main/java/org/wonday/pdf/PdfView.java index 7b7a1253..26162761 100644 --- a/android/src/main/java/org/wonday/pdf/PdfView.java +++ b/android/src/main/java/org/wonday/pdf/PdfView.java @@ -75,6 +75,7 @@ public class PdfView extends PDFView implements OnPageChangeListener,OnLoadCompl private FitPolicy fitPolicy = FitPolicy.WIDTH; private boolean singlePage = false; private boolean scrollEnabled = true; + private boolean enableRTL = false; private float originalWidth = 0; private float lastPageWidth = 0; @@ -84,6 +85,10 @@ public class PdfView extends PDFView implements OnPageChangeListener,OnLoadCompl private int oldW = 0; private int oldH = 0; + private int totalPages = 0; + private int[] pagesArrays; + private int bookmarks = 0; + public PdfView(Context context, AttributeSet set){ super(context, set); } @@ -280,7 +285,34 @@ protected void onAttachedToWindow() { public void drawPdf() { showLog(format("drawPdf path:%s %s", this.path, this.page)); - + File file = new File(this.path); + + if (file.exists()) { + try { + ParcelFileDescriptor fileDescriptor = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY); + PdfRenderer pdfRenderer = new PdfRenderer(fileDescriptor); + this.totalPages = pdfRenderer.getPageCount(); + int[] pagesArrays = new int[this.totalPages]; + if (this.enableRTL) { + if(this.page>0){ + this.page= this.bookmarks-1; + }else{ + this.page=this.totalPages; + } + for (int i = totalPages-1; i>=0; i--) { + pagesArrays[i] =totalPages-1- i; + } + this.pagesArrays = pagesArrays; + + }else{ + this.pagesArrays = null; + this.page=this.bookmarks-1; + } + } catch (IOException e) { + Log.e("error", "error read PDF", e); + } + } + if (this.path != null){ // set scale @@ -306,7 +338,9 @@ public void drawPdf() { configurator = this.fromUri(getURI(this.path)); } - configurator.defaultPage(this.page-1) + configurator + .pages(this.pagesArrays) + .defaultPage(this.page) .swipeHorizontal(this.horizontal) .onPageChange(this) .onLoad(this) @@ -346,9 +380,15 @@ public void setPath(String path) { // page start from 1 public void setPage(int page) { - this.page = page>1?page:1; + this.page = page; + this.bookmarks = page; } + public void setEnableRTL(boolean enableRTL){ + this.enableRTL= enableRTL; + + } + public void setScale(float scale) { this.scale = scale; } @@ -502,4 +542,4 @@ public boolean onTouch(View v, MotionEvent event) { } } } -} \ No newline at end of file +} From b187f7a5eb8e81f5ec7f56812b10ed4dbbbcc17d Mon Sep 17 00:00:00 2001 From: irwanto Date: Wed, 19 Feb 2025 18:58:49 +0700 Subject: [PATCH 2/2] add RTL android --- android/src/main/java/org/wonday/pdf/PdfManager.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/android/src/main/java/org/wonday/pdf/PdfManager.java b/android/src/main/java/org/wonday/pdf/PdfManager.java index 4186f179..ff139422 100644 --- a/android/src/main/java/org/wonday/pdf/PdfManager.java +++ b/android/src/main/java/org/wonday/pdf/PdfManager.java @@ -99,9 +99,9 @@ public void setShowsHorizontalScrollIndicator(PdfView view, boolean value) { // NOOP on Android } - @Override - public void setShowsVerticalScrollIndicator(PdfView view, boolean value) { - // NOOP on Android + @ReactProp(name = "enableRTL") + public void setEnableRTL(PdfView view, boolean enableRTL) { + pdfView.setEnableRTL(enableRTL); } @ReactProp(name = "scrollEnabled")