PDFreactor integration for Plone
Project description
This Add-On package integrates the PDFreactor client API by RealObjects, as provided by the pdfreactor-api package, into Plone.
To effectively make use of it, you’ll need
a running PDFreactor server
the keys needed to access it; depending on the server configuration:
the license key (from RealObjects; see https://www.pdfreactor.com/buy/) (unless installed on the server)
and
an API key, if required by the server.
Features
A simple @@as.pdf browser view for contentish objects (providing a synchronous PDF export with standard options)
A custom form @@pdfreactor-connection-settings to edit the connection settings (which are stored in the Plone registry)
A simple @@pdfreactor-config view to provide basic conversion settings (i.e., the Zope cookies which are needed to create PDF exports from restricted contents)
For a package providing customizable conversion settings in the registry as well, see below.
A simple CSS stylesheet which is used by the default configuration to suppress uninteresting page parts
Installation
Plone environments are typically built using zc.buildout; so add to your buildout.cfg script:
[buildout] ... eggs = pdfreactor.plone
and then run bin/buildout.
This will get you the pdfreactor-api package as well.
After restarting your Zope instance, you’ll find the package in the Quick-Installer or the Plone Add-Ons view.
After installing (or activating) the package there, visit the @@pdfreactor-connection-settings view of your Plone instance to customize your PDFreactor connection settings (URL and license and / or API key).
For installation instructions regarding the PDFreactor service itself, please refer to PDFreactor Support.
Customization
Zope / Plone
You have several options:
You may subclass our .base.Exporter BrowserView class (which provides the @@as.pdf view) and override some of it’s methods, e.g.
converted_url
conversionSettings
You may connect our BrowserView class or subclasses of it to more specific interfaces than IContentish. (You might need a layer interface to avoid configuration conflicts).
You may override the @@pdfreactor-config view to modify the conversion options (generally, or by interface).
One add-on package to get a global “TTW” customizable configuration is pdfreactor.parsecfg.
Please refer to the Zope / Plone documentation for instructions how to do this.
PDFreactor
For the details about the supported methods and configuration options of the PDFreactor itself, please refer to the documentation by RealObjects GmbH:
Support
If you are having issues concerning this Plone integration, please let us know; please use the issue tracker mentioned above.
For issues regarding the PDFreactor itself, please refer to RealObjects GmbH:
Contribute
(To this Plone integration package:)
Issue Tracker: https://github.com/visaplan/pdfreactor.plone/issues
Source Code: https://github.com/visaplan/pdfreactor.plone
License
The project is licensed under the MIT License.
Changelog
1.0.4 (2023-12-08)
Miscellaneous:
Add __noduplicate to the list of cookies.
This is important if you use the no_duplicate_login PAS plugin (Products.NoDuplicateLogin); otherwise, creation of PDF documents or screenshots might fail. Or the PDFreactor might kick you out.
[tobiasherp]
1.0.3 (2023-04-05)
New Features:
The .base.Exporter class now provides an own .convert method which accepts binary, async and stream arguments and calls the appropriate conversion method internally.
Currently, it will return
None, if a stream was given,
binary data, if binary was given (and not stream), and
the document_id, if async was given, and
a dict with all meta information contained otherwise.
Improvements:
The .base.Exporter class now provides (and uses) a conversionSource method which in turn uses the existing converted_url method.
Note: if providing text instead of a URL as the document config key, you likely need to specify a baseUrl as well; otherwise the reactor might fail to load stylesheets or images during conversion.
Development hints:
When developing and testing your PDFreactor conversions, be sure you have more than one Zope worker thread ready; otherwise you might wonder about HTTP errors when the reactor sends requests to your instance!
We provide the original API (from the PDFreactor distribution) as .raw_api module (for development and testing; helps to check whether a certain problem is related to our pythonization measures).
Just in case.
[tobiasherp]
1.0.2 (2023-01-20)
New Features:
For MathML support:
added a @@pdfreactor-mathjax-vars.js view (for configuration), and
a ++resource++pdfreactor.plone/mathjax2-run.js script to ease MathJax integration.
This is not configurable yet, but will likely be, soon.
Note: PDFreactor v11.6.3 (2023-03-07) contains a fix to a bug which caused MathML exports as “continuous media” to fail.
The @@as.pdf method supports a method option; e.g., call .../my/page/@@as.pdf?method=@@from-screenshot to create a PDF file from .../my/page/@@from-screenshot.
[tobiasherp]
1.0.1 (2022-09-20)
Miscellaneous:
The connectionSettings method doesn’t return any cookies anymore because the Zope cookies are considered config information.
The .base.Exporter provides a getZopeCookies method now for use in derived view classes which override the conversionSettings method to not use @@pdfreactor-config.
[tobiasherp]
1.0.0 (2022-07-12)
Initial release. [tobiasherp]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.