PDF Output: Remove JS from HTML files before passing them to WebKit

This commit is contained in:
Kovid Goyal 2019-05-17 20:39:24 +05:30
parent c2e36408d3
commit 3d586aa15a
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -270,6 +270,18 @@ class PDFOutput(OutputFormatPlugin):
if hasattr(root, 'xpath') and margins: if hasattr(root, 'xpath') and margins:
root.set('data-calibre-pdf-output-page-margins', json.dumps(margins)) root.set('data-calibre-pdf-output-page-margins', json.dumps(margins))
# Remove javascript
for item in self.oeb.spine:
root = item.data
if hasattr(root, 'xpath'):
for script in root.xpath('//*[local-name()="script"]'):
script.text = None
script.attrib.clear()
for elem in root.iter('*'):
for attr in tuple(elem.attrib):
if attr.startswith('on'):
elem.set(attr, '')
with TemporaryDirectory('_pdf_out') as oeb_dir: with TemporaryDirectory('_pdf_out') as oeb_dir:
from calibre.customize.ui import plugin_for_output_format from calibre.customize.ui import plugin_for_output_format
oeb_output = plugin_for_output_format('oeb') oeb_output = plugin_for_output_format('oeb')