Java开发中如何将SVG文件绘制写入到PDF文件内?
Python 实现PDF账单嵌入SVG条形码代码示例
首先安装依赖包:
pip install reportlab svglib
以下是可直接运行的核心代码,你可以直接替换对应位置的内容适配你的账单业务:
from reportlab.pdfgen import canvas from svglib.svglib import svg2rlg from io import BytesIO # 这里替换为你已经生成好的SVG条形码XML内容 svg_barcode_xml = """ <svg width="200" height="100" xmlns="http://www.w3.org/2000/svg"> <!-- 这里是你的条码实际内容,生产环境替换为你生成好的完整SVG代码 --> <rect x="0" y="0" width="200" height="100" fill="white"/> <text x="100" y="60" text-anchor="middle" font-size="16">示例条码占位</text> </svg> """ # 初始化PDF画布,可调整页面尺寸适配你的账单规格,这里用常用的A4 pdf_canvas = canvas.Canvas("billing_statement.pdf", pagesize=(595.27, 841.89)) # ---------------------- 账单其他内容排版 ---------------------- # 这里可以加你需要的账单抬头、金额、用户信息等内容,示例: pdf_canvas.setFont("Helvetica-Bold", 16) pdf_canvas.drawString(50, 790, "消费账单") pdf_canvas.setFont("Helvetica", 12) pdf_canvas.drawString(50, 760, "账单编号:202405200001") pdf_canvas.drawString(50, 740, "消费金额:¥ 1299.00") # ---------------------- 嵌入SVG条形码 ---------------------- # 把SVG字符串转成BytesIO对象供解析 svg_io = BytesIO(svg_barcode_xml.encode("utf-8")) # 解析SVG为reportlab可渲染的绘图对象 barcode_drawing = svg2rlg(svg_io) # 把条码绘制到PDF指定位置,参数依次为:画布、x坐标、y坐标、横向缩放比例、纵向缩放比例 # 坐标和缩放比例可根据你账单的排版需求调整 barcode_drawing.drawOn(pdf_canvas, 400, 760, 1, 1) # 保存PDF文件 pdf_canvas.save()
注意事项
- 若你需要调整条码的大小,可修改
drawOn方法的最后两个缩放参数,或者直接调整原始SVG的宽高属性 - 如果SVG条码中使用了自定义字体,需要提前通过reportlab的字体注册API注册对应字体,避免渲染时出现缺字问题
- 账单的表格、明细等复杂排版可配合reportlab的
Table组件实现,逻辑和普通PDF生成完全一致
内容的提问来源于stack exchange,提问作者coderodde
相关产品推荐
相关产品推荐

