cordova-plugin-foxitpdf npm version

This plugin adds the ability to easily preview any PDF file in your Cordova application

Installation

cordova plugin add cordova-plugin-foxitpdf

It is also possible to install via repo url directly ( unstable )

cordova plugin add https://github.com/foxitsoftware/cordova-plugin-foxitpdf.git

Large files in the plugin may cause your update to fail. If that is the case, please try again following the steps below:

  1. Clone this project
  2. Add plugin from local using this command :
cordova plugin add ~/xxx/cordova-plugin-foxitpdf (This address is replaced by your own)

Integration for iOS

The iOS version of the cordova plugin only needs a few simple steps to deploy

  1. Unzip Foxit PDF SDK for iOS and copy libs folder into the component’s ios folder. (/xxx/platforms/ios/)

Please use foxitpdfsdk_(version_no)_ios.zip from https://developers.foxitsoftware.com/pdf-sdk/ios/

  1. Target -> General -> Embedded Binaries Add dynamic framework "FoxitRDK.framework" 、"uiextensionsDynamic.framework" and "FoxitPDFScanUI.framework" to Xcode’s Embedded Binaries

  2. Target -> General -> Linked Frameworks and Libraries -> + -> WebKit.framework

Note Do not forget to add pdf files You can add the PDF to Copy Bundle Resources directly. Just left-click the project, find 'Copy Bundle Resources' in the 'Build Phases' tab, click on the + button, and choose the file to add. You can refer to any PDF file, just add it to the Xcode’s Copy Bundle Resources. Or,you can use the pdf file under Document directory in sandbox

Now that the preparatory work has been completed,you can use this plugin everywhere in your project.

Integration for Android

  1. Migrating to AndroidX, Add the following configuration to xxx/platforms/android/gradle.propertie:

    android.useAndroidX=true
    android.enableJetifier=true
  2. Download foxitpdfsdk_(version_no)_android.zip from https://developers.foxitsoftware.com/pdf-sdk/android/ (Please use Foxit PDF SDK for Android 7.2.1)

  3. Unzip foxitpdfsdk_(version_no)_android.zip and copy libs folder into the component’s android folder. /xxx/platforms/android/

How to use this plugin for cordova developer

  1. Initialize

var sn = 'foxit_sn'; var key = 'foxit_key'; window.FoxitPdf.initialize(sn,key);


> 2. Open Pdf File

