Skip to main content

PDF <-> Write document converter

Project description

pdftowrite: PDF <-> Write with text

A utility that converts PDF to Stylus Labs Write document preserving text as selectable characters, and vice versa.

How does it work

pdftowrite converts PDF pages to SVG paths, adds an invisible but selectable text layer to each page, and merges them into a Write document.

writetopdf converts a Write document to a PDF.

Why do I need writetopdf? Write itself can export PDF

The PDF exporter of Write does not support some features (e.g. Unicode text, multi-coords tspans, etc.), but writetopdf does.

If I convert PDF -> Write -> PDF, Is the latter PDF is 100% the same as the former?

No, the program does not guarantee it. pdftowrite converts PDF pages to SVG paths, so original text elements are deleted. Instead, a text layer is added to the page as mentioned earlier.

Install

pip install --user pdftowrite

Requirements

pdftowrite:

  • Poppler
  • Inkscape (either native or flatpak)
  • ImageMagick
  • gzip
  • lxml (libxml2, libxslt)

writetopdf:

  • wkhtmltopdf
  • PDFtk(pdftk-java) or Poppler
  • gzip

You need to manually install the packages. e.g.:

  • Debian/Ubuntu: sudo apt install poppler-utils inkscape imagemagick gzip libxml2-dev libxslt-dev wkhtmltopdf pdftk
  • Fedora: sudo dnf install poppler inkscape ImageMagick gzip libxml2-devel libxslt-devel wkhtmltopdf pdftk
  • Arch: sudo pacman -S poppler inkscape imagemagick gzip libxslt wkhtmltopdf pdftk

Example

pdftowrite example.pdf
writetopdf example.svgz

Usage

pdftowrite

usage: pdftowrite [-h] [-v] [-o OUTPUT] [-m {mixed,poppler,inkscape}] [-C]
                  [-d DPI] [-g PAGES] [-u NODUP_PAGES] [-Z] [-s SCALE] [-x X]
                  [-y Y] [-X XRULING] [-Y YRULING] [-l MARGIN_LEFT]
                  [-p PAPERCOLOR] [-r RULECOLOR]
                  FILE

Convert PDF to Stylus Labs Write document

positional arguments:
  FILE                  A pdf file

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit
  -o OUTPUT, --output OUTPUT
                        Specify output filename
  -m {mixed,poppler,inkscape}, --mode {mixed,poppler,inkscape}
                        Specify render mode (default: mixed)
  -C, --no-compat-mode  Turn off Write compatibility mode
  -d DPI, --dpi DPI     Specify resolution for bitmaps and rasterized filters
                        (default: 96)
  -g PAGES, --pages PAGES
                        Specify pages to convert (e.g. "1 2 3", "1-3")
                        (default: all)
  -u NODUP_PAGES, --nodup-pages NODUP_PAGES
                        Specify no-dup pages (e.g. "1 2 3", "1-3") (default:
                        all)
  -Z, --nozip           Do not compress output
  -s SCALE, --scale SCALE
                        Scale page size (default: 1.0)
  -x X                  Specify the x coordinate of the viewport of <svg>
                        (default: 10.0)
  -y Y                  Specify the y coordinate of the viewport of <svg>
                        (default: 10.0)
  -X XRULING, --xruling XRULING
                        Specify x rulling (default: 0.0)
  -Y YRULING, --yruling YRULING
                        Specify y rulling (default: 40.0)
  -l MARGIN_LEFT, --margin-left MARGIN_LEFT
                        Specify margin left (default: 100.0)
  -p PAPERCOLOR, --papercolor PAPERCOLOR
                        Specify paper color (default: #FFFFFF)
  -r RULECOLOR, --rulecolor RULECOLOR
                        Specify rule color (default: #9F0000FF)

writetopdf

usage: writetopdf [-h] [-v] [-o OUTPUT] [-g PAGES] [-s SCALE] FILE

Convert Stylus Labs Write document to PDF

positional arguments:
  FILE                  A Write document

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit
  -o OUTPUT, --output OUTPUT
                        Specify output filename
  -g PAGES, --pages PAGES
                        Specify pages to convert (e.g. "1 2 3", "1-3")
                        (default: all)
  -s SCALE, --scale SCALE
                        Scale page size (default: 1.0)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pdftowrite-2021.4.24.tar.gz (13.0 kB view details)

Uploaded Source

Built Distribution

pdftowrite-2021.4.24-py3-none-any.whl (14.6 kB view details)

Uploaded Python 3

File details

Details for the file pdftowrite-2021.4.24.tar.gz.

File metadata

  • Download URL: pdftowrite-2021.4.24.tar.gz
  • Upload date:
  • Size: 13.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/54.1.2 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.3

File hashes

Hashes for pdftowrite-2021.4.24.tar.gz
Algorithm Hash digest
SHA256 61a581761ac3c8d893cc2e205a498819d4eeb1cd1a1f4d948d142d66f10eb283
MD5 3fd2866ad0ea30efaf8643e7fb74aafe
BLAKE2b-256 0ba5c69d326e168c22f96acc1e8525b2b2df0650e0c9c79f5b6c5065217f5558

See more details on using hashes here.

File details

Details for the file pdftowrite-2021.4.24-py3-none-any.whl.

File metadata

  • Download URL: pdftowrite-2021.4.24-py3-none-any.whl
  • Upload date:
  • Size: 14.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/54.1.2 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.3

File hashes

Hashes for pdftowrite-2021.4.24-py3-none-any.whl
Algorithm Hash digest
SHA256 749221db6dbf1fd096811d2b486bc02aefe620b6dcfef5fa52858dbfb92d0168
MD5 d56c89bf3e5b4a242629d28baa1ab34a
BLAKE2b-256 608c3f84dd26905a16fca4181945702814c474f6a76ffb45ff2a1fba909b5be2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page