@ -46,7 +46,7 @@ def do_basic_demo() -> None:
# Make and print the QR Code symbol
qr = QrCode . encode_text ( text , errcorlvl )
print_qr ( qr )
print ( qr. to_svg_str( 4 ) )
print ( to_svg_str( qr , 4 ) )
def do_variety_demo ( ) - > None :
@ -170,6 +170,25 @@ def do_mask_demo() -> None:
# ---- Utilities ----
def to_svg_str ( qr : QrCode , border : int ) - > str :
""" Returns a string of SVG code for an image depicting the given QR Code, with the given number
of border modules . The string always uses Unix newlines ( \n ) , regardless of the platform . """
if border < 0 :
raise ValueError ( " Border must be non-negative " )
parts : List [ str ] = [ ]
for y in range ( qr . get_size ( ) ) :
for x in range ( qr . get_size ( ) ) :
if qr . get_module ( x , y ) :
parts . append ( " M {} , {} h1v1h-1z " . format ( x + border , y + border ) )
return """ <?xml version= " 1.0 " encoding= " UTF-8 " ?>
< ! DOCTYPE svg PUBLIC " -//W3C//DTD SVG 1.1//EN " " http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd " >
< svg xmlns = " http://www.w3.org/2000/svg " version = " 1.1 " viewBox = " 0 0 {0} {0} " stroke = " none " >
< rect width = " 100 % " height = " 100 % " fill = " #FFFFFF " / >
< path d = " {1} " fill = " #000000 " / >
< / svg >
""" .format(qr.get_size() + border * 2, " " .join(parts))
def print_qr ( qrcode : QrCode ) - > None :
""" Prints the given QrCode object to the console. """
border = 4