Git Product home page Git Product logo

flutter_pdf_viewer's People

Contributors

devxpy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flutter_pdf_viewer's Issues

Cannot Build App Swift Error

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!

Add an Usage Section?

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.

Analytics callback not working

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.

AndroiX Dependencies error

while using this plugin with firebase plugins Flutter giving me some errors like "GRADLE ANDROIDX Dependencies not compatible "

Example application not compiling

Issues: exmple code provided on the pub dev site is not getting compiled. Details below:

Steps to Reproduce

  1. Create new flutter application. Replace main.dart content with the example code.
  2. Compile/Run the application (using Android studio).
    Note: URL for example code: https://pub.dev/packages/flutter_pdf_viewer/example

Logs

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.

  • What went wrong:
    Execution failed for task ':app:processDebugManifest'.

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 doctor:

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!

Getting Blank screen on iOS when running the example app.

[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<…>

Resulting APK is not compatible with both 32 and 64 bit devices

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.

Application is size is getting increase by 19 Mb

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`

Dimensions

Hello,
Is it possible to get the height and width of current PDF displayed ?
Thanks !

TransactionTooLargeException when calling loadBytes()

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.

AbiFilters and AppBundle

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?

Landscape Mode Crash

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?

Error when compiling - Kotlin language related

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()
    }
}

Can't decrypt encrypted(xor) file.

  1. I have encrypted a pdf in python.
  2. I need to decrypt and view it in flutter app and so I used this package.

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.

image

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!

can't load pdf

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)

How to display a PDF from URL?

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.

Support Inline Pdf Viewing

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!

Can we get more analytics?

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

[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)

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

How to close correctly a screen with PdfViewer?

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(),
      );
    }
  }
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.