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,
))
PropertiJenisDeskripsi
scalefloatPengali skala seragam untuk seluruh kode batang
dpiintResolusi untuk output PNG (tidak berpengaruh pada SVG)
module_widthfloatLebar satu modul kode batang dalam satuan pengguna
module_heightfloatTinggi satu modul kode batang dalam satuan pengguna
quiet_zonefloatPadding ruang putih di sekitar kode batang
foreground_colorstrWarna hex untuk bilah dan modul (mis., "#000000")
background_colorstrWarna hex untuk latar belakang
transparent_backgroundboolLatar belakang transparan untuk output PNG
show_textboolTampilkan teks yang dapat dibaca manusia di bawah barcode
font_familystrFont untuk teks yang dapat dibaca manusia
font_sizefloatUkuran 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:

PropertiJenisDeskripsi
data`strbytes`
media_typestrTipe MIME ("image/svg+xml" atau "image/png")
backendstrPengidentifikasi 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 scale untuk ukuran seragam dan module_width/module_height untuk kontrol dimensi yang tepat — jangan menggabungkan keduanya.
  • Atur dpi=300 untuk output PNG berkualitas cetak; defaultnya adalah resolusi layar.
  • Gunakan transparent_background=True untuk barcode PNG yang akan ditumpangkan pada latar belakang berwarna.
  • foreground_color dan background_color menerima string warna heks standar ("#RRGGBB").
  • Output SVG bersifat independen resolusi — lebih baik gunakan SVG untuk web dan penyematan PDF.

Masalah Umum

MasalahPenyebabPerbaikan
PNG muncul terlalu kecilSkala default adalah 1.0Tingkatkan scale atau atur dpi
Teks tidak terlihatshow_text default ke FalseAtur show_text=True
QR code tidak memiliki teksQR simbol tidak mendukung teks yang dapat dibaca manusiaPerilaku yang diharapkan — QR menggunakan tata letak teks no-op
Warna tidak diterapkanNama properti salah ejaGunakan nama properti yang tepat: foreground_color, background_color

Lihat Juga

 Bahasa Indonesia