Code Monkey home page Code Monkey logo

paperless_share's Introduction

Paperless Share

Get it on F-Droid Get it on Google Play

An Android app that bridges your document scanner with your paperless-ng server.

Why?

I like using extremely refined scanning apps such as Office Lens for documents. Paperless Share adds Paperless to the Android share sheet for easy consumption.

It's similar in spirit to TripleCamel, an app that does its job well and can be hidden from your launcher's app list.

Getting Started

Requirements

This app requires paperless-ng version 0.9.5 or higher.

Android

Get it on F-Droid Get it on Google Play

Download latest release or build from source.

Building

Install Flutter and integrate with your IDE of choice. A release can then be built and installed using:

flutter pub get
flutter build appbundle
flutter build apk --split-per-abi
cd build/app/outputs/flutter-apk/
flutter install

paperless_share's People

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

paperless_share's Issues

Compatibility with Android 14

I would love to use this, but the AppStore tells me I can't.

EDIT: This issue can be circumvented by getting paperless_share via FDroid. Works flawlessly.

Login not working

I'm cannot login with the app. There is no visible error.

The only thing I see are 403 responses from the paperless-ng webserver:
192.168.1.189 - - [06/Jan/2021:10:50:10 +0100] "POST /api/token/ HTTP/1.1" 403 1382 "-" "Dart/2.10 (dart:io)" 192.168.1.189 - - [06/Jan/2021:10:50:10 +0100] "POST /api/token/ HTTP/1.1" 403 1382 "-" "Dart/2.10 (dart:io)"

I'm using a standard docker-compose setup with up to date images.

Share stuck on login screen

Hi,

