diff --git a/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/Base_getTemplateProxyParameter.py b/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/Base_getTemplateProxyParameter.py index e1f7b3f7ab338e8c4112760d7d0ed053b9c1f77a..4b9e23a5472b0df91d761fd73e09346feb1d0992 100644 --- a/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/Base_getTemplateProxyParameter.py +++ b/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/Base_getTemplateProxyParameter.py @@ -128,7 +128,7 @@ def populateOrganisationDict(my_organisation_list): if organisation_default_image: output_dict["logo_url"] = organisation_default_image.getRelativeUrl() output_dict["logo_data_url"] = 'data:image/png;;base64,%s' % ( - b64encode(organisation_default_image.convert(format="png", display="thumbnail")[1]) + b64encode(organisation_default_image.convert(format="png", display="thumbnail")[1]).decode() ) else: output_dict["logo_url"] = err("logo_url") diff --git a/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/Base_viewAsLetter.py b/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/Base_viewAsLetter.py index da568d4d6bcee91dbc7448fee6f76c394377b18b..98499aa65f0dacaadb600696428abebc6e012b38 100644 --- a/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/Base_viewAsLetter.py +++ b/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/Base_viewAsLetter.py @@ -256,9 +256,9 @@ if letter_format == "pdf": ) # ================ encode and build cloudoo elements ========================= - embedded_html_data = letter.Base_convertHtmlToSingleFile(letter_content, allow_script=True) - header_embedded_html_data = letter.Base_convertHtmlToSingleFile(letter_head, allow_script=True) - footer_embedded_html_data = letter.Base_convertHtmlToSingleFile(letter_foot, allow_script=True) + embedded_html_data = letter.Base_convertHtmlToSingleFile(letter_content, allow_script=True).encode('utf-8') + header_embedded_html_data = letter.Base_convertHtmlToSingleFile(letter_head, allow_script=True).encode('utf-8') + footer_embedded_html_data = letter.Base_convertHtmlToSingleFile(letter_foot, allow_script=True).encode('utf-8') pdf_file = letter.Base_cloudoooDocumentConvert(embedded_html_data, "html", "pdf", conversion_kw=dict( encoding="utf8", margin_top=letter_header_margin_to_top, @@ -266,8 +266,8 @@ if letter_format == "pdf": margin_left=0, margin_right=0, header_spacing=1, - header_html_data=b64encode(header_embedded_html_data), - footer_html_data=b64encode(footer_embedded_html_data), + header_html_data=b64encode(header_embedded_html_data).decode(), + footer_html_data=b64encode(footer_embedded_html_data).decode(), ) ) diff --git a/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/Base_viewAsReport.py b/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/Base_viewAsReport.py index a4f8a788619a8f19ad7946f255347115dda77945..99513c3ec94cacb4b99a443981fc92d824fbdaa6 100644 --- a/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/Base_viewAsReport.py +++ b/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/Base_viewAsReport.py @@ -269,10 +269,10 @@ if doc_format == "pdf": margin_bottom=20, toc=False, before_toc_data_list=before_toc_data_list, - xsl_style_sheet_data=b64encode(xsl_style_sheet_data), - header_html_data=b64encode(header_embedded_html_data), + xsl_style_sheet_data=b64encode(xsl_style_sheet_data).decode(), + header_html_data=b64encode(header_embedded_html_data).decode(), header_spacing=10, - footer_html_data=b64encode(footer_embedded_html_data), + footer_html_data=b64encode(footer_embedded_html_data).decode(), footer_spacing=3, ) default_conversion_kw.update(conversion_dict) diff --git a/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/Presentation_viewAsSlideshow.py b/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/Presentation_viewAsSlideshow.py index 334318af745cae1131ed109deff32990f9c77d36..783a56dc7d5dd9f16f581fb4befd0a1ab6f07eb4 100644 --- a/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/Presentation_viewAsSlideshow.py +++ b/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/Presentation_viewAsSlideshow.py @@ -11,6 +11,8 @@ Try to convert old OpenOffice presentations into slideshows # ------------------------------------------------------------------------------ import re +from io import BytesIO +from zipfile import ZipFile blank = '' flags = re.MULTILINE|re.DOTALL|re.IGNORECASE @@ -18,8 +20,21 @@ flags = re.MULTILINE|re.DOTALL|re.IGNORECASE def getHeaderSlideTitle(my_doc): return '<h1>' + my_doc.getTitle() + '</h1>' -def getSlideList(content): - return re.findall(r'<html>(.*?)</html>', content, flags=flags) +def getSlideList(zip_content): + slide_list = [] + with ZipFile(BytesIO(zip_content)) as zf: + for name in sorted( + zf.namelist(), + # iterate in order: 'tmpczlzod7e.impr.html', 'img1.html', 'text1.html', 'img2.html', 'text2.html' + key=lambda name: ( + not name.endswith('impr.html'), + 'img' not in name, + name.replace('img', '').replace('text', ''))): + if name.endswith('.html'): + slide_list.extend( + re.findall(r'<html>(.*?)</html>', zf.read(name).decode('utf-8'), flags=flags) + ) + return slide_list def getKey(item): return int(item[0]) @@ -29,7 +44,11 @@ if context.getPortalType() in ["Presentation"]: portal = context.getPortalObject() mimetype = 'text/html' content_type = context.getContentType() - raw_data = portal.portal_transforms.convertToData(mimetype, bytes(context.getData() or b""), context=context, mimetype=content_type) + raw_data = portal.portal_transforms.convertToData( + mimetype, + bytes(context.getData() or b""), + context=context, + mimetype=content_type) if raw_data is None: raise ValueError("Failed to convert to %r" % mimetype) if context.REQUEST is not None: @@ -38,6 +57,8 @@ if context.getPortalType() in ["Presentation"]: # get a list of slides content = getSlideList(raw_data) + # ( comment below might be obsolete, this was before fixing a bug that we iterated + # directly in the binary data from .zip raw content, which was somehow OK on python2 ) # every slide is in the raw_data twice, once with the title and image as text, # once with the slidecontent without title. All slides are mixed randomly, so # we need to find out which slide contains what and then put them in their diff --git a/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_createTableOfContent.py b/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_createTableOfContent.py index 2ef23f536e6a4d60c3d83bd449b84436f648e55a..707075bd5f60e6167334acdf747a87295c023f96 100644 --- a/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_createTableOfContent.py +++ b/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_createTableOfContent.py @@ -15,7 +15,7 @@ import re from Products.PythonScripts.standard import html_quote blank = "" -header_current = 1 +header_current = '0' header_initial = None table_of_content = blank index = 0 diff --git a/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_embedReportDocumentList.py b/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_embedReportDocumentList.py index 90c59384175ef7c0988dfb5a046e507b9e6f699d..bef82cb8d61abcba906220e937f29fc50855bf06 100644 --- a/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_embedReportDocumentList.py +++ b/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_embedReportDocumentList.py @@ -10,6 +10,7 @@ Insert reports linked to in a document (including backcompat handling) # doc_format output format being generated import re +import six document = context @@ -28,10 +29,14 @@ def getReportViaFancyName(my_report_name, follow_up): if method_call is not None: # extra curl: Coverage report requires parameter details (1|0) if coverage_name: - return method_call(display_comment=True)[0].encode(encoding='UTF-8') - if detail_name: - return method_call(format='detailed',display_detail = 1)[0].encode(encoding='UTF-8') - return method_call(display_comment=True)[0].encode(encoding='UTF-8') + result = method_call(display_comment=True)[0] + elif detail_name: + result = method_call(format='detailed',display_detail = 1)[0] + else: + result = method_call(display_comment=True)[0] + if six.PY2: + result = result.encode(encoding='UTF-8') + return result if doc_content.find('${WebPage_') != -1: document_required_follow_up_list = [x.getObject() for x in document.portal_catalog( @@ -82,8 +87,10 @@ for link in re.findall('([^[]<a.*?</a>[^]])', doc_content): if target_context is not None: target_caller = getattr(target_context, report_name, None) if target_caller is not None: - substitution_content = target_caller(**link_param_dict) + substitution_content = target_caller(**link_param_dict)[0] + if six.PY2: + substitution_content = substitution_content.encode("utf-8") # Note: switched to report returning a tuple with (content, header-title, header-subtitle) - doc_content = doc_content.replace(link, substitution_content[0].encode("utf-8").strip()) + doc_content = doc_content.replace(link, substitution_content.strip()) return doc_content diff --git a/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_viewAsBook.py b/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_viewAsBook.py index d9f05f08aa91d6c3ac8cbf94d1e0212562b6ad39..21e8a0f0e359b5756b3b6397fb9d7177aefb4ba7 100644 --- a/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_viewAsBook.py +++ b/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_viewAsBook.py @@ -33,6 +33,7 @@ MAIN FILE: generate book in different output formats # display_svg format for svg images (svg, png*) import re +import six from Products.PythonScripts.standard import html_quote from base64 import b64encode @@ -83,8 +84,7 @@ book_version = html_quote(override_document_version) if override_document_versio book_description = html_quote(override_document_description) if override_document_description else book.getDescription() book_title = html_quote(override_document_title) if override_document_title else book.getTitle() -# unicode -if isinstance(book_content, unicode): +if six.PY2 and isinstance(book_content, unicode): book_content = book_content.encode("UTF-8") # backcompat @@ -197,7 +197,9 @@ if book_include_reference_table: #else: # book_content = book_content.replace("${WebPage_insertTableOfReferences}", book_references.encode('UTF-8').strip()) book_references = book.Base_unescape(book_references) - book_content = book_content.replace("${WebPage_insertTableOfReferences}", book_references.encode('UTF-8').strip()) + if six.PY2: + book_references = book_references.encode('utf-8') + book_content = book_content.replace("${WebPage_insertTableOfReferences}", book_references.strip()) else: book_content = book_content.replace("${WebPage_insertTableOfReferences}", blank) @@ -209,7 +211,7 @@ if book_include_content_table: book_table_of_content = book.WebPage_createBookXslTableOfContent( book_toc_title=book_translated_toc_title, margin_15mm = margin_15mm - ).encode('UTF-8').strip() + ).strip() elif book_format == "html": book_content, book_table_of_content = book.WebPage_createTableOfContent( doc_content=book_content, @@ -357,22 +359,22 @@ elif book_format == "pdf": ) # ================ encode and build cloudoo elements ========================= - header_embedded_html_data = book.Base_convertHtmlToSingleFile(book_head, allow_script=True) + header_embedded_html_data = book.Base_convertHtmlToSingleFile(book_head, allow_script=True).encode('utf-8') before_toc_data_list = [ - b64encode(book.Base_convertHtmlToSingleFile(book_cover, allow_script=True)), + b64encode(book.Base_convertHtmlToSingleFile(book_cover, allow_script=True).encode('utf-8')).decode(), ] after_toc_data_list = [] if book_include_history_table: before_toc_data_list.append( - b64encode(book.Base_convertHtmlToSingleFile(book_history, allow_script=True)) + b64encode(book.Base_convertHtmlToSingleFile(book_history, allow_script=True).encode('utf-8')).decode() ) #if book_include_reference_table: # after_toc_data_list.append( - # b64encode(book.Base_convertHtmlToSingleFile(book_references, allow_script=True)) + # b64encode(book.Base_convertHtmlToSingleFile(book_references, allow_script=True).encode('utf-8')).decode() # ) - xsl_style_sheet_data = book_table_of_content - embedded_html_data = book.Base_convertHtmlToSingleFile(book_content, allow_script=True) - footer_embedded_html_data = book.Base_convertHtmlToSingleFile(book_foot, allow_script=True) + xsl_style_sheet_data = book_table_of_content.encode('utf-8') + embedded_html_data = book.Base_convertHtmlToSingleFile(book_content, allow_script=True).encode('utf-8') + footer_embedded_html_data = book.Base_convertHtmlToSingleFile(book_foot, allow_script=True).encode('utf-8') if margin_15mm: margin_top = 50 margin_bottom = 25 @@ -385,11 +387,11 @@ elif book_format == "pdf": margin_bottom=margin_bottom, toc=True if book_include_content_table else False, before_toc_data_list=before_toc_data_list, - xsl_style_sheet_data=b64encode(xsl_style_sheet_data), + xsl_style_sheet_data=b64encode(xsl_style_sheet_data).decode(), after_toc_data_list=after_toc_data_list, - header_html_data=b64encode(header_embedded_html_data), + header_html_data=b64encode(header_embedded_html_data).decode(), header_spacing=10, - footer_html_data=b64encode(footer_embedded_html_data), + footer_html_data=b64encode(footer_embedded_html_data).decode(), footer_spacing=3, ) ) diff --git a/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_viewAsContract.py b/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_viewAsContract.py index 5f540681fd18a378e9e87dfea52ee472e84f72f0..9da25db1960c1558d28c7324eba2d174cca71d4b 100644 --- a/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_viewAsContract.py +++ b/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_viewAsContract.py @@ -1,8 +1,9 @@ import re +import six from base64 import b64encode -blank = '' +blank = b'' pref = context.getPortalObject().portal_preferences contract_format = kw.get('format') or 'html' @@ -35,7 +36,7 @@ contract_version = context.getVersion() or "001" contract_description = context.getDescription() contract_title = context.getTitle() -if isinstance(contract_content, unicode): +if six.PY2 and isinstance(contract_content, unicode): contract_content = contract_content.encode("UTF-8") contract_history_section_list = re.findall('<section.+?>.+?</section>', contract_content, re.S) @@ -289,22 +290,22 @@ elif contract_format == "pdf": ) # ================ encode and build cloudoo elements ========================= - header_embedded_html_data = context.Base_convertHtmlToSingleFile(contract_head, allow_script=True) + header_embedded_html_data = context.Base_convertHtmlToSingleFile(contract_head, allow_script=True).encode('utf-8') before_toc_data_list = [ - b64encode(context.Base_convertHtmlToSingleFile(contract_cover, allow_script=True)), + b64encode(context.Base_convertHtmlToSingleFile(contract_cover, allow_script=True).encode('utf-8')).decode(), ] after_toc_data_list = [] if contract_include_history_table: before_toc_data_list.append( - b64encode(context.Base_convertHtmlToSingleFile(contract_history, allow_script=True)) + b64encode(context.Base_convertHtmlToSingleFile(contract_history, allow_script=True).encode('utf-8')).decode() ) #if contract_include_reference_table: # after_toc_data_list.append( - # b64encode(context.Base_convertHtmlToSingleFile(contract_references, allow_script=True)) + # b64encode(context.Base_convertHtmlToSingleFile(contract_references, allow_script=True)).decode() # ) xsl_style_sheet_data = contract_table_of_content - embedded_html_data = context.Base_convertHtmlToSingleFile(contract_content, allow_script=True) - footer_embedded_html_data = context.Base_convertHtmlToSingleFile(contract_foot, allow_script=True) + embedded_html_data = context.Base_convertHtmlToSingleFile(contract_content, allow_script=True).encode('utf-8') + footer_embedded_html_data = context.Base_convertHtmlToSingleFile(contract_foot, allow_script=True).encode('utf-8') margin_top = 40 margin_bottom = 20 pdf_file = context.Base_cloudoooDocumentConvert(embedded_html_data, "html", "pdf", conversion_kw=dict( @@ -313,11 +314,11 @@ elif contract_format == "pdf": margin_bottom=margin_bottom, toc=True if contract_include_content_table else False, before_toc_data_list=before_toc_data_list, - xsl_style_sheet_data=b64encode(xsl_style_sheet_data), + xsl_style_sheet_data=b64encode(xsl_style_sheet_data).decode(), after_toc_data_list=after_toc_data_list, - header_html_data=b64encode(header_embedded_html_data), + header_html_data=b64encode(header_embedded_html_data).decode(), header_spacing=10, - footer_html_data=b64encode(footer_embedded_html_data), + footer_html_data=b64encode(footer_embedded_html_data).decode(), footer_spacing=3, ) ) diff --git a/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_viewAsLeaflet.py b/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_viewAsLeaflet.py index c6c23b0290351dc15487fb092826b8d5025afdc9..13a2240cc475476ebea53f4b3c6f8757d53e70c1 100644 --- a/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_viewAsLeaflet.py +++ b/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_viewAsLeaflet.py @@ -22,6 +22,7 @@ MAIN FILE: render two pager in different output formats # document_save: save file in document module (default None) import re +import six from Products.PythonScripts.standard import html_quote from base64 import b64encode @@ -146,10 +147,11 @@ if leaflet_display_side: ) #leaflet_content = leaflet_legalese.decode() + leaflet_content.decode() - if isinstance(leaflet_legalese, unicode): - leaflet_legalese = leaflet_legalese.encode("UTF-8") - if isinstance(leaflet_content, unicode): - leaflet_content = leaflet_content.encode("UTF-8") + if six.PY2: + if isinstance(leaflet_legalese, unicode): + leaflet_legalese = leaflet_legalese.encode("UTF-8") + if isinstance(leaflet_content, unicode): + leaflet_content = leaflet_content.encode("UTF-8") leaflet_content = leaflet_legalese + leaflet_content @@ -255,9 +257,9 @@ if leaflet_format == "pdf": ) # ================ encode and build cloudoo elements ========================= - embedded_html_data = leaflet.Base_convertHtmlToSingleFile(leaflet_content, allow_script=True) - header_embedded_html_data = leaflet.Base_convertHtmlToSingleFile(leaflet_head, allow_script=True) - footer_embedded_html_data = leaflet.Base_convertHtmlToSingleFile(leaflet_foot, allow_script=True) + embedded_html_data = leaflet.Base_convertHtmlToSingleFile(leaflet_content, allow_script=True).encode('utf-8') + header_embedded_html_data = leaflet.Base_convertHtmlToSingleFile(leaflet_head, allow_script=True).encode('utf-8') + footer_embedded_html_data = leaflet.Base_convertHtmlToSingleFile(leaflet_foot, allow_script=True).encode('utf-8') pdf_file = leaflet.Base_cloudoooDocumentConvert(embedded_html_data, "html", "pdf", conversion_kw=dict( encoding="utf8", orientation="portrait", @@ -265,9 +267,9 @@ if leaflet_format == "pdf": margin_bottom=20, margin_left=0, margin_right=0, - header_html_data=b64encode(header_embedded_html_data), + header_html_data=b64encode(header_embedded_html_data).decode(), header_spacing=10, - footer_html_data=b64encode(footer_embedded_html_data), + footer_html_data=b64encode(footer_embedded_html_data).decode(), footer_spacing=3 ) ) diff --git a/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_viewAsRelease.py b/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_viewAsRelease.py index 117b353543a7c2e9d07e93fdd282b351c2195bab..cae8dd627e8b89ed5c1b928938ba576c9c76b7e6 100644 --- a/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_viewAsRelease.py +++ b/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_viewAsRelease.py @@ -21,6 +21,7 @@ MAIN FILE: render press release in different output formats # document_save: save file in document module (default None) import re +import six from base64 import b64encode blank = '' @@ -137,10 +138,11 @@ if release_display_about: release_relative_url=release_relative_url, ) #release_content = release_content.decode() + release_about.decode() - if isinstance(release_content, unicode): - release_content = release_content.encode("UTF-8") - if isinstance(release_about, unicode): - release_about = release_about.encode("UTF-8") + if six.PY2: + if isinstance(release_content, unicode): + release_content = release_content.encode("UTF-8") + if isinstance(release_about, unicode): + release_about = release_about.encode("UTF-8") release_content = release_content + release_about @@ -226,9 +228,9 @@ if release_format == "pdf": ) # ================ encode and build cloudoo elements ========================= - embedded_html_data = release.Base_convertHtmlToSingleFile(release_content, allow_script=True) - header_embedded_html_data = release.Base_convertHtmlToSingleFile(release_head, allow_script=True) - footer_embedded_html_data = release.Base_convertHtmlToSingleFile(release_foot, allow_script=True) + embedded_html_data = release.Base_convertHtmlToSingleFile(release_content, allow_script=True).encode('utf-8') + header_embedded_html_data = release.Base_convertHtmlToSingleFile(release_head, allow_script=True).encode('utf-8') + footer_embedded_html_data = release.Base_convertHtmlToSingleFile(release_foot, allow_script=True).encode('utf-8') pdf_file = release.Base_cloudoooDocumentConvert(embedded_html_data, "html", "pdf", conversion_kw=dict( encoding="utf8", orientation="portrait", @@ -236,9 +238,9 @@ if release_format == "pdf": margin_bottom=20, margin_left=0, margin_right=0, - header_html_data=b64encode(header_embedded_html_data), + header_html_data=b64encode(header_embedded_html_data).decode(), header_spacing=10, - footer_html_data=b64encode(footer_embedded_html_data), + footer_html_data=b64encode(footer_embedded_html_data).decode(), footer_spacing=3 ) ) diff --git a/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_viewAsSlideshow.py b/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_viewAsSlideshow.py index 339c5cf33150f6c67b8375ff399a2da25ae17bcf..800718c7f6915f7ed81c4dc102c399f09d7386a9 100644 --- a/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_viewAsSlideshow.py +++ b/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_viewAsSlideshow.py @@ -24,6 +24,7 @@ MAIN FILE: generate presentation in different output formats # remote_content: convert legacy odp, sxi formats (not active) import re +import six from Products.PythonScripts.standard import html_quote from base64 import b64encode @@ -420,25 +421,25 @@ if doc_format == "pdf" or doc_format == "mhtml": ) # ================ encode and build cloudoo elements ========================= - footer_embedded_html_data = doc.Base_convertHtmlToSingleFile(doc_slideshow_footer, allow_script=True) - #embedded_html_data = doc.Base_convertHtmlToSingleFile(doc_slideshow_content, allow_script=True) + footer_embedded_html_data = doc.Base_convertHtmlToSingleFile(doc_slideshow_footer, allow_script=True).encode('utf-8') + #embedded_html_data = doc.Base_convertHtmlToSingleFile(doc_slideshow_content, allow_script=True).encode('utf-8') + cover = doc.Base_convertHtmlToSingleFile(doc_slideshow_cover, allow_script=True).encode('utf-8') before_body_data_list = [ - b64encode(doc.Base_convertHtmlToSingleFile(doc_slideshow_cover, allow_script=True)), + b64encode(cover).decode(), ] if doc_format == "mhtml": context.REQUEST.RESPONSE.setHeader("Content-Type", "text/html;") return doc.Base_convertHtmlToSingleFile(doc_slideshow_cover, allow_script=True) if doc_display_notes: #after_body_data_list = [ - # b64encode(doc.Base_convertHtmlToSingleFile(doc_slideshow_notes, allow_script=True)), + # b64encode(doc.Base_convertHtmlToSingleFile(doc_slideshow_notes, allow_script=True).encode('utf-8')).decode(), #] - embedded_html_data = doc.Base_convertHtmlToSingleFile(doc_slideshow_notes, allow_script=True) + embedded_html_data = doc.Base_convertHtmlToSingleFile(doc_slideshow_notes, allow_script=True).encode('utf-8') after_body_data_list = [] else: - embedded_html_data = doc.Base_convertHtmlToSingleFile(doc_slideshow_content, allow_script=True) + embedded_html_data = doc.Base_convertHtmlToSingleFile(doc_slideshow_content, allow_script=True).encode('utf-8') after_body_data_list = [] #after_body_data_list = [] - pdf_file = doc.Base_cloudoooDocumentConvert(embedded_html_data, "html", "pdf", conversion_kw=dict( encoding="utf8", orientation= "portrait" if doc_display_notes else "landscape", @@ -447,7 +448,7 @@ if doc_format == "pdf" or doc_format == "mhtml": before_body_data_list=before_body_data_list, after_body_data_list=after_body_data_list, header_spacing=10, - footer_html_data=b64encode(footer_embedded_html_data), + footer_html_data=b64encode(footer_embedded_html_data).decode(), footer_spacing=3 ) )