Skip to content

EnricoPietrocola/CidReader-PDF

Repository files navigation

CidReader-PDF - Collaborative Realtime PDF Reader

Join our Discord! Discord

Cid is an open source Android PDF reader (I am making a web version too) able to share realtime interaction online. It is created to help Networked Music students and performers to interact on music sheet on a distance or locally. Works with UDP sockets and on any modern android tablet.

Open Beta Access

Paper/Description page

Community Page

Facebook Page

How to use:

  • Choose a document you want to open by the app main page (currently showing only the Downloads Folder) or with the "Open With" options in your Android File Manager
  • Drag your finger on a page to draw, if the other device has the app open, annotation data and current page will be synchronized

How to connect

  • When viewing a document, open the menu by clicking the top right menu icon in the action menu
  • Type the address you would like to connect to and click "ADD TO CONNECTIONS".
  • Close the menu, all your interactions are now synchronized

ExampleImage

IntroductionToCidReader

EasilyConnectWithZeroTier

Video example

Video example for a CidReader-PDF session

Trello board with tasks and useful info

Right now Cid features:

  • Connectivity with other users through UDP sockets
  • PDF, XPS, OpenXPS, CBZ, EPUB, and FictionBook 2 rendering
  • Syncronized annotations to highlight or draw with a finger or a smart pen
  • Syncronized page turning
  • Color picker
  • Hide/show annotations easily
  • A menu of connected users
  • Fast rendering, works on old devices
  • Save/Load annotation files
  • Easy to use multi-node connections
  • Update new users by sending them all annotations at realtime
  • Platform: Android

Being planned:

  • A Web Version using WebRTC + Pdf.js
  • Customizable permissions systems for mutliple groups of users

What is missing but would be great:

  • A simple way for NAT traversal
  • File transfer (at the moment you HAVE to have the PDF file in your download folder to be able to see it) (it's easy to implement but laws are pretty strict on this and before implementing this I would like to be sure we are not breaking any copyright by simply allowing FTP)

While the NAT traversal solution is discussed, a simple way to connect through NATs that has been tested it by using ZeroTier (open source Hamachi-like app with an android app port). It adds some latency but it's acceptable for common uses.

Contributing, main pieces of code:

MainActivity.java is the main menu, this is where you setup connection and scroll documents.

DocumentActivity.java is the main document part of code. Here you manage document, annotaion, touch, global variables, instances of paintviews with connections (original mupdf-mini version .

PageView.java is where PDF pages are managed (slightly edited version of the original from MuPDF mini).

PaintView is the annotation class, it stores strokes for each page. Each user owns an instance of PaintView in DocumentActivity (each user has a layer to draw on).

Instruction1 Instruction2 Instruction3

This project was possible thanks to the "Orio Carlini" Scholarships from Consortium GARR and hosted by Conservatorio Giuseppe Verdi di Milano

GarrLogo

ConsMILogo

License

Following MuPDF license, this project must be under the AGPL License.

"If your software is open source, you may use MuPDF under the terms of the GNU Affero General Public License. This means that all of the source code for your complete app must be released under a compatible open source license! It also means that you may not use any proprietary closed source libraries or components in your app. This includes (but is not limited to) Google Play Services, Google Mobile Services, AdMob by Google, Crashlytics, Answers, etc. Just because a library ships with Android or is made by Google does not make it AGPL compatible! If you cannot or do not want to comply with these restrictions, you must acquire a commercial license instead."

Releases

No releases published

Packages

No packages published