When I try to share any document, the app brings up the login screen and doesn't proceed further even if I've provided the login details correctly. When I checked in the main app (i.e. opening paperless_share rather than trying to share a document from other app's share feature), it shows that I'm logged in successfully.

I'm attaching the relevant adb logs, please take a look. Let me know if you need any more information.

System: MIUI 12
OS: Android 11

08-29 16:11:02.521  6607  6919 D PowerCheckerService: foreground, uid = 10579, app = com.quinncasey.paperless_share
08-29 16:11:03.028  4920  4957 I ProcessMonitor: onForegroundInfoChanged: ForegroundInfo{mForegroundPackageName='com.simplemobiletools.gallery.pro', mForegroundUid=10237, mForegroundPid=30481, mLastForegroundPackageName='com.quinncasey.paperless_share', mLastForegroundUid=10579, mLastForegroundPid=31337, mMultiWindowForegroundPackageName='null', mMultiWindowForegroundUid=-1, mFlags=0}
08-29 16:11:03.028  4920  4957 I GameBoosterService: onForegroundInfoChanged: Cur=com.simplemobiletools.gallery.pro	 last=com.quinncasey.paperless_share
08-29 16:11:03.028  6607  6657 D PerfEngineController: ForegroundInfo{mForegroundPackageName='com.simplemobiletools.gallery.pro', mForegroundUid=10237, mForegroundPid=30481, mLastForegroundPackageName='com.quinncasey.paperless_share', mLastForegroundUid=10579, mLastForegroundPid=31337, mMultiWindowForegroundPackageName='null', mMultiWindowForegroundUid=-1, mFlags=0}
08-29 16:11:03.045  4920  4957 D GameBoosterService: onGameStatusChange foreground:ForegroundInfo{mForegroundPackageName='com.simplemobiletools.gallery.pro', mForegroundUid=10237, mForegroundPid=30481, mLastForegroundPackageName='com.quinncasey.paperless_share', mLastForegroundUid=10579, mLastForegroundPid=31337, mMultiWindowForegroundPackageName='null', mMultiWindowForegroundUid=-1, mFlags=0}
08-29 16:11:04.880   563   563 D ResolverListAdapter: processSortedlist: ResolveInfo{81b901d com.quinncasey.paperless_share/.MainActivity m=0x608000}
08-29 16:11:04.881   563   563 I ResolverListAdapter: Add DisplayResolveInfo component: ComponentInfo{com.quinncasey.paperless_share/com.quinncasey.paperless_share.MainActivity}, intent component: ComponentInfo{com.quinncasey.paperless_share/com.quinncasey.paperless_share.MainActivity}
08-29 16:11:04.881   563   563 D ResolverListAdapter: addResolveInfo: ResolveInfo{81b901d com.quinncasey.paperless_share/.MainActivity m=0x608000}
08-29 16:11:04.881   563   563 D ResolverListAdapter: processSortedlist: ResolveInfo{2d423bf eu.bauerj.paperless_app/.MainActivity m=0x608000}
08-29 16:11:04.881   563   563 I ResolverListAdapter: Add DisplayResolveInfo component: ComponentInfo{eu.bauerj.paperless_app/eu.bauerj.paperless_app.MainActivity}, intent component: ComponentInfo{eu.bauerj.paperless_app/eu.bauerj.paperless_app.MainActivity}
08-29 16:11:04.881   563   563 D ResolverListAdapter: addResolveInfo: ResolveInfo{2d423bf eu.bauerj.paperless_app/.MainActivity m=0x608000}
08-29 16:11:06.012   563   563 D ChooserActivityForCts: ResolveInfo Package is com.quinncasey.paperless_share
08-29 16:11:06.013  1747  4815 I ActivityTaskManager: START u0 {act=android.intent.action.SEND typ=image/jpeg flg=0xb080001 cmp=com.quinncasey.paperless_share/.MainActivity clip={image/jpeg {...}} (has extras)} from uid 1000
08-29 16:11:06.025  1747  4426 I ActivityTaskManager: The Process com.quinncasey.paperless_share Already Exists in BG. So sending its PID: 31337
08-29 16:11:06.025   876   942 I ANDR-PERF-LM: MetaMeter: isValidAsync() 203: Invalid (hintID,hintType,appName,duration,appPID,appThreadTID) = (4225, 102,com.quinncasey.paperless_share,31337,1747,4426)
08-29 16:11:06.029  6607  6657 D PerfEngineController: ForegroundInfo{mForegroundPackageName='com.quinncasey.paperless_share', mForegroundUid=10579, mForegroundPid=31337, mLastForegroundPackageName='android', mLastForegroundUid=1000, mLastForegroundPid=563, mMultiWindowForegroundPackageName='null', mMultiWindowForegroundUid=-1, mFlags=0}
08-29 16:11:06.029  4920  4957 I ProcessMonitor: onForegroundInfoChanged: ForegroundInfo{mForegroundPackageName='com.quinncasey.paperless_share', mForegroundUid=10579, mForegroundPid=31337, mLastForegroundPackageName='android', mLastForegroundUid=1000, mLastForegroundPid=563, mMultiWindowForegroundPackageName='null', mMultiWindowForegroundUid=-1, mFlags=0}
08-29 16:11:06.029  4920  4957 I GameBoosterService: onForegroundInfoChanged: Cur=com.quinncasey.paperless_share	 last=android
08-29 16:11:06.029  4920  4957 D GameBoosterService: onGameStatusChange foreground:ForegroundInfo{mForegroundPackageName='com.quinncasey.paperless_share', mForegroundUid=10579, mForegroundPid=31337, mLastForegroundPackageName='android', mLastForegroundUid=1000, mLastForegroundPid=563, mMultiWindowForegroundPackageName='null', mMultiWindowForegroundUid=-1, mFlags=0}
08-29 16:11:06.057  1747  4434 W ActivityManager: Permission Denial: opening provider androidx.core.content.FileProvider from ProcessRecord{d7e68a0 31337:com.quinncasey.paperless_share/u0a579} (pid=31337, uid=10579) that is not exported from UID 10237
08-29 16:11:06.096  2863  2863 D RecentsImpl: mActivityStateObserver com.quinncasey.paperless_share.MainActivity
08-29 16:11:06.134  1747  1835 D ArtManagerInternalImpl: /data/misc/iorapd/com.quinncasey.paperless_share/1006/com.quinncasey.paperless_share.MainActivity/compiled_traces/compiled_trace.pb doesn't exist
08-29 16:11:06.144  1747  1835 I ActivityTaskManager: Displayed com.quinncasey.paperless_share/.MainActivity: +117ms
08-29 16:11:06.145   876   876 I ANDR-PERF-LM: FeedbackAPI: getFeedback() 60: app:com.quinncasey.paperless_share feature:AppClassifier feedback = 1
08-29 16:11:06.297  1747  1835 I ActivityTaskManager: Fully drawn com.quinncasey.paperless_share/.MainActivity: +284ms
08-29 16:11:06.872  1747  1828 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{7824dad u0 com.quinncasey.paperless_share/.MainActivity t55752} time:18581143

Missing `PaperlessShare` in Share menu of Microsoft's apps

I'm trying to use PaperlessShare straight from Microsoft's Office Lens, or from Microsoft's OneDrive, but the app does not show up amongst the available choices of the Share menu (even when scrolling through the whole list).

Other less-mainstream apps do show up (For instance Gotify or Stakali), so there must be a way to register PaperlessShare with Microsoft's own Share menu.

For reference, in other apps, I am seeing PaperlessShare in the Share menu

Auto upload

I use the Brother iPrint&Scan app which is putting my scans into Downloads/Scan.

I don't know whether I can configure that but it would be awesome if this app could automatically get files from that directory and push it to paperless.

I don't know if this is possible tho as I am not an android dev

No error message on login screen when using wrong username (or wrong address, password...).

Hi and thank your for your work.

I had a hard time logging into paperless (ngx) yesterday (App version 1.1.4 on Redmi Note 9 pro running Android 11, paperless-ngx version 1.7.1). I entered my login credentials, the app shows " Logging in..." on the bottom of the screen and then... nothing happens.

Turns out, my phone autocorrected my username to a capital first letter (so "Jonas" instead of "jonas").

As there was no error message telling me what was wrong, it took me quite some time to find out.
I then tried to get other error messages, such as wrong server address or wrong password - no luck. Entering the IP address of paperless installation without http:// in front of it - same problem. No error message (and not working - I would assume the app adds http:// if not entered by the user).

The only error message I got was when I left the password blank - I guess that one is a simple check on submit and not depending on the message from the server.

So somehow server error messages are not transported to the user interface. Could you look into that? Thanks!

Support for multiple paperless(-ng) installations

Hi,

due to the fact that paperless-ng doesn't support limiting/differentiating access based on user, I'm running three instances for us at home. I myself have access to two of them and wouldn't mind using the app to upload documents. Any chance you could implement multiple server definitions one could choose from when sharing a document? Thanks!

Unnecessarily strict checking of server name (error: Server must be a valid URL.)

My paperless-ng instance runs on a local server (raspberry pi) and is available only in my home network.

My router assigns a hostname to this server, which happens to be raspberrypi.
In paperless_share, I am unable to login. The app will not even try to log in, but instead complains about this "malformed" hostname:

Server:
http://raspberrypi:8000/
Error: Server must be a valid URL.

This is kind of annoying, because the URL is valid. It's not a usual, worldwide/public URL, but there is nothing wrong with it, and paperless-ng works fine with my web browser. Also, several other apps work with this hostname, interacting with other pieces of software (not paperless) running on that server.

Could you please remove this strict checking of the URL?

In my opinion there is no need at all to prevent the app from trying to reach a "funny" URL. If it works, fine. If not, the user will see an error message anyway, I suppose, and will double check the hostname.

[Feature Request] associate file types with the app

Hi!

Use Case
I download a document which gets saved on the device (there is no way for sharing without downloading in the app). On Android a notification will appear when the download is completed. I press the notification and the document opens in the default app for that filetype or if there is none, ask the user to select an app which is able to open the document type. The document gets opened and I click the buttons to share the document with paperless share.

Improvement
If the paperless share app would be associated with for example application/pdf I could upload the document by just clicking the notification and choosing to open the file with paperless share. This would reduce the needed clicks significantly. Same when browsing files in an explorer.

Details
https://pub.dev/packages/flutter_handle_file should make it possible to implement this with minimal effort for both iOS and Android.
If only Android is relevant it should work by just adding some intent-filter properties in the AndroidManifest.xml.
I guess some code to handle the file path is also needed.

Would you be interested in this feature? If yes, are you interested in a PR for this or do you want to have a look at it yourself?

Great thing, first potential user here :-)

