Add HTML template placeholder for diagram_png_base64 (#371)
This will enable users to replace the SVG diagram with an embedded PNG, that is an improved work-around when the SVG output from Graphviz is not looking good. Suggested as work-around for Graphviz bug in https://github.com/wireviz/WireViz/issues/175#issuecomment-2132206026
This commit is contained in:
parent
f474cddedb
commit
ea26116c81
@ -8,6 +8,20 @@ from typing import Union
|
|||||||
mime_subtype_replacements = {"jpg": "jpeg", "tif": "tiff"}
|
mime_subtype_replacements = {"jpg": "jpeg", "tif": "tiff"}
|
||||||
|
|
||||||
|
|
||||||
|
# TODO: Share cache and code between data_URI_base64() and embed_svg_images()
|
||||||
|
def data_URI_base64(file: Union[str, Path], media: str = "image") -> str:
|
||||||
|
"""Return Base64-encoded data URI of input file."""
|
||||||
|
file = Path(file)
|
||||||
|
b64 = base64.b64encode(file.read_bytes()).decode("utf-8")
|
||||||
|
uri = f"data:{media}/{get_mime_subtype(file)};base64, {b64}"
|
||||||
|
# print(f"data_URI_base64('{file}', '{media}') -> {len(uri)}-character URI")
|
||||||
|
if len(uri) > 65535:
|
||||||
|
print(
|
||||||
|
"data_URI_base64(): Warning: Browsers might have different URI length limitations"
|
||||||
|
)
|
||||||
|
return uri
|
||||||
|
|
||||||
|
|
||||||
def embed_svg_images(svg_in: str, base_path: Union[str, Path] = Path.cwd()) -> str:
|
def embed_svg_images(svg_in: str, base_path: Union[str, Path] = Path.cwd()) -> str:
|
||||||
images_b64 = {} # cache of base64-encoded images
|
images_b64 = {} # cache of base64-encoded images
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@ from typing import Dict, List, Union
|
|||||||
|
|
||||||
from wireviz import APP_NAME, APP_URL, __version__, wv_colors
|
from wireviz import APP_NAME, APP_URL, __version__, wv_colors
|
||||||
from wireviz.DataClasses import Metadata, Options
|
from wireviz.DataClasses import Metadata, Options
|
||||||
|
from wireviz.svgembed import data_URI_base64
|
||||||
from wireviz.wv_gv_html import html_line_breaks
|
from wireviz.wv_gv_html import html_line_breaks
|
||||||
from wireviz.wv_helper import (
|
from wireviz.wv_helper import (
|
||||||
flatten2d,
|
flatten2d,
|
||||||
@ -81,7 +82,7 @@ def generate_html_output(
|
|||||||
"<!-- %fontname% -->": options.fontname,
|
"<!-- %fontname% -->": options.fontname,
|
||||||
"<!-- %bgcolor% -->": wv_colors.translate_color(options.bgcolor, "hex"),
|
"<!-- %bgcolor% -->": wv_colors.translate_color(options.bgcolor, "hex"),
|
||||||
"<!-- %diagram% -->": svgdata,
|
"<!-- %diagram% -->": svgdata,
|
||||||
# TODO: "<!-- %diagram_png_base64% -->": base64 of png file
|
"<!-- %diagram_png_base64% -->": data_URI_base64(f"{filename}.png"),
|
||||||
"<!-- %filename% -->": str(filename),
|
"<!-- %filename% -->": str(filename),
|
||||||
"<!-- %filename_stem% -->": Path(filename).stem,
|
"<!-- %filename_stem% -->": Path(filename).stem,
|
||||||
"<!-- %bom% -->": bom_html,
|
"<!-- %bom% -->": bom_html,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user