介绍
Aspose.BarCode 为 Python 提供的 FOSS 能生成七种符号体系的条形码并渲染为 SVG 和 PNG。本篇文章聚焦于渲染管线——如何使用 RenderOptions、SvgRenderer 和 PngRenderer 控制输出格式、尺寸、颜色以及可读文本。
该库在 PyPI 上以 aspose-barcode-foss 的形式提供,遵循 MIT 许可证,且没有本机依赖。每个条形码对象都公开 to_svg() 和 to_png() 便利方法,以及一个接受任意 Renderer 实现的底层 render() 方法。
关键特性
使用 SvgRenderer 的 SVG 输出
SvgRenderer 生成分辨率无关的 SVG 标记。Barcode.to_svg() 方法是一个快捷方式,内部使用 SvgRenderer。
from aspose_barcode_foss import BarcodeService, RenderOptions
from aspose_barcode_foss.rendering import SvgRenderer
service = BarcodeService()
barcode = service.generate("code128", "RENDER-TEST-001")
# Direct convenience method
svg_string = barcode.to_svg(RenderOptions(scale=2.0))
# Explicit renderer usage
renderer = SvgRenderer()
result = barcode.render(renderer, RenderOptions(scale=2.0, show_text=True))
使用 PngRenderer 的 PNG 输出
PngRenderer 生成光栅 PNG 图像。使用 RenderOptions 上的 dpi 属性来控制分辨率。Barcode.to_png() 方法是便捷的快捷方式。
from aspose_barcode_foss import BarcodeService, RenderOptions
from aspose_barcode_foss.rendering import PngRenderer
service = BarcodeService()
barcode = service.generate("ean13", "590123412345")
# Convenience method — returns bytes
png_bytes = barcode.to_png(RenderOptions(dpi=300, scale=3.0))
with open("barcode.png", "wb") as f:
f.write(png_bytes)
控制比例和 DPI
RenderOptions 提供 scale(模块尺寸的乘数)和 dpi(光栅输出的每英寸点数)。它们协同工作:scale 影响条和空的逻辑尺寸,而 dpi 控制 PNG 输出中的像素密度。
from aspose_barcode_foss import RenderOptions
# High-resolution print label
print_options = RenderOptions(scale=4.0, dpi=600)
# Screen display
screen_options = RenderOptions(scale=1.0, dpi=96)
颜色和背景
将 foreground_color 和 background_color 设置为 CSS 颜色字符串。启用 transparent_background 可省略背景填充(在现有设计上叠加时很有用)。
from aspose_barcode_foss import BarcodeService, RenderOptions
service = BarcodeService()
barcode = service.generate("qrcode", "https://example.com")
options = RenderOptions(
foreground_color="#003366",
background_color="#FFFFFF",
scale=3.0,
)
svg = barcode.to_svg(options)
静区控制
quiet_zone 属性以模块宽度单位设置条码周围的空白边距。大多数条码标准要求最小静区以确保可靠扫描。
from aspose_barcode_foss import BarcodeService, RenderOptions
service = BarcodeService()
barcode = service.generate("code39", "QUIET-ZONE")
# Wider quiet zone for print use
options = RenderOptions(quiet_zone=10.0, scale=2.0)
svg = barcode.to_svg(options)
可读文本
将 show_text=True 设置为在条形码下方显示编码数据。font_family 和 font_size 属性控制文本外观。
from aspose_barcode_foss import BarcodeService, RenderOptions
service = BarcodeService()
barcode = service.generate("upca", "01234567890")
options = RenderOptions(
show_text=True,
font_family="monospace",
font_size=12.0,
scale=2.5,
)
svg = barcode.to_svg(options)
快速入门
git clone https://github.com/aspose-barcode-foss/Aspose.BarCode-FOSS-for-Python.git
cd Aspose.BarCode-FOSS-for-Python
pip install -e .from aspose_barcode_foss import BarcodeService, RenderOptions
service = BarcodeService()
# Generate a Code 128 barcode
barcode = service.generate("code128", "HELLO-2026")
# Render to SVG with custom options
options = RenderOptions(
scale=2.0,
show_text=True,
foreground_color="#000000",
background_color="#FFFFFF",
quiet_zone=4.0,
)
svg_output = barcode.to_svg(options)
with open("hello.svg", "w") as f:
f.write(svg_output)
# Render to PNG at 300 DPI
png_bytes = barcode.to_png(RenderOptions(dpi=300, scale=3.0))
with open("hello.png", "wb") as f:
f.write(png_bytes)
支持的格式
| 格式 | 扩展名 | 读取 | 写入 |
|---|---|---|---|
| SVG | .svg | — | ✓ |
| PNG | .png | — | ✓ |
注意:PdfRenderer 存在于 API 中,但在当前版本中会触发 NotImplementedError。
开源与许可证
Aspose.BarCode 针对 Python 的 FOSS 在 MIT 许可证下发布。源代码托管于 GitHub。您可以在开源和商业项目中使用、修改和重新分发该库。