You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:36:04