```javascript

var path = 'Your file path';
var password = 'password'; // If the PDF document is not encrypted by password, just pass an empty string.

window.FoxitPdf.openDocument(path, password);

How to change the UI of PDF viewer control?

For Foxit PDF SDK for iOS. The UI is handled within the "FoxitRDK.framework" and "uiextensionsDynamic.framework." The files that comes with the evaluation package, however, they also comes with the source, which you can compile and replace accordingly. The UI source can be located at "libs\uiextensions_src" You can find the uiextensions.xcodeproj in the same directory. Just open this project with xcode, modified it to your needs, build, and replace them accordingly in step 2 of the instruction at https://github.com/foxitsoftware/cordova-plugin-foxitpdf#integration-for-ios.

For Android, the UI is located at the binary at libs\FoxitRDKUIExtensions.aar. You can find the source for this binary in the package at foxitpdfsdk_XXX_android.zip at libs\uiextensions_src. You can open this project with Android Studio, modified it, and replaced the FoxitRDKUIExtensions.aar file accordingly. Step 2 of https://github.com/foxitsoftware/cordova-plugin-foxitpdf#integration-for-android is where the instructions on the github page indicates that it is being used.

JS API Reference

window.FoxitPdf.initialize

window.FoxitPdf.initialize(sn,key);

foxit_sn and foxit_key are required, otherwise the initialization will fail. rdk_key and rdk_sn can be found in the libs folder of foxitpdfsdk_(version_no)_ios.zip.


var sn = 'foxit_sn';
var key = 'foxit_key';
window.FoxitPdf.initialize(sn,key);

window.FoxitPdf.enableAnnotations

window.FoxitPdf.enableAnnotations(enable);

Note: To make it work, this function should be called before opening a document.


var enable = false;
window.FoxitPdf.enableAnnotations(enable);

window.FoxitPdf.openDocument

window.FoxitPdf.openDocument(path, password);

Note: The document can only be opened if the initialization is successful.


var path = 'Your file path';
var password = 'password'; // If the PDF document is not encrypted by password, just pass an empty string.

window.FoxitPdf.openDocument(path, password);

window.FoxitPdf.setSavePath

window.FoxitPdf.setSavePath(savePath);


var savePath = 'Your file path';// Document path that prevents overwriting on the preview file  _(if set)_
window.FoxitPdf.setSavePath(savePath);

window.FoxitPdf.importFromFDF

window.FoxitPdf.importFromFDF(fdf_doc_path, data_type, page_range);


var fdf_doc_path = 'Your file path';// FDF file path
var data_type = 0x0002;
var page_range = [[0,1],[2,3]]//[[start1, count1], [start2, count2]....]
window.FoxitPdf.importFromFDF(fdf_doc_path, data_type, page_range);

window.FoxitPdf.exportToFDF

window.FoxitPdf.exportToFDF(export_path, data_type, fdf_doc_type, page_range);


var fdf_doc_type = 0;
var export_path = '/Documents/annot_export.fdf';
var page_range = [[0,1],[2,3]]//[[start1, count1], [start2, count2]....]
var data_type = 0x0002;
window.FoxitPdf.exportToFDF(export_path, data_type, fdf_doc_type, page_range);

window.FoxitPdf.addEventListener

window.FoxitPdf.addEventListener(eventname,callback);

Add a listener for an event


window.FoxitPdf.addEventListener('onDocSaved',function(data){
console.log('onDocSaved callback ',data);
});

window.FoxitPdf.addEventListener('onDocOpened',function(data){
console.log('onDocOpened callback ',data);
});

Form.getAllFormFields

Form.getAllFormFields();

Return: An array of dictionaries will be returned, which contains all the form fields in the document, each field is represented as a dictionary, the following are the key/value pairs for the dictionary. Please refer to https://developers.foxitsoftware.com/resources/pdf-sdk/cplusplus_api_reference/index.html for more detail information about parameters such as fieldType, fieldFlag.... (Use keyword "Field" to search)

Form.getForm

Form.getForm();

Return: An dictionary will be returned, which contains the form related info. The following are the key/value pairs for the dictionary.

Form.updateForm

Form.updateForm(formInfo);

Parameters:The parameter for this API is a dictionary, and following are the key/value pairs for the dictionary.

Form.validateFieldName

Form.validateFieldName(fieldType,fieldName);

Parameters:

Return: true means the input field name is valid for the specified field type, false means not.

Form.renameField

Form.renameField(fieldIndex,newFieldName);

Parameters:

Return: true means success, while false means failure.

Form.removeField

Form.removeField(fieldIndex);

Parameters:

Form.reset

Form.reset();

Reset data of all fields (except signature fields) to their default value.

Return true means success, while false means failure.

Form.exportToXML

Form.exportToXML(filePath); Export the form data to an XML file.

Parameters:

Return true means success, while false means failure.

Form.importFromXML

Form.importFromXML(filePath); Import the form data from an XML file.

Parameters:

Return true means success, while false means failure.

Form.getPageControls

Form.getPageControls(pageIndex);

Parameters:

Return: An array of dictionaries will be returned, each dictionary contains the form related info. The following are the key/value pairs for the dictionary.

Form.removeControl

Form.removeControl(pageIndex, controlIndex);

Parameters:

Form.addControl

Form.addControl(pageIndex,fieldName,fieldType,rect);

Parameters:

Return: An dictionary will be returned, which contains the form related info. The following are the key/value pairs for the dictionary.

Form.updateControl

Form.updateControl(pageIndex,controlIndex, control);

This API is only valid for field type of checkbox and radiobutton.

Parameters:

Form.getFieldByControl

Form.getFieldByControl(pageIndex,controlIndex);

Parameters:

Return: Please refer to the return info of Form.getAllFormFields

Field.updateField

Field.updateField(fieldIndex,field);

Parameters:

Field.reset

Field.reset(fieldIndex);

Parameters:

Field.getFieldControls

Field.getFieldControls(fieldIndex);

Parameters:

Return: An array of dictionaries will be returned, each dictionary contains the form related info. The following are the key/value pairs for the dictionary.

ScanPdf.initializeScanner

ScanPdf.initializeScanner(serial1,serial2);

Initialize the scan module with additional parameters. This function must be called before any App Framework SDK object can be instantiated. Successful initialization of the SDK requires a valid serial number.

ScanPdf.initializeCompression

ScanPdf.initializeCompression(serial1,serial2);

Initialize the Mobile Compression SDK.

ScanPdf.createScanner

ScanPdf.createScanner();

Show scan file list

Note: The scan list can only be create if the initializeScanner & initializeCompression successful.

ScanPdf.addEventListener

ScanPdf.addEventListener(eventname,callback);

Add a listener for an event


ScanPdf.addEventListener('onDocumentAdded',function(data){
console.log('onDocumentAdded callback ',data);
   var errorCode = data.error;
   if(errorCode == 0){
      var filePath = data.info;
      window.FoxitPdf.openDocument(filePath, null);
   }
});

  

PPT

Please see our forum for more detailed information:

PPTX - How to use cordova-plugin-foxitpdf

YOUTUBE

How to use cordova-plugin-foxitpdf

iOS Screen Shot

Android Screen Shot

Supported Platforms

iOS Quirks

  1. The first argument in the preview method currently only supports absolute paths for incoming files.

You can obtain the absolute path to the file using the method provided by the [cordova-plugin-file] (https://github.com/apache/cordova-plugin-file) plugin.

Use the following command to add the [cordova-plugin-file] (https://github.com/apache/cordova-plugin-file) plugin to your project

cordova plugin add cordova-plugin-file
  1. Note: in some cases the resource folders are not added correctly and the number of items is the same because of XCode bug.(e.g. Xcode 8.3.3) In that case, remove the added reference from the project tree and add the Resource using the project tree - Add files to "YourProjectName". Remember to enable the option of "copy items if needed" and "create groups" when using this method.

If an error similar to the one in the following picture appears, try the method in step 2

Quick Example

A PDF file needs to be placed in the project beforehand. The location is in the project root by default


var filePathSaveTo = cordova.file.documentsDirectory + 'getting_started_ios_2.pdf'
window.FoxitPdf.setSavePath(filePathSaveTo);

var filePath cordova.file.applicationDirectory + 'getting_started_ios.pdf';
window.FoxitPdf.openDocument(filePath,'');

window.FoxitPdf.addEventListener('onDocOpened',function(data){
console.log('onDocOpened callback ',data);
console.log('onDocOpened callback info',data.info);
if (data.error == 0){
var data_type = 0x0002;
window.FoxitPdf.importFromFDF(cordova.file.documentsDirectory + 'Annot_all.fdf',data_type, [[0, 1]]);
}
});

Attention

  1. The product is still in its early stage of development. We will continue to focus on refining and improving this project.

  2. If your cordova version is 7.0.0, you might encounter this problem: no such file or directory, open 'xxxx/platforms/android/AndroidManifest.xml' this is a cordova bug, and the solution is provided in the link below: https://cordova.apache.org/announcements/2017/12/04/cordova-android-7.0.0.html

However this a major breaking change for people creating standalone Cordova Android projects. This also means that the locations of files have changed and have been brought in line to the structure used by Android Studio. This may affect plugin.xml files and config.xml files that use edit-config, and make it so plugins that use edit-config will not be able to be compatible with both Android 6.x and Android 7.x. To fix this issue, please do the following in your XML files

Versions

v7.2.1

v7.2.0

v7.1.0

v7.0.0

v6.4.0

v6.3.0

v6.2.1

v6.2

v6.1

Feedback or contribution code

You can ask us questions or report bugs in here.

You can also send email [email protected] to explain your problem.

If you have a better code implementation, please fork this project and launch your Pull-Request, we will promptly deal with. Thanks!

Request a Quote

If you encounter “Invalid license” tips, please go to the following URL for official trial license key:

https://developers.foxitsoftware.com/support

More Support

http://forums.foxitsoftware.com/forum/portable-document-format-pdf-tools/foxit-cloud/cordova-plugin-foxitpdf