{"id":16897289,"url":"https://github.com/kami/firefox-website-to-remarkable","last_synced_at":"2026-04-07T20:32:21.747Z","repository":{"id":136499717,"uuid":"321790144","full_name":"Kami/firefox-website-to-remarkable","owner":"Kami","description":"Project which allows you to convert website to a (grayscale) PDF and send it to your Remarkable device using Firefox. It includes self hosted service for converting websites to PDFs, simple Firefox extension and scripts for adding PDFs to Remarkable using rmapi or Nextcloud.","archived":false,"fork":false,"pushed_at":"2020-12-19T18:28:57.000Z","size":244,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-20T11:19:02.192Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Kami.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-12-15T21:12:12.000Z","updated_at":"2020-12-30T11:34:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"3162208b-089f-4549-9833-cc810619ea95","html_url":"https://github.com/Kami/firefox-website-to-remarkable","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Kami/firefox-website-to-remarkable","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kami%2Ffirefox-website-to-remarkable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kami%2Ffirefox-website-to-remarkable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kami%2Ffirefox-website-to-remarkable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kami%2Ffirefox-website-to-remarkable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kami","download_url":"https://codeload.github.com/Kami/firefox-website-to-remarkable/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kami%2Ffirefox-website-to-remarkable/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31528401,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2024-10-13T17:36:04.981Z","updated_at":"2026-04-07T20:32:21.727Z","avatar_url":"https://github.com/Kami.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Website to PDF to Remarkable 2 (Firefox)\n\nThis repository contains components and code pieces which allow you to send PDF version of the\nwebsite you are currently viewing to your Remarkable.\n\nIt consists of the following components:\n\n1. Python web service which generates PDF of a provided URL and places it in a specific directory.\n2. Firefox extension which sends URL of the website you are currently viewing to Python web service\n3. Script which adds / pulls that content to Remarkable\n\nRight now there are multiple options for 3), depending on how comfortable you feel with using\nRemarkable cloud to push content to your device.\n\nFirst approach uses a simple bash script which runs as a cron job and periodically checks directory\nwhere the PDFs are saved and uploads any new files to RM2 using Remarkable cloud.\n\nSecond one relies on uploading those PDFs to Nextcloud directory and nextcloud running a systemd\ntimer which uses rclone to periodically pull down next files from Nextcloud (e.g. \nhttps://github.com/merqurio/remarkable-syncthing).\n\nThis approach supports moving files directly to a directory (when the service is co-located with\nNextcloud) or uploading it using WebDAV protocol.\n\nNice thing about this \"composable\" approach is that you can add additional steps to the pipeline.\n\nFor example, bash script which I used to sync content to Nextcloud also runs imagemagick on the\nPDFs and darkness them to increase the contrast and make them easier to read.\n\n## Directory Layout\n\n* ``python_app/`` - Python flask service for converting website to PDF\n* ``firefox_extension`` - Firefox extension.\n* ``scripts/`` - Scripts for moving / syncing files to Remarkable.\n\n## Usage\n\nTo run the service, you can use example ``docker-compose.yml`` file in the root directory -\nmake sure you modify necessary environment variables.\n\n## Notes, Limitations\n\n1. Firefox extension can't directly generate a PDF which means we need to have an intermediate\n   service which takes care of generating the PDFs.\n\n   Service will generate the PDF by visiting and rendering the website which means it will only\n   work for public website and situations where no state (e.g. cookies or being logged in) is\n   involved.\n\n   Technically, pdfkit and wkhtmltopdf (https://wkhtmltopdf.org/) which is used underneath\n   allows you to send custom cookies, etc. but sending custom cookies from Firefox to extension\n   to the service would open a whole can of security related issues and it's not a good idea.\n\n2. For any kind of serious deployment, you should deploy Python service behind TLS (that's easy to\n  do with docker compose, example configuration is stored inside .examples/ directory).\n\n  Service supports simple \"secret in query parameter\" based authentication, but you are encouraged\n  to add another layer of protection by putting Nginx basic auth in-front of it (that's again trivial\n  to do with nginx proxy running inside Docker container).\n\n## Note on the generated PDF contrast\n\nAs mentioned above, the web app will generate a grayscale PDF. Depending on the original website\nfont color, etc. the output PDF may have a low contrast which may be hard to read on Remarkable.\n\nTo work around that, this repo contains a script which utilizes imagemagick to darken the\ngenerated PDF and increase the contrast.\n\nIn fact, this script may also come handy in many other situations where you have a low contrast PDF\nwhich is not easy to read on Remarkable.\n\nBefore darken:\n\n![original](https://user-images.githubusercontent.com/125088/102696665-30d41180-4230-11eb-9157-5fe1c34f9243.jpg)\n\nAfter darken:\n\n![after_darken](https://user-images.githubusercontent.com/125088/102696667-33366b80-4230-11eb-8841-76525d0e2ab1.jpg)\n\n## Copyright, License, and Contributors Agreement\n\nCopyright 2020 Tomaz Muraus\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this work except in\ncompliance with the License. You may obtain a copy of the License in the [LICENSE](LICENSE) file, or at:\n\n[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkami%2Ffirefox-website-to-remarkable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkami%2Ffirefox-website-to-remarkable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkami%2Ffirefox-website-to-remarkable/lists"}