2024-10-28 HAYASHI Hideki <hideki@hayasix.com>
Xdwlib is a DocuWorks library for Python.
This document provides some general information about xdwlib source release. Detailed description is available in docs/ only in Japanese at the moment.
Report problems with this release to the author.
Copyright (C) 2010 HAYASHI Hideki
Xdwlib is provided under The Zope Public License (ZPL) Version 2.1, which is included in 'LICENSE.rst'. Send your feedback about the license to the author.
- Microsoft Windows (versions compatible with DocuWorks 7+)
- Python 3.7+
- DocuWorks 7+ (Japanese version; English version may also work)
Set PATH environment variable properly and issue the following command:
python3 setup.py install
This will install xdwlib in $PYTHONPATH/xdwlib.
Xdwlib is also delivered via Python Package Index (PyPI). The latest version of xdwlib will be installed by issuing:
pip3 install xdwlib
If you have installed older version of xdwlib already, try:
pip3 install --upgrade xdwlib
Xdwlib has been working with PIL (Python Imaging Library) if available, to rotate pages for desired degrees other than right angles, and to copy bitmap annotations. Unfortunately the original PIL has not been ported on Python 3 yet.
There is an alternative library called Pillow which will be a good substitution. Install Pillow by issuing:
pip3 install pillow
The attached command line tool xdw2text.py
can be compiled to .exe
with cx_Freeze package, a popular successor of py2exe. To build your
own xdw2text.exe
, try:
pip3 install cx_Freeze python3 cx_setup.py build
Native OCR is not available in DocuWorks >=9.1, so xdwlib offers OCR by Microsoft Azure AI Vision or Google Cloud Vision (credentials required for the services). To use Google Cloud Vision, install this module:
pip3 install google-cloud-vision
Detailed documents are available in Japanese at Read the Docs.
Python's help() also gives brief descriptions in English.
The following code will appy OCR and paste a date stamp on every page as an annotation:
import time from xdwlib import xdwopen, Point ... with xdwopen(PATHNAME, autosave=True) as doc: position = Point(pg.size - 100, pg.size - 20) datestamp = time.strftime("%Y-%m-%d") for pg in doc: pg.rotate(auto=True) pg.ocr(strategy="accuracy") ann = pg.add_text(position=position, text=datestamp) ann.fore_color = "red"
The author appreciates bug reports from you by email.
Have fun!