# -*- coding: utf-8 -*- from Products.PortalTransforms.interfaces import ITransform from zope.interface import implementer from erp5.component.module.TransformLib import DocumentConversionServerTransform @implementer(ITransform) class TransformHtmlToPdf(DocumentConversionServerTransform): """ Transforms HTML to PDF through document conversion server """ __name__ = 'html_to_pdf' inputs = ('text/html',) output = 'application/pdf' def _getFormatFromMimetype(self, mimetype): # XXX: mimetypes.guess_extension() for text/html may returns either '.htm' # or '.html' but the former is not supported by wkhtmltopdf Handler # (https://lab.nexedi.com/nexedi/cloudooo/merge_requests/20) return 'html' if mimetype == 'text/html' else 'pdf' def convert(self, *args, **kwargs): # wkhtmltopdf handler currently requires conversion_kw (hack in convertFile())... if 'conversion_kw' not in kwargs: kwargs['conversion_kw'] = {'encoding': 'utf-8'} # raise RuntimeError return DocumentConversionServerTransform.convert(self, *args, **kwargs) def register(): return TransformHtmlToPdf()