Remove dead code, DEVMODE overrides, and PNG fallback; use printer default settings
This commit is contained in:
@@ -1,20 +1,110 @@
|
||||
from reportlab.lib.pagesizes import landscape
|
||||
from reportlab.lib.utils import ImageReader
|
||||
from reportlab.pdfgen import canvas
|
||||
"""
|
||||
check_pdf_size.py – verify that a PDF's page dimensions match 35 mm × 25 mm.
|
||||
|
||||
Usage:
|
||||
python check_pdf_size.py [path/to/label.pdf]
|
||||
|
||||
If no path is given the script operates on every PDF found in pdf_backup/.
|
||||
Exit code 0 = all OK, 1 = mismatch or error.
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
# Check the test PDF file
|
||||
if os.path.exists('test_label.pdf'):
|
||||
file_size = os.path.getsize('test_label.pdf')
|
||||
print(f'test_label.pdf exists ({file_size} bytes)')
|
||||
print(f'Expected: 35mm x 25mm landscape (99.2 x 70.9 points)')
|
||||
print(f'')
|
||||
print(f'Open test_label.pdf in a PDF viewer to verify:')
|
||||
print(f' - Page size should be wider than tall')
|
||||
print(f' - Content should be correctly oriented')
|
||||
print(f'')
|
||||
print(f'In Adobe Reader: File > Properties > Description')
|
||||
print(f' Page size should show: 3.5 x 2.5 cm or 1.38 x 0.98 in')
|
||||
else:
|
||||
print('test_label.pdf not found')
|
||||
# ── Target dimensions ────────────────────────────────────────────────────────
|
||||
TARGET_W_MM = 35.0 # width (landscape, wider side)
|
||||
TARGET_H_MM = 25.0 # height
|
||||
TOLERANCE_MM = 0.5 # ± 0.5 mm is acceptable rounding from PDF viewers
|
||||
|
||||
PT_PER_MM = 72.0 / 25.4 # 1 mm in points
|
||||
|
||||
|
||||
def read_page_size_pt(pdf_path):
|
||||
"""
|
||||
Return (width_pt, height_pt) of the first page of *pdf_path*.
|
||||
Tries pypdf first, then pymupdf (fitz) as a fallback.
|
||||
Raises RuntimeError if neither library is available.
|
||||
"""
|
||||
# ── pypdf ────────────────────────────────────────────────────────────────
|
||||
try:
|
||||
from pypdf import PdfReader # type: ignore
|
||||
reader = PdfReader(pdf_path)
|
||||
page = reader.pages[0]
|
||||
w = float(page.mediabox.width)
|
||||
h = float(page.mediabox.height)
|
||||
return w, h
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
# ── pymupdf (fitz) ───────────────────────────────────────────────────────
|
||||
try:
|
||||
import fitz # type: ignore
|
||||
doc = fitz.open(pdf_path)
|
||||
rect = doc[0].rect
|
||||
return rect.width, rect.height
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
raise RuntimeError(
|
||||
"Install pypdf or pymupdf:\n"
|
||||
" pip install pypdf\n"
|
||||
" pip install pymupdf"
|
||||
)
|
||||
|
||||
|
||||
def check_file(pdf_path):
|
||||
"""Print a pass/fail line for one PDF. Returns True if dimensions match."""
|
||||
if not os.path.exists(pdf_path):
|
||||
print(f" MISS {pdf_path} (file not found)")
|
||||
return False
|
||||
|
||||
try:
|
||||
w_pt, h_pt = read_page_size_pt(pdf_path)
|
||||
except Exception as e:
|
||||
print(f" ERR {pdf_path} ({e})")
|
||||
return False
|
||||
|
||||
w_mm = w_pt / PT_PER_MM
|
||||
h_mm = h_pt / PT_PER_MM
|
||||
|
||||
w_ok = abs(w_mm - TARGET_W_MM) <= TOLERANCE_MM
|
||||
h_ok = abs(h_mm - TARGET_H_MM) <= TOLERANCE_MM
|
||||
ok = w_ok and h_ok
|
||||
|
||||
status = "PASS" if ok else "FAIL"
|
||||
print(
|
||||
f" {status} {os.path.basename(pdf_path)}"
|
||||
f" {w_mm:.2f}×{h_mm:.2f} mm"
|
||||
f" (target {TARGET_W_MM}×{TARGET_H_MM} mm ±{TOLERANCE_MM} mm)"
|
||||
)
|
||||
return ok
|
||||
|
||||
|
||||
def main():
|
||||
targets = sys.argv[1:]
|
||||
|
||||
if not targets:
|
||||
backup_dir = os.path.join(os.path.dirname(__file__), "pdf_backup")
|
||||
if os.path.isdir(backup_dir):
|
||||
targets = [
|
||||
os.path.join(backup_dir, f)
|
||||
for f in sorted(os.listdir(backup_dir))
|
||||
if f.lower().endswith(".pdf")
|
||||
]
|
||||
if not targets:
|
||||
# fall back to test_label.pdf in cwd
|
||||
targets = ["test_label.pdf"]
|
||||
|
||||
print(f"Checking {len(targets)} PDF(s)…")
|
||||
results = [check_file(p) for p in targets]
|
||||
|
||||
total = len(results)
|
||||
passed = sum(results)
|
||||
failed = total - passed
|
||||
print(f"\n {passed}/{total} passed" + (f", {failed} FAILED" if failed else ""))
|
||||
sys.exit(0 if failed == 0 else 1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user