Hey there, just wanted to tell that I would find it extremely great if

  • you publish this on f-droid (or play, whatever is more simple)
    it's a great idea to scan the daily stuff with the phone and send it over to paperless-ng
  • you actually manage to set up a pull request to jbauers paperless app and get it going with paperless-ng as well - I could imagine he could help with that!

Paperless Share never completes upload

Adding my server to Paperless Share went without any issue.
But when I share a PDF, jpeg or any other document the upload circle will spin but never stops. With small jpeg it will work.

The same behaviour is seen when using my exposed hostname (https via nginx) and using my internal server (http://:8000)

I believe it doesn't have to do with client_max_body_size because without nginx the same issue occurs.
No lines are written in the paperless log when upload circle is spinning.

"Logging in..." with self signed, but imported cert

My paperless instance is protected by a self signed cert. I imported the cert into the android certificate store, so no application is showing an error message about it.

But paperless share does not log in, it only shows "Einloggen..." without any error. Switching to http (without tls) works.

Please a) show an error and
b) accept certificates that were includes into the cert store.

13.01.2022 Update broke the App

Hi,

today, Google Play updated this app to the latest version.
After the Update, i cannot really start the app anymore.
After pressing the icon, the screen opens a blank, gray activity and does nothing else.

Same if i try to share a pdf via the app to my server. No circle loading or anything else. Just a blank gray screen.

