QR Code PDF

Generate QR codes in PDF format. Print-ready documents with embedded QR codes and full library support.

Why PDF QR Codes

Python - ReportLab

Simple PDF with QR

from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
import qrcode
from io import BytesIO

# Generate QR code
qr = qrcode.QRCode(version=1, error_correction=qrcode.constants.ERROR_CORRECT_H)
qr.add_data('https://example.com')
qr.make()

# Convert to image
qr_img = qr.make_image(fill_color='black', back_color='white')

# Save to BytesIO
qr_buffer = BytesIO()
qr_img.save(qr_buffer, format='PNG')
qr_buffer.seek(0)

# Create PDF
c = canvas.Canvas('qrcode.pdf', pagesize=letter)
c.drawString(100, 750, 'QR Code Example')
c.drawImage(qr_buffer, 100, 500, width=200, height=200)
c.save()

print('PDF created: qrcode.pdf')

Advanced PDF with Multiple QR Codes

from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
from reportlab.lib.units import cm
import qrcode

urls = [
    'https://example.com/1',
    'https://example.com/2',
    'https://example.com/3',
]

c = canvas.Canvas('qrcodes.pdf', pagesize=A4)
y_position = 27 * cm

for idx, url in enumerate(urls, 1):
    # Generate QR
    qr = qrcode.QRCode(error_correction=qrcode.constants.ERROR_CORRECT_H)
    qr.add_data(url)
    qr.make()
    qr_img = qr.make_image()
    
    # Save temporarily
    temp_file = f'temp_qr_{idx}.png'
    qr_img.save(temp_file)
    
    # Add to PDF
    c.drawString(1 * cm, y_position, f'QR {idx}: {url}')
    c.drawImage(temp_file, 8 * cm, y_position - 3 * cm, width=3 * cm, height=3 * cm)
    
    y_position -= 5 * cm
    
    if y_position < 2 * cm:
        c.showPage()
        y_position = 27 * cm

c.save()
print('Multi-QR PDF created: qrcodes.pdf')

PHP - TCPDF

require_once('includes/tcpdf_config.php');
require_once('TCPDF/tcpdf.php');
require_once('vendor/autoload.php');

use Endroid\QrCode\QrCode;
use Endroid\QrCode\Writer\PngWriter;

$qrCode = new QrCode('https://example.com');
$writer = new PngWriter();
$result = $writer->write($qrCode);

$pdf = new TCPDF();
$pdf->AddPage();
$pdf->SetFont('helvetica', '', 12);
$pdf->Cell(0, 10, 'QR Code Document', 0, 1);

// Add QR image to PDF
$pdf->Image($result->getPath(), 50, 50, 50, 50);

$pdf->Output('qrcode.pdf', 'D');

Node.js - pdf-lib

const { PDFDocument } = require('pdf-lib');
const QRCode = require('qrcode');
const fs = require('fs');

async function createPDFWithQR() {
  const pdfDoc = await PDFDocument.create();
  const page = pdfDoc.addPage([500, 500]);
  
  // Generate QR
  const qrDataUrl = await QRCode.toDataURL('https://example.com');
  
  // Embed image
  const image = await pdfDoc.embedPng(qrDataUrl);
  page.drawImage(image, {
    x: 150,
    y: 200,
    width: 200,
    height: 200,
  });
  
  // Add text
  page.drawText('Scan this QR code', {
    x: 150,
    y: 150,
    size: 16,
  });
  
  // Save PDF
  const pdfBytes = await pdfDoc.save();
  fs.writeFileSync('qrcode.pdf', pdfBytes);
  console.log('PDF created!');
}

createPDFWithQR();

Print Guidelines

Use Cases

Create PDF QR Codes

➜ Generate PDF QR Codes