borb + plotly
unknown
python
2 years ago
1.5 kB
19
Indexable
import io
from borb.pdf import Document
from borb.pdf import Page
from borb.pdf import SingleColumnLayout
from borb.pdf import PageLayout
from borb.pdf import PDF
from borb.pdf import Image
import plotly.graph_objects as go
from PIL import Image as pImage
from decimal import Decimal
def create_figure() -> go.Figure:
# Create the data for the figure
x = [1, 2, 3, 4, 5]
y = [1, 4, 3, 2, 5]
# Create a scatter plot figure
fig = go.Figure(data=go.Scatter(x=x, y=y, mode='markers'))
# Update the layout of the figure
fig.update_layout(
title='Scatter Plot',
xaxis=dict(title='X-axis'),
yaxis=dict(title='Y-axis'),
showlegend=False
)
# return
return fig
def main():
# create Document
doc: Document = Document()
from pathlib import Path
# create Page
page: Page = Page()
# add Page to Document
doc.add_page(page)
# set a PageLayout
layout: PageLayout = SingleColumnLayout(page)
layout.vertical_margin = page.get_page_info().get_height() * Decimal(0.02)
# build a (plotly) Figure
fig: go.Figure = create_figure()
# add an Image
layout.add(
Image(
pImage.open(io.BytesIO(fig.to_image(format="png"))),
width=Decimal(278),
height=Decimal(238),
)
)
# store
with open("test.pdf", "wb") as pdf_file_handle:
PDF.dumps(pdf_file_handle, doc)
if __name__ == "__main__":
main()Editor is loading...