Package: paper2remarkable
paper2remarkablepaper2remarkableis a command line program for quickly and easily
transferring an academic paper to yourreMarkable:$ p2r https://arxiv.org/abs/1811.11242There is also support for transferring an article from a website:$ p2r https://hbr.org/2019/11/getting-your-team-to-do-more-than-meet-deadlinesThe script can be run through thep2rcommand line program or via Docker
(see below). If you're using MacOS, you might be interested in theAlfred
workfloworPrinting to p2r. On Linux, a
background terminal such asGuakecan be very
handy. Note that even without a reMarkable, this program can make downloading
papers easier (just use the-nflag).Introductionpaper2remarkablemakes it as easy as possible to get a PDF on your
reMarkable from any of the following sources:arXivACL WebACM Digital LibraryCVFECCCIACRJMLRNatureNBERNeurIPSOpenReviewPMLRPubMed CentralSemanticScholarSpringerLinkA generic URL to a PDF fileA local PDF or Postscript fileAny article on a websiteThe program aims to be flexible to the exact source URL, so for many of the
academic sources you can either provide a URL to the abstract page or to the
PDF file. If you have a source that you would like to see added to the list,
let me know!paper2remarkabletakes the source URL and:Downloads the pdfRemoves the arXiv timestamp (for arXiv sources)Crops the pdf to remove unnecessary bordersShrinks the pdf file to reduce the filesizeGenerates a nice filename based on author/title/year of the paperUploads it to your reMarkable usingrMapi.Optionally, you can:Download a paper but not upload to the reMarkable using the-nswitch.Insert a blank page after each page using the-bswitch (useful for note
taking!)Center (-c) or right-align (-r) the pdf on the reMarkable (default
is left-aligned), or disable cropping altogether (-k).Provide an explicit filename using the--filenameparameterSpecify the location on the reMarkable to place the file (default/)Here's an example with verbose mode enabled that shows everything the script
does by default:$ p2r -v https://arxiv.org/abs/1811.11242
2019-05-30 00:38:27 - INFO - Starting ArxivProvider
2019-05-30 00:38:27 - INFO - Getting paper info from arXiv
2019-05-30 00:38:27 - INFO - Downloading url: https://arxiv.org/abs/1811.11242
2019-05-30 00:38:27 - INFO - Generating output filename
2019-05-30 00:38:27 - INFO - Created filename: Burg_Nazabal_Sutton_-_Wrangling_Messy_CSV_Files_by_Detecting_Row_and_Type_Patterns_2018.pdf
2019-05-30 00:38:27 - INFO - Downloading file at url: https://arxiv.org/pdf/1811.11242.pdf
2019-05-30 00:38:32 - INFO - Downloading url: https://arxiv.org/pdf/1811.11242.pdf
2019-05-30 00:38:32 - INFO - Removing arXiv timestamp
2019-05-30 00:38:34 - INFO - Cropping pdf file
2019-05-30 00:38:37 - INFO - Shrinking pdf file
2019-05-30 00:38:38 - INFO - Starting upload to reMarkable
2019-05-30 00:38:42 - INFO - Upload successful.InstallationFor ArchLinux, paper2remarkable can be installed through theArch User
Repository.The script requires the following external programs to be available:pdftk,qpdf, orpdftk-java, whichever your package
manager provides.GhostScriptrMAPISpecifically:First installrMAPI, using the
instructions available here:https://github.com/juruen/rmapi#installThen install system dependencies:Arch Linux:pacman -S pdftk ghostscript popplerUbuntu:apt-get install pdftk ghostscript poppler-utils. Replacepdftkwithqpdfif your distribution doesn't packagepdftk.MacOS:brew install pdftk-java ghostscript poppler(usingHomeBrew).Windows:Installers or executables are available forqpdf(for instance the mingw
binary executables) andGhostScript.
Importantly, Windows support is untested and these are generic
instructions, so we welcome clarifications where needed. The Docker
instructions below may be more convenient on Windows.Finally, installpaper2remarkable:$ pip install paper2remarkablethis installs thep2rcommand line program.Optionally, you can install:pdftoppm(recommended for speed).
Usually part of aPopplerinstallation.theReadabiliPypackage with Node.js support, to allow usingReadability.jsfor HTML articles.
This is known to improve the output of certain web articles.If any of the dependencies (such as rmapi or ghostscript) are not available on
thePATHvariable, you can supply them with the relevant options to the
script (for instancep2r --rmapi /path/to/rmapi). If you run into trouble
with the installation, please let me know by opening an issueon
Github.UsageThe full help of the script is as follows. Hopefully the various command line
flags are self-explanatory, but if you'd like more information see theman
page(man p2r) or open an issueon GitHub.usage: p2r [-h] [-b] [-c] [-d] [-e] [-n] [-p REMARKABLE_DIR] [-r] [-k] [-v]
           [-V] [-f FILENAME] [--gs GS] [--pdftoppm PDFTOPPM] [--pdftk PDFTK]
           [--qpdf QPDF] [--rmapi RMAPI] [--css CSS] [--font-urls FONT_URLS]
           [-C CONFIG] input [input ...]

Paper2reMarkable version 0.9.4

positional arguments:
  input                 One or more URLs to a paper or paths to local PDF
                        files

