Cordova Plugin to preview any file in native mode by providing the local or external URL
Whatever the file is PDF document, Word document, Excel, office document, archive file, image, text, html or anything else, you can perform a preview by this awesome cordova Plugin to preview any file in native mode by providing the local or external URL.
From version 0.2.0, you can preview the file from any where, you can use base64 or local file from assets or local files from the device or even from internet.
From version 0.2.0, you can overwrite the file name or its mime type, if the file has no extension at the end of the path
you can find the project at github
https://github.com/mostafa-mansour1/previewAnyFile
Using the built-in class QLPreviewController,
A QLPreviewController can display previews for the following items:
for any other file it will present the preview with message “cannot preview file” and there is a button to save the file in the device
Android not like ios, there is no way to render the file directly, the user must install a suitable application for every type.
So I used Intent.ACTION_VIEW to preview the file,
if there is a suitable application already installed in the user device it will preview the file directly,
if not, it will ask the user to select an application
the file path in android must be absolute path to the file starting with file:// or content://
$ cordova plugin add cordova-plugin-preview-any-file --save
for ionic projects
$ ionic cordova plugin add cordova-plugin-preview-any-file --save
Use this code to preview the file,
if the correct extension not exist at the last of the file path like
file://filepath/filename.ext
you must define the file name or its mimeType in the 2nd params {name:’file.png’,mimeType : ‘image/png’}
window.PreviewAnyFile.previewPath(
win =>
{
if (win == "SUCCESS") {
console.log('success')
} else if (win == "CLOSING") {
console.log('closing')
} else if (win == "NO_APP") {
console.log('no suitable app to open the file (mainly will appear on android')
} else {
console.log('error')
}
},
error => console.error("open failed", error),
"file://filepath/filename.ext"
);
you can use external link, the preview will not opened until the file downloaded successfully, so present loader before call the function then dismiss it in call back, you can define the name of the file or its mimeType in the options
// add your code here to show loader
window.PreviewAnyFile.previewPath(
win => console.log("open status",win),
error => console.error("open failed", error),
"http://www.domain.com/samplefile",{name : file.pdf}
);
window.PreviewAnyFile.previewBase64(
win => console.log("open status",win),
error => console.error("open failed", error),
'data:image/gif;base64,R0lGODlhP.....'
);
// you must define the mimeType or file name if the base64 string has no media type
window.PreviewAnyFile.previewBase64(
win => console.log("open status",win),
error => console.error("open failed", error),
'JVBERi0xLjMKJcTl8uXr.....',{mimeType:'application/pdf'}
);
window.PreviewAnyFile.previewAsset(
win => console.log("open status",win),
error => console.error("open failed", error),
'/assets/localFile.pdf'
);
// you must define the mimeType or file name if the base64 string has no media type
window.PreviewAnyFile.previewBase64(
win => console.log("open status",win),
error => console.error("open failed", error),
'/assets/fileWithoutExt',{mimeType:'application/pdf',name:'file.pdf'}
);
— version 0.2.9
— version 0.2.8
— version 0.2.7
— version 0.2.6
— version 0.2.3
— version 0.2.2
— version 0.2.1
— version 0.2.0
— version 0.1.7
— version 0.1.6
— version 0.1.5
— version 0.1.4
— version 0.1.3
— version 0.1.2
— version 0.1.1