Improve upload progress

Instead of popping up a message every time a file is done uploading, a upload progress in the notifications would be awesome.

Alternatively you could show progress and a history in the app.

Loading tags doesn't handle pagination

Within PaperlessShare I tried to assign a tag to all uploaded documents. Unfortunately PaperlessShare shows only the first 25 tags from the server. This seems to be caused by the pagination feature of the paperless server (https://github.com/jonaswinkler/paperless-ng/blob/05c36f91cfa5613bdea5b3c490774cc40b586eeb/src/paperless/views.py) which doesn't seem to be handled by PaperlessShare.

I don't know how exactly the API works but maybe it is possible to set the pagination size as a parameter of the http request and just set it big enough?!

I am using PaperlessShare 1.1.4 and paperless-ng

[Feature request] support tagging

Hi,

it would be a nice feature if the app supported predefining a certain tag which is always used when submitting any document (e.g. a user name in my usecase). The REST endpoint natively offers this, so it would be as easy as adding an optional configuration item which would add any text entered to the "tags" form field in the post request.

Unfortunately, I don't know any flutter myself, otherwise I'd just do it. Since this is such a simple feature, maybe it won't take you that long. Thanks a bunch for the minimalist and useful app!

Cheers

Feature Request: Support usecase with disabled login

First, many thanks for your app! It makes my filing habits so much easier :-)
I've been using your app for almost a year now, no issues at all! Wonderful timesaver.

I just encountered a small issue. As I use paperless-ng at home, I do not need authentication.
As soon as I start to use the autologin feature (PAPERLESS_AUTO_LOGIN_USERNAME - https://paperless-ng.readthedocs.io/en/latest/configuration.html#software-tweaks), I can not share using paperless_share. It just spins and never completes.

Logging out and trying to login again fails without any error messages: It shows the modal Logging in... and then it goes back to the login screen without actually logging in.

After disabling AUTO_LOGIN_USERNAME, the app instantly resumes working.

Request | Share multiple docs

Hi

It would be great if the ability to share multiple files at once was added.

My workflow, using TurboScan, is to scan a batch of documents. I then have to share each individually, rather than select all then share, as paperless share doesn't support sharing of multiple selected files.

Thanks

Phil

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.