Penggambaran Barcode
Rendering Kode Batang
Aspose.BarCode FOSS untuk Python memisahkan pengkodean dari rendering. Setelah kode batang dienkode menjadi EncodedSymbol, implementasi Renderer mengubah matriks modul menjadi output visual. Perpustakaan ini mencakup SvgRenderer dan PngRenderer.
RenderOptions
RenderOptions mengontrol output visual semua renderer. Berikan ke to_svg() atau to_png() pada objek Barcode apa pun:
import aspose_barcode_foss as barcode
from aspose_barcode_foss import RenderOptions
bc = barcode.code128("Hello World")
svg = bc.to_svg(options=RenderOptions(
scale=2.0,
foreground_color="#003366",
quiet_zone=10.0,
show_text=True,
))| Properti | Jenis | Deskripsi |
|---|---|---|
scale | float | Pengali skala seragam untuk seluruh kode batang |
dpi | int | Resolusi untuk output PNG (tidak berpengaruh pada SVG) |
module_width | float | Lebar satu modul kode batang dalam satuan pengguna |
module_height | float | Tinggi satu modul kode batang dalam satuan pengguna |
quiet_zone | float | Padding ruang putih di sekitar kode batang |
foreground_color | str | Warna hex untuk bilah dan modul (mis., "#000000") |
background_color | str | Warna hex untuk latar belakang |
transparent_background | bool | Latar belakang transparan untuk output PNG |
show_text | bool | Tampilkan teks yang dapat dibaca manusia di bawah barcode |
font_family | str | Font untuk teks yang dapat dibaca manusia |
font_size | float | Ukuran font untuk teks yang dapat dibaca manusia |
ResolvedRenderOptions
ResolvedRenderOptions adalah konfigurasi yang sepenuhnya digabungkan yang dihasilkan oleh OptionsResolver.resolve(). Itu menggabungkan RenderOptions yang diberikan pengguna dengan default SymbologyProfile. Semua properti memiliki nilai konkret (tidak ada None).
Properti Barcode.default_render_options menyimpan RenderOptions yang diberikan pada saat generasi (atau None jika tidak disediakan).
Output SVG
SvgRenderer menghasilkan output SVG. Panggil to_svg() pada objek Barcode:
bc = barcode.ean13("590123412345")
svg_string = bc.to_svg()
# With custom options
svg_custom = bc.to_svg(options=RenderOptions(
scale=3.0,
foreground_color="#1a1a1a",
show_text=True,
font_family="Helvetica",
font_size=12.0,
))
with open("ean13.svg", "w") as f:
f.write(svg_custom)to_svg() mengembalikan str yang berisi dokumen SVG lengkap.
Output PNG
PngRenderer menghasilkan output PNG. Panggil to_png() pada objek Barcode:
bc = barcode.qr("https://example.com")
png_bytes = bc.to_png()
# With custom options
png_custom = bc.to_png(options=RenderOptions(
scale=4.0,
dpi=300,
transparent_background=True,
))
with open("qr.png", "wb") as f:
f.write(png_custom)to_png() mengembalikan bytes yang berisi data gambar PNG.
Abstraksi Renderer
Kelas dasar abstrak Renderer mendefinisikan antarmuka untuk semua renderer:
class Renderer(ABC):
def render(self, symbol, layout, options) -> RenderedArtifact: ...SvgRenderer dan PngRenderer keduanya mengimplementasikan antarmuka ini. Anda dapat memanggil Barcode.render(renderer, options) untuk menggunakan renderer spesifik secara langsung:
from aspose_barcode_foss import SvgRenderer, RenderOptions
bc = barcode.code128("DATA")
artifact = bc.render(SvgRenderer(), RenderOptions(scale=2.0))
print(artifact.media_type) # "image/svg+xml"
print(type(artifact.data)) # <class 'str'>RenderedArtifact
Objek RenderedArtifact yang dikembalikan oleh Renderer.render() berisi:
| Properti | Jenis | Deskripsi |
|---|---|---|
data | `str | bytes` |
media_type | str | Tipe MIME ("image/svg+xml" atau "image/png") |
backend | str | Pengidentifikasi renderer |
Tata Letak Teks
Setiap simbol memiliki TextLayoutPolicy yang menentukan bagaimana teks yang dapat dibaca manusia ditempatkan di bawah kode batang. Metode create_layout(symbol, options) mengembalikan sebuah TextLayout yang berisi objek TextSegment dengan data posisi dan teks.
QR Code menggunakan QrTextLayoutPolicy, yang menyediakan tata letak tanpa aksi (QR kode tidak menampilkan teks yang dapat dibaca manusia).
Tips dan Praktik Terbaik
- Gunakan
scaleuntuk ukuran seragam danmodule_width/module_heightuntuk kontrol dimensi yang tepat — jangan menggabungkan keduanya. - Atur
dpi=300untuk output PNG berkualitas cetak; defaultnya adalah resolusi layar. - Gunakan
transparent_background=Trueuntuk barcode PNG yang akan ditumpangkan pada latar belakang berwarna. foreground_colordanbackground_colormenerima string warna heks standar ("#RRGGBB").- Output SVG bersifat independen resolusi — lebih baik gunakan SVG untuk web dan penyematan PDF.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
| PNG muncul terlalu kecil | Skala default adalah 1.0 | Tingkatkan scale atau atur dpi |
| Teks tidak terlihat | show_text default ke False | Atur show_text=True |
| QR code tidak memiliki teks | QR simbol tidak mendukung teks yang dapat dibaca manusia | Perilaku yang diharapkan — QR menggunakan tata letak teks no-op |
| Warna tidak diterapkan | Nama properti salah eja | Gunakan nama properti yang tepat: foreground_color, background_color |