scientifichackers / flutter_pdf_viewer Goto Github PK
View Code? Open in Web Editor NEWA native PDF viewer for flutter.
License: MIT License
A native PDF viewer for flutter.
License: MIT License
I'm using 'flutter_pdf_viewer' to view downloaded pdfs on android devices for ios I have a device check and open pdfs using 'flutter_full_pdf_viewer'. When I try to build the app it fails and the VSC terminal returns the following errors
Launching lib/main.dart on IT’s iPhone in debug mode...
Automatically signing iOS for device deployment using specified development team in Xcode project: xxxxxxx
Xcode build done. 14.4s
Failed to build iOS app
Error output from Xcode build:
↳
2019-02-27 10:01:42.908 xcodebuild[xxx:xxxx] DTDeviceKit: deviceType from xxxxxxx was NULL
** BUILD FAILED **
Xcode's output:
↳
=== BUILD TARGET url_launcher OF PROJECT Pods WITH CONFIGURATION Debug ===
/Users/xxx/Documents/Programming/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_pdf_viewer-0.2.0/ios/Classes/SwiftFlutterPdfViewerPlugin.swift:1:1: error: unknown type name 'import'
import Flutter
^
/Users/xxx/Documents/Programming/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_pdf_viewer-0.2.0/ios/Classes/SwiftFlutterPdfViewerPlugin.swift:1:15: error: expected ';' after top level declarator
import Flutter
^
;
2 errors generated.
Could not build the precompiled application for the device.
Error launching application on IT’s iPhone.
Exited (sigterm)
pod install
Analyzing dependencies
Fetching podspec for `Flutter` from `.symlinks/flutter/ios`
Fetching podspec for `device_info` from `.symlinks/plugins/device_info/ios`
Fetching podspec for `flutter_full_pdf_viewer` from `.symlinks/plugins/flutter_full_pdf_viewer/ios`
Fetching podspec for `flutter_pdf_viewer` from `.symlinks/plugins/flutter_pdf_viewer/ios`
Fetching podspec for `onesignal` from `.symlinks/plugins/onesignal/ios`
Fetching podspec for `open_file` from `.symlinks/plugins/open_file/ios`
Fetching podspec for `package_info` from `.symlinks/plugins/package_info/ios`
Fetching podspec for `path_provider` from `.symlinks/plugins/path_provider/ios`
Fetching podspec for `sqflite` from `.symlinks/plugins/sqflite/ios`
Fetching podspec for `url_launcher` from `.symlinks/plugins/url_launcher/ios`
Downloading dependencies
Using FMDB (2.7.5)
Using Flutter (1.0.0)
Using OneSignal (2.9.5)
Using device_info (0.0.1)
Using flutter_full_pdf_viewer (1.0.1)
Using flutter_pdf_viewer (0.0.1)
Using onesignal (1.0.5)
Using open_file (0.0.1)
Using package_info (0.0.1)
Using path_provider (0.0.1)
Using sqflite (0.0.1)
Using url_launcher (0.0.1)
Generating Pods project
Integrating client project
Pod installation complete! There are 11 dependencies from the Podfile and 12 total pods installed.
[✓] Flutter (Channel dev, v1.2.1, on Mac OS X 10.14.2 18C54, locale en-GB)
• Flutter version 1.2.1 at /Users/xxx/Documents/Programming/flutter
• Framework revision 8661d8aecd (12 days ago), 2019-02-14 19:19:53 -0800
• Engine revision 3757390fa4
• Dart version 2.1.2 (build 2.1.2-dev.0.0 0a7dcf17eb)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
• Android SDK at /Users/xxx/Library/Android/sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-28, build-tools 28.0.3
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)
• All Android licenses accepted.
[✓] iOS toolchain - develop for iOS devices (Xcode 10.1)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 10.1, Build version 10B61
• ios-deploy 1.9.4
• CocoaPods version 1.6.0
[✓] Android Studio (version 3.3)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin version 33.0.1
• Dart plugin version 182.5215
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)
[✓] VS Code (version 1.31.1)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 2.23.0
[✓] Connected device (3 available)
• ASUS X00TD • xxxxxxxxxxxx • android-arm64 • Android 8.1.0 (API 27)
• IT’s iPhone • xxxx-xxxxxxxxxx • ios • iOS 12.1.4
• iPhone XR • xxxx-xxxx-xxxx-xxxx-xxxx • ios • iOS 12.1 (simulator)
• No issues found!
Hi pycampers,
Could you please add an Usage section?
I don't understand how to implement your lib.
I can't find FlutterPdfViewer.loadFilePath...
Thank you.
I've wrote the following code
PdfViewer.enableAnalytics(Duration(days: 8));
PdfViewer.analyticsCallback = (s, i, b) {
print('analytics string: $s');
print('analytics int: $i');
print('analytics bool: $b');
};
but I didn't see any logs from the callback
the output of flutter analyze
:
Analyzing example...
No issues found! (ran in 45.6s)
the output of flutter doctor -v
:
[✓] Flutter (Channel stable, v1.7.8+hotfix.4, on Linux, locale en_US.UTF-8)
• Flutter version 1.7.8+hotfix.4 at /opt/flutter
• Framework revision 20e59316b8 (3 weeks ago), 2019-07-18 20:04:33 -0700
• Engine revision fee001c93f
• Dart version 2.4.0
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
• Android SDK at /home/ammar/Android/Sdk
• Android NDK at /home/ammar/Android/Sdk/ndk-bundle
• Platform android-28, build-tools 28.0.3
• Java binary at: /home/ammar/Portable/android-studio/jre/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b16-5323222)
• All Android licenses accepted.
[!] Android Studio (version 3.4)
• Android Studio at /home/ammar/Portable/android-studio
✗ Flutter plugin not installed; this adds Flutter specific functionality.
✗ Dart plugin not installed; this adds Dart specific functionality.
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b16-5323222)
[!] IntelliJ IDEA Community Edition (version 2019.1)
• IntelliJ at /home/ammar/Portable/idea-IC-183.5429.30
✗ Flutter plugin not installed; this adds Flutter specific functionality.
✗ Dart plugin not installed; this adds Dart specific functionality.
• For information about installing plugins, see
https://flutter.dev/intellij-setup/#installing-the-plugins
[✓] VS Code (version 1.35.0)
• VS Code at /usr/share/code
• Flutter extension version 3.2.0
[✓] Connected device (1 available)
• Moto G 5 Plus • ZY2247QBNC • android-arm • Android 8.1.0 (API 27)
! Doctor found issues in 2 categories.
while using this plugin with firebase plugins Flutter giving me some errors like "GRADLE ANDROIDX Dependencies not compatible "
Issues: exmple code provided on the pub dev site is not getting compiled. Details below:
Running Gradle task 'assembleDebug'...
/Users/manishgupta/AndroidStudioProjects/flutter_app_example/android/app/src/debug/AndroidManifest.xml Error:
uses-sdk:minSdkVersion 16 cannot be smaller than version 19 declared in library [:flutter_pdf_viewer] /Users/manishgupta/AndroidStudioProjects/flutter_app_example/build/flutter_pdf_viewer/intermediates/library_manifest/debug/AndroidManifest.xml as the library might be using APIs not available in 16
Suggestion: use a compatible library with a minSdk of at most 16,
or increase this project's minSdk version to at least 19,
or use tools:overrideLibrary="com.pycampers.flutterpdfviewer" to force usage (may lead to runtime failures)
FAILURE: Build failed with an exception.
Manifest merger failed : uses-sdk:minSdkVersion 16 cannot be smaller than version 19 declared in library [:flutter_pdf_viewer] /Users/manishgupta/AndroidStudioProjects/flutter_app_example/build/flutter_pdf_viewer/intermediates/library_manifest/debug/AndroidManifest.xml as the library might be using APIs not available in 16
Suggestion: use a compatible library with a minSdk of at most 16,
or increase this project's minSdk version to at least 19,
or use tools:overrideLibrary="com.pycampers.flutterpdfviewer" to force usage (may lead to runtime failures)
Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
Get more help at https://help.gradle.org
BUILD FAILED in 39s
Exception: Gradle task assembleDebug failed with exit code 1
Flutter (Channel master, 1.24.0-4.0.pre.82, on Mac OS X 10.15.7 19H2 darwin-x64, locale en-IN)
• Flutter version 1.24.0-4.0.pre.82 at /Users/manishgupta/StudioProjects/flutter
• Framework revision e5814756a2 (3 hours ago), 2020-10-27 01:47:03 -0700
• Engine revision 1857470267
• Dart version 2.11.0 (build 2.11.0-260.0.dev)
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
• Android SDK at /Users/manishgupta/Library/Android/sdk
• Platform android-29, build-tools 29.0.2
• Java binary at: /Applications/Dev Tools/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 11.7)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 11.7, Build version 11E801a
• CocoaPods version 1.9.1
[✓] Android Studio (version 4.1)
• Android Studio at /Applications/Dev Tools/Android Studio.app/Contents
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
[✓] Connected device (1 available)
• Android SDK built for x86 (mobile) • emulator-5554 • android-x86 • Android 10 (API 29) (emulator)
• No issues found!
[VERBOSE-2:ui_dart_state.cc(171)] Unhandled Exception: ServicesBinding.defaultBinaryMessenger was accessed before the binding was initialized.
If you're running an application and need to access the binary messenger before runApp()
has been called (for example, during plugin initialization), then you need to explicitly call the WidgetsFlutterBinding.ensureInitialized()
first.
If you're running a test, you can call the TestWidgetsFlutterBinding.ensureInitialized()
as the first line in your test's main()
method to initialize the binding.
#0 defaultBinaryMessenger. (package:flutter/src/services/binary_messenger.dart:92:7)
#1 defaultBinaryMessenger (package:flutter/src/services/binary_messenger.dart:105:4)
#2 MethodChannel.binaryMessenger (package:flutter/src/services/platform_channel.dart:144:62)
#3 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:150:36)
#4 MethodChannel.invokeMethod (package:flutter/src/services/platfor<…>
Hello devs, pdf viewer not works when minifyEnabled in grade. I have also try using your example and enabling minify, does not work in release. Why ??
My release apk run on android version 8.0 (Samsung)but not run on Vivo,HUAWEI,Nokia and Mi(8.0).
This error is due to pdf viewer plugin .I try many plugin such as flutter_full_pdf_viewer,
flutter_pdf_viewer, pdf_viewer_plugin and pdf_viewer_2 but debug running is Ok.
hello, the pdf viewer does not work in ios ?
After adding the library the application size is getting increased by 19 Mb. Without library, the apk size is 5.3 Mb and after flutter_pdf_viewer library is added apk size reached to 24 Mb.
Pubspec.yml file
`name: flutter_movie_app
description: A new Flutter application.
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.2
url_launcher: ^3.0.0
scoped_model: ^0.3.0
rxdart: ^0.18.1
flutter_pdf_viewer: ^0.0.4
http: ^0.12.0
flutter:
uses-material-design: true
fonts:
- family: Merriweather
fonts:
- asset: fonts/Merriweather-Regular.ttf
- asset: fonts/Merriweather-Bold.ttf
- asset: fonts/Merriweather-Italic.ttf
style : italic`
Hello,
Is it possible to get the height and width of current PDF displayed ?
Thanks !
We have an application that will be processing PDFs encoded as base64-encoded strings.
We plan to display these by calling FlutterPdfViewer.loadBytes(base64Decode(theBase64String).
This works fine for small, simple pdfs, but we get an exception when trying load larger strings representing larger,more complex PDFs.
For example, encoding the 14-page test.pdf file included in the example project to a 1355088-character string (representing 1016315 bytes) and calling loadBytes() on the corresponding byte array throws:
09-07 14:20:02.102 1665-1904/? E/ActivityManager: Transaction too large, intent: Intent { cmp=com.pycampers.flutterpdfviewerexample/com.pycampers.flutterpdfviewer.PdfActivity (has extras) }, extras size: 1016492, icicle size: 0
09-07 14:20:02.107 1665-1904/? E/JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 1019812)
09-07 14:20:02.207 1665-1904/? E/ActivityManager: Transaction too large, intent: Intent { cmp=com.pycampers.flutterpdfviewerexample/com.pycampers.flutterpdfviewer.PdfActivity (has extras) }, extras size: 1016492, icicle size: 0
09-07 14:20:02.211 1665-1904/? E/JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 1019812)
09-07 14:20:02.211 1665-1904/? E/ActivityManager: Second failure launching com.pycampers.flutterpdfviewerexample/com.pycampers.flutterpdfviewer.PdfActivity, giving up
android.os.TransactionTooLargeException: data parcel size 1019812 bytes
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:764)
at android.app.IApplicationThread$Stub$Proxy.scheduleLaunchActivity(IApplicationThread.java:1216)
at com.android.server.am.ActivityStackSupervisor.realStartActivityLocked(ActivityStackSupervisor.java:1457)
at com.android.server.am.ActivityStackSupervisor.attachApplicationLocked(ActivityStackSupervisor.java:974)
at com.android.server.am.ActivityManagerService.attachApplicationLocked(ActivityManagerService.java:7152)
at com.android.server.am.ActivityManagerService.attachApplication(ActivityManagerService.java:7219)
at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:291)
at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2919)
at android.os.Binder.execTransact(Binder.java:697)
Unfortunately, these PDFs will contain confidential information that cannot rest on the device, so writing the bytes to storage then calling loadFilePath() is not an option.
Is there any workaround I could do to be able to build appbundle with pdf compatible with both archs instead of building 2 APKs with different abifilters, since appbundle optimize the app and reduce the app size?
Hi,
After loading pdf with loadBytes method, when the phone goes to landscape mode, application crashes with Error Message shown below. I am usin 0.0.9 version of plugin. I tried with 0.2.1 and it behaved the same. Error Log :
E/AndroidRuntime( 1204): FATAL EXCEPTION: Thread-4
E/AndroidRuntime( 1204): Process: com.example.cvgenerator, PID: 1204
E/AndroidRuntime( 1204): java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 4567) from **** (port ****): connect failed: ECONNREFUSED (Connection refused)
E/AndroidRuntime( 1204): at libcore.io.IoBridge.connect(IoBridge.java:137)
E/AndroidRuntime( 1204): at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:137)
E/AndroidRuntime( 1204): at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390)
E/AndroidRuntime( 1204): at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
E/AndroidRuntime( 1204): at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
E/AndroidRuntime( 1204): at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
E/AndroidRuntime( 1204): at java.net.Socket.connect(Socket.java:621)
E/AndroidRuntime( 1204): at java.net.Socket.connect(Socket.java:570)
E/AndroidRuntime( 1204): at java.net.Socket.(Socket.java:450)
E/AndroidRuntime( 1204): at java.net.Socket.(Socket.java:218)
E/AndroidRuntime( 1204): at com.pycampers.flutterpdfviewer.UtilKt.readBytesFromSocket(util.kt:20)
E/AndroidRuntime( 1204): at com.pycampers.flutterpdfviewer.PdfActivityThread.buildConfigurator(PdfActivity.kt:62)
E/AndroidRuntime( 1204): at com.pycampers.flutterpdfviewer.PdfActivityThread.run(PdfActivity.kt:76)
E/AndroidRuntime( 1204): Caused by: android.system.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
E/AndroidRuntime( 1204): at libcore.io.Linux.connect(Native Method)
E/AndroidRuntime( 1204): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:118)
E/AndroidRuntime( 1204): at libcore.io.IoBridge.connectErrno(IoBridge.java:151)
E/AndroidRuntime( 1204): at libcore.io.IoBridge.connect(IoBridge.java:129)
E/AndroidRuntime( 1204): ... 12 more
I/Process ( 1204): Sending signal. PID: 1204 SIG: 9
How can it be solved?
When I try to run the project I have this error:
e: C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\flutter_pdf_viewer-0.6.1\android\src\main\kotlin\com\pycampers\flutterpdfviewer\PdfActivityThread.kt: (82, 47): The spread operator (*foo) may not be applied to an argument of nullable type
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':flutter_pdf_viewer:compileDebugKotlin'.
> Compilation error. See log for more details
The error is on: configurator = configurator.pages(*opts.getIntArray("pages"))
I already tried to remove the "*" but it gives me another error:
Type mismatch: inferred type is IntArray? but Int was expected
PdfActivityThread.kt
package com.pycampers.flutterpdfviewer
import android.os.Bundle
import android.util.Log
import android.view.View
import com.github.barteksc.pdfviewer.PDFView
import com.github.barteksc.pdfviewer.scroll.DefaultScrollHandle
import java.io.File
// This thread is used to do heavy tasks, like loading the PDF from disk, decrypting it etc.
class PdfActivityThread(
val activity: PdfActivity,
val opts: Bundle,
val pdfView: PDFView,
val playerController: PlayerController,
val scrollHandle: DefaultScrollHandle,
val initialPage: Int
) : Thread() {
val mode = opts.getString("mode")!!
val xorDecryptKey: String? = opts.getString("xorDecryptKey")
fun buildConfigurator(): PDFView.Configurator? {
val src = opts.getString("src")!!
xorDecryptKey?.let {
val bytes = when (mode) {
"fromFile" -> {
Log.d(TAG, "loading encrypted pdf from file { $src }...")
readBytesFromFile(src)
}
"fromBytes" -> {
Log.d(TAG, "loading encrypted pdf from bytes...")
readBytesFromSocket(src)
}
"fromAsset" -> {
Log.d(TAG, "loading encrypted pdf from assets { $src }...")
readBytesFromAsset(activity.applicationContext, src)
}
else -> throw IllegalArgumentException("invalid mode: $mode.")
}
xorEncryptDecrypt(bytes, it)
return pdfView.fromBytes(bytes)
}
return when (mode) {
"fromFile" -> {
Log.d(TAG, "loading pdf from file { $src }...")
pdfView.fromFile(File(src))
}
"fromBytes" -> {
Log.d(TAG, "loading pdf from bytes...")
pdfView.fromBytes(readBytesFromSocket(src))
}
"fromAsset" -> {
Log.d(TAG, "loading pdf from assets { $src }...")
pdfView.fromAsset(src)
}
else -> throw IllegalArgumentException("invalid mode: $mode.")
}
}
override fun run() {
pdfView.visibility = View.VISIBLE
var configurator = buildConfigurator()!!
configurator = configurator
.password(opts.getString("password"))
.nightMode(opts.getBoolean("nightMode"))
.enableSwipe(opts.getBoolean("enableSwipe"))
.swipeHorizontal(opts.getBoolean("swipeHorizontal"))
.autoSpacing(opts.getBoolean("autoSpacing"))
.pageFling(opts.getBoolean("pageFling"))
.pageSnap(opts.getBoolean("pageSnap"))
.onError(activity)
.onRender(activity)
.scrollHandle(scrollHandle)
.onPageChange(playerController)
.onTap(playerController)
.defaultPage(initialPage)
if (opts.containsKey("pages")) {
configurator = configurator.pages(*opts.getIntArray("pages"))
}
configurator.load()
}
}
I try to get current page variable but I can't access kotlin code. Can you help me ?
Hi,
Horizontal Scrool and Vertical Scrool options?
my python 3 script:
from itertools import cycle
def xor_crypt(data, key):
return ''.join(chr(a ^ ord(b)) for (a, b) in zip(data, cycle(key)))
with open('math.pdf', 'rb') as encry, open('xor_math.pdf', 'w') as decry:
decry.write(xor_crypt(encry.read(), 'abcd'))
encry.close()
decry.close()
Normal File:
math.pdf
Encrypted File:
xor_math.pdf
Encryption key : 'abcd'
I cloned the example app and pasted the encrypted file(xor_math.pdf) in asset and changed the file name in code as shown below.
I got this error
D/PluginScaffold(31704): invoke { channel: com.pycampers.flutter_pdf_viewer, method: launchPdfActivity(), args: {pageSnap=false, enableImmersive=false, src=assets/xor_math.pdf, pageFling=false, xorDecryptKey=abcd, mode=fromAsset, password=null, autoSpacing=false, initialPage=null, pages=null, pdfId=dd68e353b2390617cff7bf7776677545b583b9ce, enableSwipe=true, autoPlay=false, videoPages={8={mode=fromAsset, src=assets/xor_buck_bunny.mp4, xorDecryptKey=abcd}, 9={mode=fromAsset, src=assets/xor_buck_bunny.mp4, xorDecryptKey=abcd}}, forceLandscape=false, nightMode=false, swipeHorizontal=false} }
I/Timeline(31704): Timeline: Activity_launch_request time:264188741 intent:Intent { cmp=com.pycampers.flutterpdfviewerexample/com.pycampers.flutterpdfviewer.PdfActivity (has extras) }
W/ActivityThread(31704): handleWindowVisibility: no activity for token android.os.BinderProxy@8f4b2ab
D/com.shockwave.pdfium.PdfiumCore(31704): Starting PdfiumAndroid 1.9.0
D/FlutterPdfViewer(31704): loading encrypted pdf from assets { flutter_assets/assets/xor_math.pdf }...
I/dfviewerexampl(31704): Compiler allocated 4MB to compile void android.widget.TextView.<init>(android.content.Context, android.util.AttributeSet, int, int)
I/flutter (31704): analyticsCallback: { pdfId: dd68e353b2390617cff7bf7776677545b583b9ce, pageIndex: 0, paused: false }
D/jniPdfium(31704): Init FPDF library
D/jniPdfium(31704): Destroy FPDF library
D/FlutterPdfViewer(31704): encountered error: java.io.IOException: cannot create document: File not in PDF format or corrupted.
W/System.err(31704): java.io.IOException: cannot create document: File not in PDF format or corrupted.
W/System.err(31704): at com.shockwave.pdfium.PdfiumCore.nativeOpenMemDocument(Native Method)
W/System.err(31704): at com.shockwave.pdfium.PdfiumCore.newDocument(PdfiumCore.java:150)
W/System.err(31704): at com.github.barteksc.pdfviewer.source.ByteArraySource.createDocument(ByteArraySource.java:35)
W/System.err(31704): at com.github.barteksc.pdfviewer.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:49)
W/System.err(31704): at com.github.barteksc.pdfviewer.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:25)
W/System.err(31704): at android.os.AsyncTask$2.call(AsyncTask.java:333)
W/System.err(31704): at java.util.concurrent.FutureTask.run(FutureTask.java:266)
W/System.err(31704): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
W/System.err(31704): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
W/System.err(31704): at java.lang.Thread.run(Thread.java:764)
D/PluginScaffold(31704): piping exception to flutter (java.io.IOException)
E/flutter (31704): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: PlatformException(java.io.IOException, cannot create document: File not in PDF format or corrupted., java.io.IOException: cannot create document: File not in PDF format or corrupted.
E/flutter (31704): at com.shockwave.pdfium.PdfiumCore.nativeOpenMemDocument(Native Method)
E/flutter (31704): at com.shockwave.pdfium.PdfiumCore.newDocument(PdfiumCore.java:150)
E/flutter (31704): at com.github.barteksc.pdfviewer.source.ByteArraySource.createDocument(ByteArraySource.java:35)
E/flutter (31704): at com.github.barteksc.pdfviewer.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:49)
E/flutter (31704): at com.github.barteksc.pdfviewer.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:25)
E/flutter (31704): at android.os.AsyncTask$2.call(AsyncTask.java:333)
E/flutter (31704): at java.util.concurrent.FutureTask.run(FutureTask.java:266)
E/flutter (31704): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/flutter (31704): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/flutter (31704): at java.lang.Thread.run(Thread.java:764)
E/flutter (31704): )
E/flutter (31704): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:569:7)
E/flutter (31704): #1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:316:33)
E/flutter (31704): <asynchronous suspension>
E/flutter (31704): #2 PdfViewer._launchPdfActivity (package:flutter_pdf_viewer/flutter_pdf_viewer.dart:263:19)
E/flutter (31704): <asynchronous suspension>
E/flutter (31704): #3 PdfViewer.loadAsset (package:flutter_pdf_viewer/flutter_pdf_viewer.dart:314:18)
E/flutter (31704): <asynchronous suspension>
E/flutter (31704): #4 PdfLoaderSectionState.onPressed (package:flutter_pdf_viewer_example/main.dart:112:25)
E/flutter (31704): <asynchronous suspension>
E/flutter (31704): #5 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:654:14)
E/flutter (31704): #6 _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:729:32)
E/flutter (31704): #7 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
E/flutter (31704): #8 TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:365:11)
E/flutter (31704): #9 TapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:312:7)
E/flutter (31704): #10 GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:156:27)
E/flutter (31704): #11 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:222:20)
E/flutter (31704): #12 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:198:22)
E/flutter (31704): #13 GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7)
E/flutter (31704): #14 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102:7)
E/flutter (31704): #15 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86:7)
E/flutter (31704): #16 _rootRunUnary (dart:async/zone.dart:1136:13)
E/flutter (31704): #17 _CustomZone.runUnary (dart:async/zone.dart:1029:19)
E/flutter (31704): #18 _CustomZone.runUnaryGuarded (dart:async/zone.dart:931:7)
E/flutter (31704): #19 _invoke1 (dart:ui/hooks.dart:263:10)
E/flutter (31704): #20 _dispatchPointerDataPacket (dart:ui/hooks.dart:172:5)
E/flutter (31704):
I/flutter (31704): analyticsCallback: { pdfId: dd68e353b2390617cff7bf7776677545b583b9ce, pageIndex: 0, paused: true }
I/System.out(31704): atExit!
FlutterPdfViewer.loadFilePath ("file://"+_cachedFile.path);
E/flutter ( 8044): [ERROR:flutter/shell/common/shell.cc(186)] Dart Error: Unhandled exception:
E/flutter ( 8044): MissingPluginException(No implementation found for method fromAsset on channel flutter_pdf_viewer)
RaisedButton(
onPressed: () => FlutterPdfViewer.loadFilePath("https://firebasestorage.googleapis.com/v0/b/eduhitan.appspot.com/o/Online%20Recruitment%20Portal%20of%20APDCl.pdf?alt=media&token=54b81165-8570-448c-8e91-ff7db2410143"),
child: Text('OPEN'),
),
In your readme in "Security" there is "display PDF from URL without ever touching the disk!"
How to I do that? If the package isn't supported anymore is there any workaround?
Thank you.
How to implement Pdfviewer.loadbytes() in Scaffold
Thank you a lot for this plugin. It's amazing, the one thing it lacks is to add an AppBar in the pdfViewer activity. Any idea how it could be done? Maybe like the flutter webview plugin does?
Thanks again!
The PDF opens on the page we closed it last time, can we get this info with analytics like showing last_opened_page or something like that?
We can even create a new function for it
when i use it separately its working but not with image picker plugin
Dev enviroment run is ok? but flutter build apk --release
then
2019-07-09 10:07:10.738 4735-4897/? E/flutter: [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: MissingPluginException(No implementation found for method launchPdfActivity on channel com.pycampers.flutter_pdf_viewer)
#0 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:314)
<asynchronous suspension>
#1 PdfViewer._launchPdfActivity (package:flutter_pdf_viewer/flutter_pdf_viewer.dart:263)
<asynchronous suspension>
#2 PdfViewer.loadBytes (package:flutter_pdf_viewer/flutter_pdf_viewer.dart:301)
<asynchronous suspension>
#3 CRMPanState.onClickResource (package:youkeda_flutter/pages/crm_pan/index.dart:148)
<asynchronous suspension>
#4 PanPageWidgetState.build.<anonymous closure> (package:youkeda_flutter/pages/crm_pan/pan_page.dart:160)
#5 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182)
#6 TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:365)
#7 TapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:275)
#8 PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:455)
#9 PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:75)
#10 PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:102)
#11 _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:218)
#12 _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:198)
#13 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156)
#14 _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102)
#15 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86)
flutter version
➜ ~ flutter --version
Flutter 1.8.0 • channel unknown • unknown source
Framework • revision 2fefa8c731 (7 days ago) • 2019-07-01 11:33:22 -0700
Engine • revision 45b66b722e
Tools • Dart 2.4.0
I have a method to close the screen and to go back to previous screen but when I press back button I get a blackscreen and I this log in Run: D/jniPdfium( 7951): Destroy FPDF library.
I need to press back twice to go back to previous screen in my app, could you please help me with that?
class _PdfScreenState extends State<PdfScreen> {
final DocumentSnapshot document;
String path;
var dir;
_PdfScreenState(this.document);
@override
void initState() {
super.initState();
getPdf();
}
Future<void> getPdf() async {
try {
dir = await getApplicationDocumentsDirectory();
setState(() {
path = "${dir.path}/${document["title"]}.pdf";
});
} catch (e) {
print(e);
}
PdfViewer.loadFile(path);
}
Future<bool> _onBackPressed(){
Navigator.pop(context);
return Future.value(true);
}
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: _onBackPressed,
child: Container(),
);
}
}
}
Is there any intention to do the iOS pdf viewer?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.