| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Uses pdfium library from AOSP
The demo app (for not modified lib) is here
Forked for use with AndroidPdfViewer project.
API is highly compatible with original version, only additional methods were created.
The purpose is to remove old support libraries so we no longer need to use jetifier.
It will be used with the forked AndroidPdFViewer
This fork modernizes the build and publishing setup to current Android tooling while preserving the original API.
Publishing is configured via maven-publish. For JitPack builds, we publish to Maven Local and skip GPG signing (see Build Flags).
This is functionally the same as 1.9.1 just fixing some documentation on maven central
Add to your Gradle build:
maven { url 'https://jitpack.io' }
implementation 'com.github.BlueCodeSystems:pdfium-android:<version>'
Replace <version> with the JitPack tag or commit you want to consume.
Library is available in jcenter and Maven Central repositories.
Use the helper script to build, sign, checksum, and zip a Central-ready bundle without publishing:
./scripts/central-bundle.sh
Requirements:
Outputs a zip at build/distributions/central-bundle-<artifactId>-<version>.zip suitable for upload at https://s01.oss.sonatype.org/.
This repository uses the following flags to ensure successful JitPack builds without requiring signing keys:
On JitPack, we run:
./gradlew --no-daemon -x test -x lint \
-PskipSigning=true \
-PGROUP=com.github.${OWNER} \
-PVERSION_NAME=${VERSION} \
publishToMavenLocal
This publishes the AAR and POM to ~/.m2, which JitPack then picks up to produce the final artifacts.
Version 1.8.0 added method for getting page size - PdfiumCore#getPageSize(...). It is important to note, that this method does not require page to be opened. However, there are also old PdfiumCore#getPageWidth(...), PdfiumCore#getPageWidthPoint(...), PdfiumCore#getPageHeight() and PdfiumCore#getPageHeightPoint() which require page to be opened.
This inconsistency will be resolved in next major version, which aims to redesign API.
Version 1.8.0 introduces PdfiumCore#getPageLinks(PdfDocument, int) method, which allows to get list of links from given page. Links are returned as List of type PdfDocument.Link. PdfDocument.Link holds destination page (may be null), action URI (may be null or empty) and link bounds in document page coordinates. To map page coordinates to screen coordinates you may use PdfiumCore#mapRectToDevice(...). See PdfiumCore#mapPageCoordsToDevice(...) for parameters description.
Sample usage:
PdfiumCore core = ...;
PdfDocument document = ...;
int pageIndex = 0;
core.openPage(document, pageIndex);
List<PdfDocument.Link> links = core.getPageLinks(document, pageIndex);
for (PdfDocument.Link link : links) {
RectF mappedRect = core.mapRectToDevice(document, pageIndex, ..., link.getBounds())
if (clickedArea(mappedRect)) {
String uri = link.getUri();
if (link.getDestPageIdx() != null) {
// jump to page
} else if (uri != null && !uri.isEmpty()) {
// open URI using Intent
}
}
}void openPdf() {
ImageView iv = (ImageView) findViewById(R.id.imageView);
ParcelFileDescriptor fd = ...;
int pageNum = 0;
PdfiumCore pdfiumCore = new PdfiumCore(context);
try {
PdfDocument pdfDocument = pdfiumCore.newDocument(fd);
pdfiumCore.openPage(pdfDocument, pageNum);
int width = pdfiumCore.getPageWidthPoint(pdfDocument, pageNum);
int height = pdfiumCore.getPageHeightPoint(pdfDocument, pageNum);
// ARGB_8888 - best quality, high memory usage, higher possibility of OutOfMemoryError
// RGB_565 - little worse quality, twice less memory usage
Bitmap bitmap = Bitmap.createBitmap(width, height,
Bitmap.Config.RGB_565);
pdfiumCore.renderPageBitmap(pdfDocument, bitmap, pageNum, 0, 0,
width, height);
//if you need to render annotations and form fields, you can use
//the same method above adding 'true' as last param
iv.setImageBitmap(bitmap);
printInfo(pdfiumCore, pdfDocument);
pdfiumCore.closeDocument(pdfDocument); // important!
} catch(IOException ex) {
ex.printStackTrace();
}
}
public void printInfo(PdfiumCore core, PdfDocument doc) {
PdfDocument.Meta meta = core.getDocumentMeta(doc);
Log.e(TAG, "title = " + meta.getTitle());
Log.e(TAG, "author = " + meta.getAuthor());
Log.e(TAG, "subject = " + meta.getSubject());
Log.e(TAG, "keywords = " + meta.getKeywords());
Log.e(TAG, "creator = " + meta.getCreator());
Log.e(TAG, "producer = " + meta.getProducer());
Log.e(TAG, "creationDate = " + meta.getCreationDate());
Log.e(TAG, "modDate = " + meta.getModDate());
printBookmarksTree(core.getTableOfContents(doc), "-");
}
public void printBookmarksTree(List<PdfDocument.Bookmark> tree, String sep) {
for (PdfDocument.Bookmark b : tree) {
Log.e(TAG, String.format("%s %s, p %d", sep, b.getTitle(), b.getPageIdx()));
if (b.hasChildren()) {
printBookmarksTree(b.getChildren(), sep + "-");
}
}
}Go to PROJECT_PATH/src/main/jni and run command $ ndk-build. This step may be executed only once, every future .aar build will use generated libs.
| Back | FazBrowse Home | New Git URL |