{"id":13770858,"url":"https://github.com/rschroll/rmrl","last_synced_at":"2025-05-11T03:32:56.475Z","repository":{"id":46210869,"uuid":"332635937","full_name":"rschroll/rmrl","owner":"rschroll","description":"Render reMarkable documents to PDF","archived":false,"fork":false,"pushed_at":"2021-11-06T15:10:14.000Z","size":1402,"stargazers_count":129,"open_issues_count":14,"forks_count":23,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-21T16:19:59.857Z","etag":null,"topics":["remarkable-tablet"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rschroll.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-01-25T05:02:50.000Z","updated_at":"2025-03-27T06:48:33.000Z","dependencies_parsed_at":"2022-09-10T11:21:10.496Z","dependency_job_id":null,"html_url":"https://github.com/rschroll/rmrl","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rschroll%2Frmrl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rschroll%2Frmrl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rschroll%2Frmrl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rschroll%2Frmrl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rschroll","download_url":"https://codeload.github.com/rschroll/rmrl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253514352,"owners_count":21920327,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["remarkable-tablet"],"created_at":"2024-08-03T17:00:43.214Z","updated_at":"2025-05-11T03:32:55.357Z","avatar_url":"https://github.com/rschroll.png","language":"Python","readme":"rmrl: reMarkable Rendering Library\n===================================\nrmrl is a Python library for rendering reMarkable documents to PDF files.\nIt takes the original PDF document and the files describing your annotations,\ncombining them to produce a document close to what reMarkable itself would\noutput.\n\nDemo\n----\nThe same notebook was rendered to a PDF via the reMarkable app and rmrl.\nThe resultant PDF files were converted to PNGs with ImageMagick at 300\ndpi.\n\n reMarkable output | rmrl output\n:-----------------:|:-----------:\n[![reMarkable](demo/app.png)](demo/app.png) | [![rmrl](demo/rmrl.png)](demo/rmrl.png)\n\nThe biggest differences are the lack of texture in the pencils and paintbrush,\nwhich we hope to address in the future.  Two differences are intentional:\n- The highlight color is more saturated, since we feel the default color is\n  too subtle.\n- The grid lines from the template are less saturated, to better reflect the\n  appearance on the device.  This is configurable.\n\nInstallation\n------------\nrmrl requires Python 3.7 or later.  If that's installed, the easiest installation\nis to do a\n```bash\npip install rmrl\n```\nAlternatively, you may clone this repository.  [Poetry](https://python-poetry.org/) is used for development, so once that is installed you can run\n```bash\npoetry install\n```\nto get a virtual environment all set up.\n\nUsage\n-----\nThe main interface to rmrl is through a single function:\n```python\nfrom rmrl import render\n\noutput = render(source)\n```\n`source` may be:\n- The filename of a zip file containing the document.\n- The filename of any (root-level) file from an unpacked document.\n- Any object that provides `open()` and `exists()` methods.  See\n  `rmrl/sources.py` for more details on this API.\n\nThe output is a filestream with the contents of the PDF file.\n\nThe `render` function takes the following keyword arguments:\n- `progress_cb`: A callback function to be called periodically during the\n  rendering process.  It will be called with a single argument, a number\n  from 0 to 100 indicating the progress.  This function can abort the\n  process by raising an exception.\n\nCommand-line Usage\n------------------\nrmrl may be called as a command-line tool.  Once it has been installed, run\n```bash\npython -m rmrl filename\n```\nto convert `filename` to an annotated PDF.  The default output is to stdout.\nUse\n```bash\npython -m rmrl -h\n```\nto see all of the options.\n\nTemplates\n---------\nrmrl can use the reMarkable templates as a background when rendering notebooks.\nWe cannot ship copies of these templates.  You may be allowed to copy them from\nyour own reMarkable device on to your computer for personal use.  If this is\nlegal in your jurisdiction, you may connect your device to your computer by the\nUSB cable and run\n```bash\npython -m rmrl.load_templates\n```\nThis will copy these templates to `~/.local/share/rmrl/templates` (assuming\ndefault XDG settings).\n\nHistory\n-------\nrmrl derives from the [reMarkable Connection Utility](http://www.davisr.me/projects/rcu/),\nby Davis Remmel.  RCU is a full-featured GUI for managing all aspects of a\nreMarkable device.  Do check it out if you are looking for a stand-alone\nsolution for getting documents on and off of your device.\n\nRCU was chosen as a base for rmrl due to its high-quality rendering.  The\nfollowing are the major changes:\n- rmrl is designed as a library, for incorporation into other programs.  RCU\n  is designed as a stand-alone program.\n- rmrl uses the pure-Python [ReportLab Toolkit](https://www.reportlab.com/dev/opensource/rl-toolkit/)\n  for rendering PDF files.  RCU uses the Qt framework, which is a significantly\n  heavier installation.\n- rmrl only supports vector output, while RCU offers both raster and vector\n  rendering.\n- RCU supports PDF layers (Optional Content Groups).  At this point, rmrl does\n  not.\n- RCU can add PDF annotations corresponding to highlights.  At this point, rmrl\n  does not.\n\nTrademarks\n----------\nreMarkable(R) is a registered trademark of reMarkable AS. rmrl is not\naffiliated with, or endorsed by, reMarkable AS. The use of “reMarkable”\nin this work refers to the company’s e-paper tablet product(s).\n\nCopyright\n---------\nCopyright (C) 2020  Davis Remmel\n\nCopyright 2021 Robert Schroll\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program.  If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n","funding_links":[],"categories":["APIs"],"sub_categories":["Lines Format"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frschroll%2Frmrl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frschroll%2Frmrl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frschroll%2Frmrl/lists"}