optional arguments:
  -h, --help            show this help message and exit
  -b, --blank           Add a blank page after every page of the PDF
  -c, --center          Center the PDF on the page, instead of left align
  -d, --debug           debug mode, doesn't upload to reMarkable
  -e, --experimental    enable experimental features
  -n, --no-upload       don't upload to reMarkable, save the output in current
                        directory
  -p REMARKABLE_DIR, --remarkable-path REMARKABLE_DIR
                        directory on reMarkable to put the file (created if
                        missing, default: /)
  -r, --right           Right align so the menu doesn't cover it
  -k, --no-crop         Don't crop the pdf file
  -v, --verbose         be verbose
  -V, --version         Show version and exit
  -f FILENAME, --filename FILENAME
                        Filename to use for the file on reMarkable
  --gs GS               path to gs executable (default: gs)
  --pdftoppm PDFTOPPM   path to pdftoppm executable (default: pdftoppm)
  --pdftk PDFTK         path to pdftk executable (default: pdftk)
  --qpdf QPDF           path to qpdf executable (default: qpdf)
  --rmapi RMAPI         path to rmapi executable (default: rmapi)
  --css CSS             path to custom CSS file for HTML output
  --font-urls FONT_URLS
                        path to custom font urls file for HTML output
  -C CONFIG, --config CONFIG
                        path to config file (default: ~/.paper2remarkable.yml)By defaultpaper2remarkablemakes a PDF fit better on the reMarkable by
changing the page size and removing unnecessary whitespace. Some tools for
exporting a PDF with annotations do not handle different page sizes properly,
causing annotations to be misplaced (seediscussion). If
this is an issue for you, you can disable cropping using the-k/--no-cropoption top2r.For HTML sources (i.e. web articles) you can specify custom styling using the--cssand--font-urlsoptions. The default style in theHTML
providercan serve as a starting point.Local PDF or Postscript files can be supplied too, usingp2r /path/to/file.pdf.A configuration file can be used to provide commonly-used command line
options. By default the configuration file at~/.paper2remarkable.ymlis
used if it exists, but an alternative location can be provided with the-C/--configflag. Command line flags override the settings in the
configuration file.  See theconfig.example.ymlfile
for an example configuration file and an overview of supported options.Alfred WorkflowOn MacOS, you can optionally installthis Alfred workflow. Alfred
isa launcher for MacOS.Once installed, you can then usermcommand andrmb(for the--blankpages to insert blank pages between pages for notes) with a URL passed. The
global shortcutAlt-Pwill send the current selection top2r. Note that by
default--rightis passed andp2ris executed in yourbashenvironment.
You can edit the Workflow in Alfred if this doesn't work for your setup.PrintingPrinting top2rallows printing prompts to save directly to your reMarkable
tablet, passing throughp2rfor processing.For MacOS, you can followthe guidefor printing withrmapi,
but for the bash script, instead use this script:for f in "$@"
do
	bash -c -l "p2r --right '$f'" 
doneDockerIf you'd like to avoid installing the dependencies directly on your machine,
you can use the Dockerfile. To make this work you will needgitanddockerinstalled.First clone this repository withgit cloneandcdinside of it, then build
the container:dockerbuild-tp2r.Authorizationpaper2remarkableusesrMapito sync
documents to the reMarkable. The first time you runpaper2remarkableyou
will have to authenticate rMapi using a one-time code provided by reMarkable.
By default, rMapi uses the${HOME}/.rmapifile as a configuration file to
store the credentials, and so this is the location we will use in the commands
below. If you'd like to use a different location for the configuration (for
instance,${HOME}/.config/rmapi/rmapi.conf), make sure to change the
commands below accordingly.If you already have a~/.rmapifile with the authentication details, you can
skip this section. Otherwise we'll create it and runrmapiin the docker
container for authentication:$touch${HOME}/.rmapi
$dockerrun--rm-i-t-v"${HOME}/.rmapi:/home/user/.rmapi:rw"--entrypoint=rmapip2rversionThis command will print a link where you can obtain a one-time code to
authenticate rMapi and afterwards print the rMapi version (the version number
may be different):ReMarkableCloudAPIShell
rmapiversion:0.0.12UsageUse the container by replacingp2rwithdocker run --rm -v  "${HOME}/.rmapi:/home/user/.rmapi:rw" p2r, e.g.# print help and exit
docker run --rm -v "${HOME}/.rmapi:/home/user/.rmapi:rw" p2r --help

# equivalent to above usage
docker run --rm -v "${HOME}/.rmapi:/home/user/.rmapi:rw" p2r -v https://arxiv.org/abs/1811.11242

# to transfer a local file in the current directory
docker run --rm -v "${HOME}/.rmapi:/home/user/.rmapi:rw" -v "$(pwd):/home/user:ro" p2r -v localfile.pdfFor transferring local files using the Docker image, you may findthis helper
functionuseful.You can also create analiasin
your~/.bashrcfile to abstract away the Docker commands:# in ~/.bashrcaliasp2r="docker run --rm -v \"${HOME}/.rmapi:/home/user/.rmapi:rw\" p2r"After runningsource ~/.bashrcto activate the alias, you can then usepaper2remarkablethrough Docker by callingp2rfrom the command line.NotesLicense: MITIf you find a problem or want to suggest a feature, please open an issueon
Github. You're helping to make this project better for everyone!Thanks to all thecontributorswho've helped to support the project.