iRex DR1000 Manager

Welcome to the official page of the "iRex DR1000 Manager" project. Formerly known as "iRex DR1000 Merger", the aim of this project was to merge the scribbles taken with the iRex DR1000 with firmware 2 on a PDF or with the built-in notepad in a PDF file; now the program can manage the scribbles in a more complex way.
My intent was also to group all the knowledge I can find on the topic, to give all the people an as most rich as possible documentation and to create a little Java library, so that can be re-used by others. :-)

The program is written in Java; I took inspiration by Bert's program, which does the same with the scribbles taken with the iRex Iliad. I did it because I had problems with all the other solutions I found in the Mobile Read forum, such as the python script, OCAML and the .NET programs: the only one that I made to work was the .NET one, but it uses incorrect values for the zoom of the strokes taken with the zoom.

Like the merger by Bert, also this program uses the iText library (version 1.4.8, I found on internet and recompiled) to merge the scribbles; to access the scribbles in the metadata.db file I used the sqlite-jdbc library (version 3.7.2).
I also thanks Mackx, for having posted a great explanation on how the binary blob has to be interpreted.

I also re-designed this image to better illustrate the coordinate systems used by iText and iPDF (can also be found in the documentation):


iText and iPDF coordinates systems (click to enlarge)

The current version of the program can merge of the scribbles, format them in a text-format, creates a PDF from the notes and creates PNG images from the scribbles; it is no more a prototype but a real program (I menaged to correctly merge all my PDF and notes with their scribbles). It can also manage the color of the strokes in the result.
In next releases I hope to include other functionalities, like backup of data (which can also be made manually copying the metadata.db file) or conversion of scribbles Iliad ⇆ DR1000.

Download and ChangeLog

Here you can download the project; for each version there is an archive for the executable (jar), the sources (src) and the documentation (by now there is only the formely-known "javadoc-full", the documentation that includes all the members for each class, even the private ones).
To run the program launch the command
java -jar iRexDR1000Merger[-version].jar path_to_file
in a shell/terminal/dos prompt; path_to_file is the path to the target file (PDF or note file); in case of PDF file the program looks for the metadata.db file in the same forlder. The program will create a new PDF file in the current directory.
For more options read the documentation.

versione 0.6.5: jar src javadoc

* used andyLib-0.9.1.1
* now all the colors used are managed by the ColorMgr class
- draw methods using a Color
+ it is now possible to set up a background color for PNG export
* it is now possible to set up a different color for every stoke width
+ new methods setColor(:Color)
! better documentation
- method Util.skip
* png: page number padding with zeroes in the file names

versione 0.6: jar src javadoc

* used andyProject-0.6 and andyLib-0.9
+ option -v for version
+ option -l to view the list of scribbled files
+ method #Document.mergeScribble() with the shared logic for merging
! bug: if output file for a note was not specified there was an error
+ method ScribbleMgr.printFiles
* query in method ScribbleMgr.getScribbledFiles

versione 0.5.3: jar src javadoc

* renamed method Document.getFileName() to Document.getDbName()
- method Document.merge(:String, :Color) (now the color management is all inside che ColorMgr class)
+ changed the logic on the file/directory check (now it is inside the 'merge' and 'exportToPNG' methods)
+ methods 'merge()', 'exportToPNG()', 'merge(File)' and 'exportToPNG(File)'
* -o option can now specify a folder
* method Util.skip is now deprecated

versione 0.5.2: jar src javadoc

! -o option
+ targerFolder parameter
+ static method Document.getDocument(:String) to create a Document
* method Document.getDefaultName() is now public
* centralized output file check

versione 0.5.1: jar src javadoc

! fixed documentation
+ warning in case of unkown action

versione 0.5: jar src javadoc

* changed project name in "iRex DR1000 Manager"
* use of andyLib v0.8:
   + use of the config class
   * help e header as file in the jar
* changed the option for input file from -f to -i
+ warning if the input file dows not exist
* moved ColorMgr class
* changed color management
* now the jar is more like a library
   * class ScribbleMgr is now public
   + method to extract the strokes and points list
   + methods Point.getX e Point.getY to get the coordinates
+ action "png" to create a series of PNG files from the scribbles
* better documentation

versione 0.4.1: jar src javadoc

strokes' color:
   + system option for default color
   + color codes can be written with optional leading '#'
+ option '-h' for a brief help
! PDF merge: advice if input and output file are the same
* default PDF-merged file name has the "__NOTED" suffix
* used script andyProject-0.5

versione 0.4: jar src javadoc

* better performance: now uses a 'ByteArrayInputStream' to threat the blob
! fized bug: now if the 'config.properties' is not found, write no exception
+ update documentation: to create a PDF from a note file, it creates an empty temp PDF file
* better logs
+ in the list file, shows the number of scribbled pages
+ method Parser.build(:byte[]) to parse the blob and create the 'Page' object
+ color of the stroke can be chosen with the '-C' option
- removed javadoc task (and javadoc-full renamed to javadoc)

versione 0.3: jar src javadoc

* big changes to the structure of the program
+ merge of notes
+ if the PDF file is not found in the database, let the user choose one
+ option "-c path_to_properties_file"

versione 0.2: jar src javadoc

* better performance (blobs are loaded one at time)
! deleted original file extension in output file
* class ScribbleMgr:
  * has a database File
  + method hasScribble(fileName:String):boolean
  + method getScribbledPages(fileName:String):List<Integer>
  + method getBlobScribbles(fileName:String, page:int):List<Integer>
+ added command line option (-f, -o and -a)
+ used andyLogger for logging

versione 0.1: jar src javadoc

+ first version

Documentation

In this page you can find the full documentation of the project.

Licence

GPLv3 logo

As my first "real" project, I decided to release it under the GPLv3 licence. A copy of the licence is included in the compiled and source archives. Inside the archives there are the notice also for the libraries used by this project.