From 3fa41ddbf74713cad97e94116c58dca6b615d256 Mon Sep 17 00:00:00 2001 From: type-two Date: Fri, 24 Jul 2026 13:40:30 +1000 Subject: [PATCH] docs(mac): patched CUPS PPD for the DYMO 450's 24x55mm price stock MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit macOS auto-adds a USB LabelWriter 450 with the GENERIC CUPS driver (dymo.ppd, ModelName "DYMO Label Printer"), which has 10 fixed sizes and no CustomPageSize block — so a custom paper size made in the page-setup dialog can never reach the printer. CUPS falls back to w81h252 (Address, 28.6x88.9mm) and the 54x24mm design prints rotated 90 degrees and shrunk. Cost a bench session to diagnose; the extension's labels.js was never at fault. Adds the stock in both feed orientations (pg55x25 / pg55x25L — John's price roll is the landscape-feed one) plus patch_ppd.py to regenerate. Lives here because mac/dymo.py drives the same printer. Must be re-applied after any macOS update or after re-adding the printer, so the file and the lpadmin invocation are both written down in the README. Co-Authored-By: Claude Opus 4.8 --- README.md | 44 ++ mac/dymo-24x55.ppd | 1048 ++++++++++++++++++++++++++++++++++++++++++++ mac/patch_ppd.py | 100 +++++ 3 files changed, 1192 insertions(+) create mode 100644 mac/dymo-24x55.ppd create mode 100644 mac/patch_ppd.py diff --git a/README.md b/README.md index ca455f4..0eba4d5 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,50 @@ is the **only** thing that needs to change if it must match a different (Mac/Cha nothing else depends on the byte order. Confirm by reading an existing tag: put a Chafon-written record at the antenna and `GET /read-tag`. +## DYMO LabelWriter 450 on macOS — the PPD you will need again + +Not the daemon, but it lives here because `mac/dymo.py` drives the same printer. + +macOS auto-adds a USB LabelWriter 450 with the **generic** CUPS driver +(`*PCFileName: "dymo.ppd"`, `*ModelName: "DYMO Label Printer"`). That PPD ships 10 fixed +label sizes and **no** `CustomPageSize`/`VariablePaperSize` block — so a custom paper size +made in the macOS page-setup dialog can never reach the printer. CUPS silently falls back +to `w81h252` (Address, 28.6 × 88.9 mm), and a 54×24 mm label design comes out **rotated 90° +and shrunk**, with a big blank area. Nothing is wrong with the extension's `labels.js`. + +`mac/dymo-24x55.ppd` is the generic PPD patched to add the shop's 24×55 mm price stock, in +both feed orientations, so the right one can be picked in the print dialog: + +| PageSize | pt | mm | roll | +|---|---|---|---| +| `pg55x25` | 72 × 155 | 25.4 × 54.7 | ~25 mm wide, label runs 55 mm along the feed | +| `pg55x25L` | 155 × 72 | 54.7 × 25.4 | ~55 mm wide, label runs 25 mm along the feed | + +**John's price roll is the landscape-feed kind → use `pg55x25L`.** + +```sh +sudo lpadmin -p -P mac/dymo-24x55.ppd # apply (queue on JING5: make_it_soso) +sudo lpadmin -p -m drv:///sample.drv/dymo.ppd # revert to stock +``` + +**Re-apply after any macOS update or after re-adding the printer** — both revert the queue to +the generic driver and the symptom comes straight back. + +Regenerate from the **pristine** driver PPD — once applied, the queue's own PPD is already +patched and `patch_ppd.py` will refuse it: + +```sh +ppdc -d /tmp/ppdout /usr/share/cups/drv/sample.drv +python3 mac/patch_ppd.py mac/dymo-24x55.ppd /tmp/ppdout/dymo.ppd # byte-identical, PASSes cupstestppd +``` + +Two traps it handles: margins are set to 2 pt sides / 4 pt ends instead of the driver's +stock 14.9 pt, which would eat 10.5 mm of a 55 mm label; and every one of the 31 languages +in `*cupsLanguages` needs a translation string per new choice or `cupstestppd` FAILs. + +Dead end for next time: `LabelPrinter-*.pkg` in `~/Documents` is **not** the DYMO driver — +it's the generic bundle for the PM-246S/Wagtail printers. + ## Notes / open items - Default label geometry is `65×37 mm`, continuous (`GAP 0`). Adjust to your actual RFID roll via the `w`/`h`/`gap` fields, or change the `DEF_*` constants. diff --git a/mac/dymo-24x55.ppd b/mac/dymo-24x55.ppd new file mode 100644 index 0000000..0da0f83 --- /dev/null +++ b/mac/dymo-24x55.ppd @@ -0,0 +1,1048 @@ +*PPD-Adobe: "4.3" +*%%%% PPD file for Label Printer with CUPS. +*%%%% Created by the CUPS PPD Compiler CUPS v2.3.4. +*% Copyright (c) 2007-2019 by Apple Inc. +*% Copyright (c) 1997-2007 by Easy Software Products. +*% +*% Licensed under Apache License v2.0. See the file "LICENSE" for more +*% information. +*FormatVersion: "4.3" +*FileVersion: "2.3" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "dymo.ppd" +*Product: "(Label Printer)" +*Manufacturer: "DYMO" +*ModelName: "DYMO Label Printer" +*ShortNickName: "DYMO Label Printer" +*NickName: "DYMO Label Printer" +*PSVersion: "(3010.000) 0" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "8" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*% Driver-defined attributes... +*cupsSNMPSupplies: "false" +*cupsVersion: 2.3 +*cupsModelNumber: 0 +*cupsManualCopies: True +*cupsFilter: "application/vnd.cups-raster 50 rastertolabel" +*cupsLanguages: "en ar ca cs da de el es fi fr he hr hu id it ja ko ms no pl pt pt_PT ro ru sk sv th tr uk vi zh_CN zh_TW" +*OpenUI *PageSize/Media Size: PickOne +*OrderDependency: 10 AnySetup *PageSize +*DefaultPageSize: pg55x25 +*PageSize w81h252/Address: "<>setpagedevice" +*PageSize w101h252/Large Address: "<>setpagedevice" +*PageSize w54h144/Return Address: "<>setpagedevice" +*PageSize w162h225/30859 Paint Can Label: "<>setpagedevice" +*PageSize w162h288/2.25x4.00": "<>setpagedevice" +*PageSize w162h540/Internet Postage 2-Part: "<>setpagedevice" +*PageSize w162h504/Internet Postage 3-Part: "<>setpagedevice" +*PageSize w41h248/File Folder: "<>setpagedevice" +*PageSize w41h144/Hanging Folder: "<>setpagedevice" +*PageSize w153h198/3.5" Disk: "<>setpagedevice" +*PageSize pg55x25/24x55mm Price Label (portrait feed): "<>setpagedevice" +*PageSize pg55x25L/24x55mm Price Label (landscape feed): "<>setpagedevice" +*CloseUI: *PageSize +*OpenUI *PageRegion/Media Size: PickOne +*OrderDependency: 10 AnySetup *PageRegion +*DefaultPageRegion: pg55x25 +*PageRegion w81h252/Address: "<>setpagedevice" +*PageRegion w101h252/Large Address: "<>setpagedevice" +*PageRegion w54h144/Return Address: "<>setpagedevice" +*PageRegion w162h225/30859 Paint Can Label: "<>setpagedevice" +*PageRegion w162h288/2.25x4.00": "<>setpagedevice" +*PageRegion w162h540/Internet Postage 2-Part: "<>setpagedevice" +*PageRegion w162h504/Internet Postage 3-Part: "<>setpagedevice" +*PageRegion w41h248/File Folder: "<>setpagedevice" +*PageRegion w41h144/Hanging Folder: "<>setpagedevice" +*PageRegion w153h198/3.5" Disk: "<>setpagedevice" +*PageRegion pg55x25/24x55mm Price Label (portrait feed): "<>setpagedevice" +*PageRegion pg55x25L/24x55mm Price Label (landscape feed): "<>setpagedevice" +*CloseUI: *PageRegion +*DefaultImageableArea: pg55x25 +*ImageableArea w81h252/Address: "2 14.89999961853 79 237.100006103516" +*ImageableArea w101h252/Large Address: "2 14.89999961853 99 237.100006103516" +*ImageableArea w54h144/Return Address: "2 14.89999961853 52 129.100006103516" +*ImageableArea w162h225/30859 Paint Can Label: "2 14.89999961853 160 210.100006103516" +*ImageableArea w162h288/2.25x4.00": "2 14.89999961853 160 273.100006103516" +*ImageableArea w162h540/Internet Postage 2-Part: "2 14.89999961853 160 525.099975585938" +*ImageableArea w162h504/Internet Postage 3-Part: "2 14.89999961853 160 489.100006103516" +*ImageableArea w41h248/File Folder: "2 14.89999961853 39 233.100006103516" +*ImageableArea w41h144/Hanging Folder: "2 14.89999961853 39 129.100006103516" +*ImageableArea w153h198/3.5" Disk: "2 14.89999961853 151 183.100006103516" +*ImageableArea pg55x25/24x55mm Price Label (portrait feed): "2 4 70 151" +*ImageableArea pg55x25L/24x55mm Price Label (landscape feed): "2 4 153 68" +*DefaultPaperDimension: pg55x25 +*PaperDimension w81h252/Address: "81 252" +*PaperDimension w101h252/Large Address: "101 252" +*PaperDimension w54h144/Return Address: "54 144" +*PaperDimension w162h225/30859 Paint Can Label: "162 225" +*PaperDimension w162h288/2.25x4.00": "162 288" +*PaperDimension w162h540/Internet Postage 2-Part: "162 540" +*PaperDimension w162h504/Internet Postage 3-Part: "162 504" +*PaperDimension w41h248/File Folder: "41 248" +*PaperDimension w41h144/Hanging Folder: "41 144" +*PaperDimension w153h198/3.5" Disk: "153 198" +*PaperDimension pg55x25/24x55mm Price Label (portrait feed): "72 155" +*PaperDimension pg55x25L/24x55mm Price Label (landscape feed): "155 72" +*OpenUI *Resolution/Resolution: PickOne +*OrderDependency: 10 AnySetup *Resolution +*DefaultResolution: 300dpi +*Resolution 136dpi/136dpi: "<>setpagedevice" +*Resolution 203dpi/203dpi: "<>setpagedevice" +*Resolution 300dpi/300dpi: "<>setpagedevice" +*CloseUI: *Resolution +*OpenUI *InputSlot/Media Source: PickOne +*OrderDependency: 10 AnySetup *InputSlot +*DefaultInputSlot: Roll +*InputSlot Roll/Main Roll: "<>setpagedevice" +*InputSlot Roll2/Second Roll (DUO/Twin Only): "<>setpagedevice" +*CloseUI: *InputSlot +*OpenUI *cupsDarkness/Darkness: PickOne +*OrderDependency: 10 AnySetup *cupsDarkness +*DefaultcupsDarkness: Normal +*cupsDarkness Light/Light: "<>setpagedevice" +*cupsDarkness Medium/Medium: "<>setpagedevice" +*cupsDarkness Normal/Normal: "<>setpagedevice" +*cupsDarkness Dark/Dark: "<>setpagedevice" +*CloseUI: *cupsDarkness +*ar.Translation Manufacturer/DYMO: "" +*ar.Translation ModelName/DYMO Label Printer: "" +*ar.Translation ShortNickName/DYMO Label Printer: "" +*ar.Translation NickName/DYMO Label Printer: "" +*ar.Translation PageSize/Media Size: "" +*ar.PageSize w81h252/Address: "" +*ar.PageSize w101h252/Large Address: "" +*ar.PageSize w54h144/Return Address: "" +*ar.PageSize w162h225/30859 Paint Can Label: "" +*ar.PageSize w162h288/2.25x4.00": "" +*ar.PageSize w162h540/Internet Postage 2-Part: "" +*ar.PageSize w162h504/Internet Postage 3-Part: "" +*ar.PageSize w41h248/File Folder: "" +*ar.PageSize w41h144/Hanging Folder: "" +*ar.PageSize w153h198/3.5" Disk: "" +*ar.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*ar.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*ar.Translation Resolution/Resolution: "" +*ar.Resolution 136dpi/136dpi: "" +*ar.Resolution 203dpi/203dpi: "" +*ar.Resolution 300dpi/300dpi: "" +*ar.Translation InputSlot/Media Source: "" +*ar.InputSlot Roll/Main Roll: "" +*ar.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*ar.Translation cupsDarkness/Darkness: "" +*ar.cupsDarkness Light/Light: "" +*ar.cupsDarkness Medium/Medium: "" +*ar.cupsDarkness Normal/Normal: "" +*ar.cupsDarkness Dark/Dark: "" +*ca.Translation Manufacturer/DYMO: "" +*ca.Translation ModelName/DYMO Label Printer: "" +*ca.Translation ShortNickName/DYMO Label Printer: "" +*ca.Translation NickName/DYMO Label Printer: "" +*ca.Translation PageSize/Media Size: "" +*ca.PageSize w81h252/Address: "" +*ca.PageSize w101h252/Large Address: "" +*ca.PageSize w54h144/Return Address: "" +*ca.PageSize w162h225/30859 Paint Can Label: "" +*ca.PageSize w162h288/2.25x4.00": "" +*ca.PageSize w162h540/Internet Postage 2-Part: "" +*ca.PageSize w162h504/Internet Postage 3-Part: "" +*ca.PageSize w41h248/File Folder: "" +*ca.PageSize w41h144/Hanging Folder: "" +*ca.PageSize w153h198/3.5" Disk: "" +*ca.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*ca.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*ca.Translation Resolution/Resolution: "" +*ca.Resolution 136dpi/136dpi: "" +*ca.Resolution 203dpi/203dpi: "" +*ca.Resolution 300dpi/300dpi: "" +*ca.Translation InputSlot/Media Source: "" +*ca.InputSlot Roll/Main Roll: "" +*ca.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*ca.Translation cupsDarkness/Darkness: "" +*ca.cupsDarkness Light/Light: "" +*ca.cupsDarkness Medium/Medium: "" +*ca.cupsDarkness Normal/Normal: "" +*ca.cupsDarkness Dark/Dark: "" +*cs.Translation Manufacturer/DYMO: "" +*cs.Translation ModelName/DYMO Label Printer: "" +*cs.Translation ShortNickName/DYMO Label Printer: "" +*cs.Translation NickName/DYMO Label Printer: "" +*cs.Translation PageSize/Media Size: "" +*cs.PageSize w81h252/Address: "" +*cs.PageSize w101h252/Large Address: "" +*cs.PageSize w54h144/Return Address: "" +*cs.PageSize w162h225/30859 Paint Can Label: "" +*cs.PageSize w162h288/2.25x4.00": "" +*cs.PageSize w162h540/Internet Postage 2-Part: "" +*cs.PageSize w162h504/Internet Postage 3-Part: "" +*cs.PageSize w41h248/File Folder: "" +*cs.PageSize w41h144/Hanging Folder: "" +*cs.PageSize w153h198/3.5" Disk: "" +*cs.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*cs.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*cs.Translation Resolution/Resolution: "" +*cs.Resolution 136dpi/136dpi: "" +*cs.Resolution 203dpi/203dpi: "" +*cs.Resolution 300dpi/300dpi: "" +*cs.Translation InputSlot/Media Source: "" +*cs.InputSlot Roll/Main Roll: "" +*cs.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*cs.Translation cupsDarkness/Darkness: "" +*cs.cupsDarkness Light/Light: "" +*cs.cupsDarkness Medium/Medium: "" +*cs.cupsDarkness Normal/Normal: "" +*cs.cupsDarkness Dark/Dark: "" +*da.Translation Manufacturer/DYMO: "" +*da.Translation ModelName/DYMO Label Printer: "" +*da.Translation ShortNickName/DYMO Label Printer: "" +*da.Translation NickName/DYMO Label Printer: "" +*da.Translation PageSize/Media Size: "" +*da.PageSize w81h252/Address: "" +*da.PageSize w101h252/Large Address: "" +*da.PageSize w54h144/Return Address: "" +*da.PageSize w162h225/30859 Paint Can Label: "" +*da.PageSize w162h288/2.25x4.00": "" +*da.PageSize w162h540/Internet Postage 2-Part: "" +*da.PageSize w162h504/Internet Postage 3-Part: "" +*da.PageSize w41h248/File Folder: "" +*da.PageSize w41h144/Hanging Folder: "" +*da.PageSize w153h198/3.5" Disk: "" +*da.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*da.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*da.Translation Resolution/Resolution: "" +*da.Resolution 136dpi/136dpi: "" +*da.Resolution 203dpi/203dpi: "" +*da.Resolution 300dpi/300dpi: "" +*da.Translation InputSlot/Media Source: "" +*da.InputSlot Roll/Main Roll: "" +*da.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*da.Translation cupsDarkness/Darkness: "" +*da.cupsDarkness Light/Light: "" +*da.cupsDarkness Medium/Medium: "" +*da.cupsDarkness Normal/Normal: "" +*da.cupsDarkness Dark/Dark: "" +*de.Translation Manufacturer/DYMO: "" +*de.Translation ModelName/DYMO Label Printer: "" +*de.Translation ShortNickName/DYMO Label Printer: "" +*de.Translation NickName/DYMO Label Printer: "" +*de.Translation PageSize/Media Size: "" +*de.PageSize w81h252/Address: "" +*de.PageSize w101h252/Large Address: "" +*de.PageSize w54h144/Return Address: "" +*de.PageSize w162h225/30859 Paint Can Label: "" +*de.PageSize w162h288/2.25x4.00": "" +*de.PageSize w162h540/Internet Postage 2-Part: "" +*de.PageSize w162h504/Internet Postage 3-Part: "" +*de.PageSize w41h248/File Folder: "" +*de.PageSize w41h144/Hanging Folder: "" +*de.PageSize w153h198/3.5" Disk: "" +*de.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*de.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*de.Translation Resolution/Resolution: "" +*de.Resolution 136dpi/136dpi: "" +*de.Resolution 203dpi/203dpi: "" +*de.Resolution 300dpi/300dpi: "" +*de.Translation InputSlot/Media Source: "" +*de.InputSlot Roll/Main Roll: "" +*de.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*de.Translation cupsDarkness/Darkness: "" +*de.cupsDarkness Light/Light: "" +*de.cupsDarkness Medium/Medium: "" +*de.cupsDarkness Normal/Normal: "" +*de.cupsDarkness Dark/Dark: "" +*el.Translation Manufacturer/DYMO: "" +*el.Translation ModelName/DYMO Label Printer: "" +*el.Translation ShortNickName/DYMO Label Printer: "" +*el.Translation NickName/DYMO Label Printer: "" +*el.Translation PageSize/Media Size: "" +*el.PageSize w81h252/Address: "" +*el.PageSize w101h252/Large Address: "" +*el.PageSize w54h144/Return Address: "" +*el.PageSize w162h225/30859 Paint Can Label: "" +*el.PageSize w162h288/2.25x4.00": "" +*el.PageSize w162h540/Internet Postage 2-Part: "" +*el.PageSize w162h504/Internet Postage 3-Part: "" +*el.PageSize w41h248/File Folder: "" +*el.PageSize w41h144/Hanging Folder: "" +*el.PageSize w153h198/3.5" Disk: "" +*el.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*el.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*el.Translation Resolution/Resolution: "" +*el.Resolution 136dpi/136dpi: "" +*el.Resolution 203dpi/203dpi: "" +*el.Resolution 300dpi/300dpi: "" +*el.Translation InputSlot/Media Source: "" +*el.InputSlot Roll/Main Roll: "" +*el.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*el.Translation cupsDarkness/Darkness: "" +*el.cupsDarkness Light/Light: "" +*el.cupsDarkness Medium/Medium: "" +*el.cupsDarkness Normal/Normal: "" +*el.cupsDarkness Dark/Dark: "" +*es.Translation Manufacturer/DYMO: "" +*es.Translation ModelName/DYMO Label Printer: "" +*es.Translation ShortNickName/DYMO Label Printer: "" +*es.Translation NickName/DYMO Label Printer: "" +*es.Translation PageSize/Media Size: "" +*es.PageSize w81h252/Address: "" +*es.PageSize w101h252/Large Address: "" +*es.PageSize w54h144/Return Address: "" +*es.PageSize w162h225/30859 Paint Can Label: "" +*es.PageSize w162h288/2.25x4.00": "" +*es.PageSize w162h540/Internet Postage 2-Part: "" +*es.PageSize w162h504/Internet Postage 3-Part: "" +*es.PageSize w41h248/File Folder: "" +*es.PageSize w41h144/Hanging Folder: "" +*es.PageSize w153h198/3.5" Disk: "" +*es.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*es.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*es.Translation Resolution/Resolution: "" +*es.Resolution 136dpi/136dpi: "" +*es.Resolution 203dpi/203dpi: "" +*es.Resolution 300dpi/300dpi: "" +*es.Translation InputSlot/Media Source: "" +*es.InputSlot Roll/Main Roll: "" +*es.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*es.Translation cupsDarkness/Darkness: "" +*es.cupsDarkness Light/Light: "" +*es.cupsDarkness Medium/Medium: "" +*es.cupsDarkness Normal/Normal: "" +*es.cupsDarkness Dark/Dark: "" +*fi.Translation Manufacturer/DYMO: "" +*fi.Translation ModelName/DYMO Label Printer: "" +*fi.Translation ShortNickName/DYMO Label Printer: "" +*fi.Translation NickName/DYMO Label Printer: "" +*fi.Translation PageSize/Media Size: "" +*fi.PageSize w81h252/Address: "" +*fi.PageSize w101h252/Large Address: "" +*fi.PageSize w54h144/Return Address: "" +*fi.PageSize w162h225/30859 Paint Can Label: "" +*fi.PageSize w162h288/2.25x4.00": "" +*fi.PageSize w162h540/Internet Postage 2-Part: "" +*fi.PageSize w162h504/Internet Postage 3-Part: "" +*fi.PageSize w41h248/File Folder: "" +*fi.PageSize w41h144/Hanging Folder: "" +*fi.PageSize w153h198/3.5" Disk: "" +*fi.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*fi.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*fi.Translation Resolution/Resolution: "" +*fi.Resolution 136dpi/136dpi: "" +*fi.Resolution 203dpi/203dpi: "" +*fi.Resolution 300dpi/300dpi: "" +*fi.Translation InputSlot/Media Source: "" +*fi.InputSlot Roll/Main Roll: "" +*fi.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*fi.Translation cupsDarkness/Darkness: "" +*fi.cupsDarkness Light/Light: "" +*fi.cupsDarkness Medium/Medium: "" +*fi.cupsDarkness Normal/Normal: "" +*fi.cupsDarkness Dark/Dark: "" +*fr.Translation Manufacturer/DYMO: "" +*fr.Translation ModelName/DYMO Label Printer: "" +*fr.Translation ShortNickName/DYMO Label Printer: "" +*fr.Translation NickName/DYMO Label Printer: "" +*fr.Translation PageSize/Media Size: "" +*fr.PageSize w81h252/Address: "" +*fr.PageSize w101h252/Large Address: "" +*fr.PageSize w54h144/Return Address: "" +*fr.PageSize w162h225/30859 Paint Can Label: "" +*fr.PageSize w162h288/2.25x4.00": "" +*fr.PageSize w162h540/Internet Postage 2-Part: "" +*fr.PageSize w162h504/Internet Postage 3-Part: "" +*fr.PageSize w41h248/File Folder: "" +*fr.PageSize w41h144/Hanging Folder: "" +*fr.PageSize w153h198/3.5" Disk: "" +*fr.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*fr.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*fr.Translation Resolution/Resolution: "" +*fr.Resolution 136dpi/136dpi: "" +*fr.Resolution 203dpi/203dpi: "" +*fr.Resolution 300dpi/300dpi: "" +*fr.Translation InputSlot/Media Source: "" +*fr.InputSlot Roll/Main Roll: "" +*fr.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*fr.Translation cupsDarkness/Darkness: "" +*fr.cupsDarkness Light/Light: "" +*fr.cupsDarkness Medium/Medium: "" +*fr.cupsDarkness Normal/Normal: "" +*fr.cupsDarkness Dark/Dark: "" +*he.Translation Manufacturer/DYMO: "" +*he.Translation ModelName/DYMO Label Printer: "" +*he.Translation ShortNickName/DYMO Label Printer: "" +*he.Translation NickName/DYMO Label Printer: "" +*he.Translation PageSize/Media Size: "" +*he.PageSize w81h252/Address: "" +*he.PageSize w101h252/Large Address: "" +*he.PageSize w54h144/Return Address: "" +*he.PageSize w162h225/30859 Paint Can Label: "" +*he.PageSize w162h288/2.25x4.00": "" +*he.PageSize w162h540/Internet Postage 2-Part: "" +*he.PageSize w162h504/Internet Postage 3-Part: "" +*he.PageSize w41h248/File Folder: "" +*he.PageSize w41h144/Hanging Folder: "" +*he.PageSize w153h198/3.5" Disk: "" +*he.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*he.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*he.Translation Resolution/Resolution: "" +*he.Resolution 136dpi/136dpi: "" +*he.Resolution 203dpi/203dpi: "" +*he.Resolution 300dpi/300dpi: "" +*he.Translation InputSlot/Media Source: "" +*he.InputSlot Roll/Main Roll: "" +*he.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*he.Translation cupsDarkness/Darkness: "" +*he.cupsDarkness Light/Light: "" +*he.cupsDarkness Medium/Medium: "" +*he.cupsDarkness Normal/Normal: "" +*he.cupsDarkness Dark/Dark: "" +*hr.Translation Manufacturer/DYMO: "" +*hr.Translation ModelName/DYMO Label Printer: "" +*hr.Translation ShortNickName/DYMO Label Printer: "" +*hr.Translation NickName/DYMO Label Printer: "" +*hr.Translation PageSize/Media Size: "" +*hr.PageSize w81h252/Address: "" +*hr.PageSize w101h252/Large Address: "" +*hr.PageSize w54h144/Return Address: "" +*hr.PageSize w162h225/30859 Paint Can Label: "" +*hr.PageSize w162h288/2.25x4.00": "" +*hr.PageSize w162h540/Internet Postage 2-Part: "" +*hr.PageSize w162h504/Internet Postage 3-Part: "" +*hr.PageSize w41h248/File Folder: "" +*hr.PageSize w41h144/Hanging Folder: "" +*hr.PageSize w153h198/3.5" Disk: "" +*hr.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*hr.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*hr.Translation Resolution/Resolution: "" +*hr.Resolution 136dpi/136dpi: "" +*hr.Resolution 203dpi/203dpi: "" +*hr.Resolution 300dpi/300dpi: "" +*hr.Translation InputSlot/Media Source: "" +*hr.InputSlot Roll/Main Roll: "" +*hr.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*hr.Translation cupsDarkness/Darkness: "" +*hr.cupsDarkness Light/Light: "" +*hr.cupsDarkness Medium/Medium: "" +*hr.cupsDarkness Normal/Normal: "" +*hr.cupsDarkness Dark/Dark: "" +*hu.Translation Manufacturer/DYMO: "" +*hu.Translation ModelName/DYMO Label Printer: "" +*hu.Translation ShortNickName/DYMO Label Printer: "" +*hu.Translation NickName/DYMO Label Printer: "" +*hu.Translation PageSize/Media Size: "" +*hu.PageSize w81h252/Address: "" +*hu.PageSize w101h252/Large Address: "" +*hu.PageSize w54h144/Return Address: "" +*hu.PageSize w162h225/30859 Paint Can Label: "" +*hu.PageSize w162h288/2.25x4.00": "" +*hu.PageSize w162h540/Internet Postage 2-Part: "" +*hu.PageSize w162h504/Internet Postage 3-Part: "" +*hu.PageSize w41h248/File Folder: "" +*hu.PageSize w41h144/Hanging Folder: "" +*hu.PageSize w153h198/3.5" Disk: "" +*hu.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*hu.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*hu.Translation Resolution/Resolution: "" +*hu.Resolution 136dpi/136dpi: "" +*hu.Resolution 203dpi/203dpi: "" +*hu.Resolution 300dpi/300dpi: "" +*hu.Translation InputSlot/Media Source: "" +*hu.InputSlot Roll/Main Roll: "" +*hu.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*hu.Translation cupsDarkness/Darkness: "" +*hu.cupsDarkness Light/Light: "" +*hu.cupsDarkness Medium/Medium: "" +*hu.cupsDarkness Normal/Normal: "" +*hu.cupsDarkness Dark/Dark: "" +*id.Translation Manufacturer/DYMO: "" +*id.Translation ModelName/DYMO Label Printer: "" +*id.Translation ShortNickName/DYMO Label Printer: "" +*id.Translation NickName/DYMO Label Printer: "" +*id.Translation PageSize/Media Size: "" +*id.PageSize w81h252/Address: "" +*id.PageSize w101h252/Large Address: "" +*id.PageSize w54h144/Return Address: "" +*id.PageSize w162h225/30859 Paint Can Label: "" +*id.PageSize w162h288/2.25x4.00": "" +*id.PageSize w162h540/Internet Postage 2-Part: "" +*id.PageSize w162h504/Internet Postage 3-Part: "" +*id.PageSize w41h248/File Folder: "" +*id.PageSize w41h144/Hanging Folder: "" +*id.PageSize w153h198/3.5" Disk: "" +*id.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*id.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*id.Translation Resolution/Resolution: "" +*id.Resolution 136dpi/136dpi: "" +*id.Resolution 203dpi/203dpi: "" +*id.Resolution 300dpi/300dpi: "" +*id.Translation InputSlot/Media Source: "" +*id.InputSlot Roll/Main Roll: "" +*id.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*id.Translation cupsDarkness/Darkness: "" +*id.cupsDarkness Light/Light: "" +*id.cupsDarkness Medium/Medium: "" +*id.cupsDarkness Normal/Normal: "" +*id.cupsDarkness Dark/Dark: "" +*it.Translation Manufacturer/DYMO: "" +*it.Translation ModelName/DYMO Label Printer: "" +*it.Translation ShortNickName/DYMO Label Printer: "" +*it.Translation NickName/DYMO Label Printer: "" +*it.Translation PageSize/Media Size: "" +*it.PageSize w81h252/Address: "" +*it.PageSize w101h252/Large Address: "" +*it.PageSize w54h144/Return Address: "" +*it.PageSize w162h225/30859 Paint Can Label: "" +*it.PageSize w162h288/2.25x4.00": "" +*it.PageSize w162h540/Internet Postage 2-Part: "" +*it.PageSize w162h504/Internet Postage 3-Part: "" +*it.PageSize w41h248/File Folder: "" +*it.PageSize w41h144/Hanging Folder: "" +*it.PageSize w153h198/3.5" Disk: "" +*it.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*it.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*it.Translation Resolution/Resolution: "" +*it.Resolution 136dpi/136dpi: "" +*it.Resolution 203dpi/203dpi: "" +*it.Resolution 300dpi/300dpi: "" +*it.Translation InputSlot/Media Source: "" +*it.InputSlot Roll/Main Roll: "" +*it.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*it.Translation cupsDarkness/Darkness: "" +*it.cupsDarkness Light/Light: "" +*it.cupsDarkness Medium/Medium: "" +*it.cupsDarkness Normal/Normal: "" +*it.cupsDarkness Dark/Dark: "" +*ja.Translation Manufacturer/DYMO: "" +*ja.Translation ModelName/DYMO Label Printer: "" +*ja.Translation ShortNickName/DYMO Label Printer: "" +*ja.Translation NickName/DYMO Label Printer: "" +*ja.Translation PageSize/Media Size: "" +*ja.PageSize w81h252/Address: "" +*ja.PageSize w101h252/Large Address: "" +*ja.PageSize w54h144/Return Address: "" +*ja.PageSize w162h225/30859 Paint Can Label: "" +*ja.PageSize w162h288/2.25x4.00": "" +*ja.PageSize w162h540/Internet Postage 2-Part: "" +*ja.PageSize w162h504/Internet Postage 3-Part: "" +*ja.PageSize w41h248/File Folder: "" +*ja.PageSize w41h144/Hanging Folder: "" +*ja.PageSize w153h198/3.5" Disk: "" +*ja.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*ja.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*ja.Translation Resolution/Resolution: "" +*ja.Resolution 136dpi/136dpi: "" +*ja.Resolution 203dpi/203dpi: "" +*ja.Resolution 300dpi/300dpi: "" +*ja.Translation InputSlot/Media Source: "" +*ja.InputSlot Roll/Main Roll: "" +*ja.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*ja.Translation cupsDarkness/Darkness: "" +*ja.cupsDarkness Light/Light: "" +*ja.cupsDarkness Medium/Medium: "" +*ja.cupsDarkness Normal/Normal: "" +*ja.cupsDarkness Dark/Dark: "" +*ko.Translation Manufacturer/DYMO: "" +*ko.Translation ModelName/DYMO Label Printer: "" +*ko.Translation ShortNickName/DYMO Label Printer: "" +*ko.Translation NickName/DYMO Label Printer: "" +*ko.Translation PageSize/Media Size: "" +*ko.PageSize w81h252/Address: "" +*ko.PageSize w101h252/Large Address: "" +*ko.PageSize w54h144/Return Address: "" +*ko.PageSize w162h225/30859 Paint Can Label: "" +*ko.PageSize w162h288/2.25x4.00": "" +*ko.PageSize w162h540/Internet Postage 2-Part: "" +*ko.PageSize w162h504/Internet Postage 3-Part: "" +*ko.PageSize w41h248/File Folder: "" +*ko.PageSize w41h144/Hanging Folder: "" +*ko.PageSize w153h198/3.5" Disk: "" +*ko.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*ko.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*ko.Translation Resolution/Resolution: "" +*ko.Resolution 136dpi/136dpi: "" +*ko.Resolution 203dpi/203dpi: "" +*ko.Resolution 300dpi/300dpi: "" +*ko.Translation InputSlot/Media Source: "" +*ko.InputSlot Roll/Main Roll: "" +*ko.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*ko.Translation cupsDarkness/Darkness: "" +*ko.cupsDarkness Light/Light: "" +*ko.cupsDarkness Medium/Medium: "" +*ko.cupsDarkness Normal/Normal: "" +*ko.cupsDarkness Dark/Dark: "" +*ms.Translation Manufacturer/DYMO: "" +*ms.Translation ModelName/DYMO Label Printer: "" +*ms.Translation ShortNickName/DYMO Label Printer: "" +*ms.Translation NickName/DYMO Label Printer: "" +*ms.Translation PageSize/Media Size: "" +*ms.PageSize w81h252/Address: "" +*ms.PageSize w101h252/Large Address: "" +*ms.PageSize w54h144/Return Address: "" +*ms.PageSize w162h225/30859 Paint Can Label: "" +*ms.PageSize w162h288/2.25x4.00": "" +*ms.PageSize w162h540/Internet Postage 2-Part: "" +*ms.PageSize w162h504/Internet Postage 3-Part: "" +*ms.PageSize w41h248/File Folder: "" +*ms.PageSize w41h144/Hanging Folder: "" +*ms.PageSize w153h198/3.5" Disk: "" +*ms.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*ms.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*ms.Translation Resolution/Resolution: "" +*ms.Resolution 136dpi/136dpi: "" +*ms.Resolution 203dpi/203dpi: "" +*ms.Resolution 300dpi/300dpi: "" +*ms.Translation InputSlot/Media Source: "" +*ms.InputSlot Roll/Main Roll: "" +*ms.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*ms.Translation cupsDarkness/Darkness: "" +*ms.cupsDarkness Light/Light: "" +*ms.cupsDarkness Medium/Medium: "" +*ms.cupsDarkness Normal/Normal: "" +*ms.cupsDarkness Dark/Dark: "" +*no.Translation Manufacturer/DYMO: "" +*no.Translation ModelName/DYMO Label Printer: "" +*no.Translation ShortNickName/DYMO Label Printer: "" +*no.Translation NickName/DYMO Label Printer: "" +*no.Translation PageSize/Media Size: "" +*no.PageSize w81h252/Address: "" +*no.PageSize w101h252/Large Address: "" +*no.PageSize w54h144/Return Address: "" +*no.PageSize w162h225/30859 Paint Can Label: "" +*no.PageSize w162h288/2.25x4.00": "" +*no.PageSize w162h540/Internet Postage 2-Part: "" +*no.PageSize w162h504/Internet Postage 3-Part: "" +*no.PageSize w41h248/File Folder: "" +*no.PageSize w41h144/Hanging Folder: "" +*no.PageSize w153h198/3.5" Disk: "" +*no.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*no.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*no.Translation Resolution/Resolution: "" +*no.Resolution 136dpi/136dpi: "" +*no.Resolution 203dpi/203dpi: "" +*no.Resolution 300dpi/300dpi: "" +*no.Translation InputSlot/Media Source: "" +*no.InputSlot Roll/Main Roll: "" +*no.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*no.Translation cupsDarkness/Darkness: "" +*no.cupsDarkness Light/Light: "" +*no.cupsDarkness Medium/Medium: "" +*no.cupsDarkness Normal/Normal: "" +*no.cupsDarkness Dark/Dark: "" +*pl.Translation Manufacturer/DYMO: "" +*pl.Translation ModelName/DYMO Label Printer: "" +*pl.Translation ShortNickName/DYMO Label Printer: "" +*pl.Translation NickName/DYMO Label Printer: "" +*pl.Translation PageSize/Media Size: "" +*pl.PageSize w81h252/Address: "" +*pl.PageSize w101h252/Large Address: "" +*pl.PageSize w54h144/Return Address: "" +*pl.PageSize w162h225/30859 Paint Can Label: "" +*pl.PageSize w162h288/2.25x4.00": "" +*pl.PageSize w162h540/Internet Postage 2-Part: "" +*pl.PageSize w162h504/Internet Postage 3-Part: "" +*pl.PageSize w41h248/File Folder: "" +*pl.PageSize w41h144/Hanging Folder: "" +*pl.PageSize w153h198/3.5" Disk: "" +*pl.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*pl.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*pl.Translation Resolution/Resolution: "" +*pl.Resolution 136dpi/136dpi: "" +*pl.Resolution 203dpi/203dpi: "" +*pl.Resolution 300dpi/300dpi: "" +*pl.Translation InputSlot/Media Source: "" +*pl.InputSlot Roll/Main Roll: "" +*pl.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*pl.Translation cupsDarkness/Darkness: "" +*pl.cupsDarkness Light/Light: "" +*pl.cupsDarkness Medium/Medium: "" +*pl.cupsDarkness Normal/Normal: "" +*pl.cupsDarkness Dark/Dark: "" +*pt.Translation Manufacturer/DYMO: "" +*pt.Translation ModelName/DYMO Label Printer: "" +*pt.Translation ShortNickName/DYMO Label Printer: "" +*pt.Translation NickName/DYMO Label Printer: "" +*pt.Translation PageSize/Media Size: "" +*pt.PageSize w81h252/Address: "" +*pt.PageSize w101h252/Large Address: "" +*pt.PageSize w54h144/Return Address: "" +*pt.PageSize w162h225/30859 Paint Can Label: "" +*pt.PageSize w162h288/2.25x4.00": "" +*pt.PageSize w162h540/Internet Postage 2-Part: "" +*pt.PageSize w162h504/Internet Postage 3-Part: "" +*pt.PageSize w41h248/File Folder: "" +*pt.PageSize w41h144/Hanging Folder: "" +*pt.PageSize w153h198/3.5" Disk: "" +*pt.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*pt.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*pt.Translation Resolution/Resolution: "" +*pt.Resolution 136dpi/136dpi: "" +*pt.Resolution 203dpi/203dpi: "" +*pt.Resolution 300dpi/300dpi: "" +*pt.Translation InputSlot/Media Source: "" +*pt.InputSlot Roll/Main Roll: "" +*pt.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*pt.Translation cupsDarkness/Darkness: "" +*pt.cupsDarkness Light/Light: "" +*pt.cupsDarkness Medium/Medium: "" +*pt.cupsDarkness Normal/Normal: "" +*pt.cupsDarkness Dark/Dark: "" +*pt_PT.Translation Manufacturer/DYMO: "" +*pt_PT.Translation ModelName/DYMO Label Printer: "" +*pt_PT.Translation ShortNickName/DYMO Label Printer: "" +*pt_PT.Translation NickName/DYMO Label Printer: "" +*pt_PT.Translation PageSize/Media Size: "" +*pt_PT.PageSize w81h252/Address: "" +*pt_PT.PageSize w101h252/Large Address: "" +*pt_PT.PageSize w54h144/Return Address: "" +*pt_PT.PageSize w162h225/30859 Paint Can Label: "" +*pt_PT.PageSize w162h288/2.25x4.00": "" +*pt_PT.PageSize w162h540/Internet Postage 2-Part: "" +*pt_PT.PageSize w162h504/Internet Postage 3-Part: "" +*pt_PT.PageSize w41h248/File Folder: "" +*pt_PT.PageSize w41h144/Hanging Folder: "" +*pt_PT.PageSize w153h198/3.5" Disk: "" +*pt_PT.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*pt_PT.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*pt_PT.Translation Resolution/Resolution: "" +*pt_PT.Resolution 136dpi/136dpi: "" +*pt_PT.Resolution 203dpi/203dpi: "" +*pt_PT.Resolution 300dpi/300dpi: "" +*pt_PT.Translation InputSlot/Media Source: "" +*pt_PT.InputSlot Roll/Main Roll: "" +*pt_PT.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*pt_PT.Translation cupsDarkness/Darkness: "" +*pt_PT.cupsDarkness Light/Light: "" +*pt_PT.cupsDarkness Medium/Medium: "" +*pt_PT.cupsDarkness Normal/Normal: "" +*pt_PT.cupsDarkness Dark/Dark: "" +*ro.Translation Manufacturer/DYMO: "" +*ro.Translation ModelName/DYMO Label Printer: "" +*ro.Translation ShortNickName/DYMO Label Printer: "" +*ro.Translation NickName/DYMO Label Printer: "" +*ro.Translation PageSize/Media Size: "" +*ro.PageSize w81h252/Address: "" +*ro.PageSize w101h252/Large Address: "" +*ro.PageSize w54h144/Return Address: "" +*ro.PageSize w162h225/30859 Paint Can Label: "" +*ro.PageSize w162h288/2.25x4.00": "" +*ro.PageSize w162h540/Internet Postage 2-Part: "" +*ro.PageSize w162h504/Internet Postage 3-Part: "" +*ro.PageSize w41h248/File Folder: "" +*ro.PageSize w41h144/Hanging Folder: "" +*ro.PageSize w153h198/3.5" Disk: "" +*ro.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*ro.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*ro.Translation Resolution/Resolution: "" +*ro.Resolution 136dpi/136dpi: "" +*ro.Resolution 203dpi/203dpi: "" +*ro.Resolution 300dpi/300dpi: "" +*ro.Translation InputSlot/Media Source: "" +*ro.InputSlot Roll/Main Roll: "" +*ro.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*ro.Translation cupsDarkness/Darkness: "" +*ro.cupsDarkness Light/Light: "" +*ro.cupsDarkness Medium/Medium: "" +*ro.cupsDarkness Normal/Normal: "" +*ro.cupsDarkness Dark/Dark: "" +*ru.Translation Manufacturer/DYMO: "" +*ru.Translation ModelName/DYMO Label Printer: "" +*ru.Translation ShortNickName/DYMO Label Printer: "" +*ru.Translation NickName/DYMO Label Printer: "" +*ru.Translation PageSize/Media Size: "" +*ru.PageSize w81h252/Address: "" +*ru.PageSize w101h252/Large Address: "" +*ru.PageSize w54h144/Return Address: "" +*ru.PageSize w162h225/30859 Paint Can Label: "" +*ru.PageSize w162h288/2.25x4.00": "" +*ru.PageSize w162h540/Internet Postage 2-Part: "" +*ru.PageSize w162h504/Internet Postage 3-Part: "" +*ru.PageSize w41h248/File Folder: "" +*ru.PageSize w41h144/Hanging Folder: "" +*ru.PageSize w153h198/3.5" Disk: "" +*ru.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*ru.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*ru.Translation Resolution/Resolution: "" +*ru.Resolution 136dpi/136dpi: "" +*ru.Resolution 203dpi/203dpi: "" +*ru.Resolution 300dpi/300dpi: "" +*ru.Translation InputSlot/Media Source: "" +*ru.InputSlot Roll/Main Roll: "" +*ru.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*ru.Translation cupsDarkness/Darkness: "" +*ru.cupsDarkness Light/Light: "" +*ru.cupsDarkness Medium/Medium: "" +*ru.cupsDarkness Normal/Normal: "" +*ru.cupsDarkness Dark/Dark: "" +*sk.Translation Manufacturer/DYMO: "" +*sk.Translation ModelName/DYMO Label Printer: "" +*sk.Translation ShortNickName/DYMO Label Printer: "" +*sk.Translation NickName/DYMO Label Printer: "" +*sk.Translation PageSize/Media Size: "" +*sk.PageSize w81h252/Address: "" +*sk.PageSize w101h252/Large Address: "" +*sk.PageSize w54h144/Return Address: "" +*sk.PageSize w162h225/30859 Paint Can Label: "" +*sk.PageSize w162h288/2.25x4.00": "" +*sk.PageSize w162h540/Internet Postage 2-Part: "" +*sk.PageSize w162h504/Internet Postage 3-Part: "" +*sk.PageSize w41h248/File Folder: "" +*sk.PageSize w41h144/Hanging Folder: "" +*sk.PageSize w153h198/3.5" Disk: "" +*sk.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*sk.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*sk.Translation Resolution/Resolution: "" +*sk.Resolution 136dpi/136dpi: "" +*sk.Resolution 203dpi/203dpi: "" +*sk.Resolution 300dpi/300dpi: "" +*sk.Translation InputSlot/Media Source: "" +*sk.InputSlot Roll/Main Roll: "" +*sk.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*sk.Translation cupsDarkness/Darkness: "" +*sk.cupsDarkness Light/Light: "" +*sk.cupsDarkness Medium/Medium: "" +*sk.cupsDarkness Normal/Normal: "" +*sk.cupsDarkness Dark/Dark: "" +*sv.Translation Manufacturer/DYMO: "" +*sv.Translation ModelName/DYMO Label Printer: "" +*sv.Translation ShortNickName/DYMO Label Printer: "" +*sv.Translation NickName/DYMO Label Printer: "" +*sv.Translation PageSize/Media Size: "" +*sv.PageSize w81h252/Address: "" +*sv.PageSize w101h252/Large Address: "" +*sv.PageSize w54h144/Return Address: "" +*sv.PageSize w162h225/30859 Paint Can Label: "" +*sv.PageSize w162h288/2.25x4.00": "" +*sv.PageSize w162h540/Internet Postage 2-Part: "" +*sv.PageSize w162h504/Internet Postage 3-Part: "" +*sv.PageSize w41h248/File Folder: "" +*sv.PageSize w41h144/Hanging Folder: "" +*sv.PageSize w153h198/3.5" Disk: "" +*sv.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*sv.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*sv.Translation Resolution/Resolution: "" +*sv.Resolution 136dpi/136dpi: "" +*sv.Resolution 203dpi/203dpi: "" +*sv.Resolution 300dpi/300dpi: "" +*sv.Translation InputSlot/Media Source: "" +*sv.InputSlot Roll/Main Roll: "" +*sv.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*sv.Translation cupsDarkness/Darkness: "" +*sv.cupsDarkness Light/Light: "" +*sv.cupsDarkness Medium/Medium: "" +*sv.cupsDarkness Normal/Normal: "" +*sv.cupsDarkness Dark/Dark: "" +*th.Translation Manufacturer/DYMO: "" +*th.Translation ModelName/DYMO Label Printer: "" +*th.Translation ShortNickName/DYMO Label Printer: "" +*th.Translation NickName/DYMO Label Printer: "" +*th.Translation PageSize/Media Size: "" +*th.PageSize w81h252/Address: "" +*th.PageSize w101h252/Large Address: "" +*th.PageSize w54h144/Return Address: "" +*th.PageSize w162h225/30859 Paint Can Label: "" +*th.PageSize w162h288/2.25x4.00": "" +*th.PageSize w162h540/Internet Postage 2-Part: "" +*th.PageSize w162h504/Internet Postage 3-Part: "" +*th.PageSize w41h248/File Folder: "" +*th.PageSize w41h144/Hanging Folder: "" +*th.PageSize w153h198/3.5" Disk: "" +*th.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*th.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*th.Translation Resolution/Resolution: "" +*th.Resolution 136dpi/136dpi: "" +*th.Resolution 203dpi/203dpi: "" +*th.Resolution 300dpi/300dpi: "" +*th.Translation InputSlot/Media Source: "" +*th.InputSlot Roll/Main Roll: "" +*th.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*th.Translation cupsDarkness/Darkness: "" +*th.cupsDarkness Light/Light: "" +*th.cupsDarkness Medium/Medium: "" +*th.cupsDarkness Normal/Normal: "" +*th.cupsDarkness Dark/Dark: "" +*tr.Translation Manufacturer/DYMO: "" +*tr.Translation ModelName/DYMO Label Printer: "" +*tr.Translation ShortNickName/DYMO Label Printer: "" +*tr.Translation NickName/DYMO Label Printer: "" +*tr.Translation PageSize/Media Size: "" +*tr.PageSize w81h252/Address: "" +*tr.PageSize w101h252/Large Address: "" +*tr.PageSize w54h144/Return Address: "" +*tr.PageSize w162h225/30859 Paint Can Label: "" +*tr.PageSize w162h288/2.25x4.00": "" +*tr.PageSize w162h540/Internet Postage 2-Part: "" +*tr.PageSize w162h504/Internet Postage 3-Part: "" +*tr.PageSize w41h248/File Folder: "" +*tr.PageSize w41h144/Hanging Folder: "" +*tr.PageSize w153h198/3.5" Disk: "" +*tr.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*tr.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*tr.Translation Resolution/Resolution: "" +*tr.Resolution 136dpi/136dpi: "" +*tr.Resolution 203dpi/203dpi: "" +*tr.Resolution 300dpi/300dpi: "" +*tr.Translation InputSlot/Media Source: "" +*tr.InputSlot Roll/Main Roll: "" +*tr.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*tr.Translation cupsDarkness/Darkness: "" +*tr.cupsDarkness Light/Light: "" +*tr.cupsDarkness Medium/Medium: "" +*tr.cupsDarkness Normal/Normal: "" +*tr.cupsDarkness Dark/Dark: "" +*uk.Translation Manufacturer/DYMO: "" +*uk.Translation ModelName/DYMO Label Printer: "" +*uk.Translation ShortNickName/DYMO Label Printer: "" +*uk.Translation NickName/DYMO Label Printer: "" +*uk.Translation PageSize/Media Size: "" +*uk.PageSize w81h252/Address: "" +*uk.PageSize w101h252/Large Address: "" +*uk.PageSize w54h144/Return Address: "" +*uk.PageSize w162h225/30859 Paint Can Label: "" +*uk.PageSize w162h288/2.25x4.00": "" +*uk.PageSize w162h540/Internet Postage 2-Part: "" +*uk.PageSize w162h504/Internet Postage 3-Part: "" +*uk.PageSize w41h248/File Folder: "" +*uk.PageSize w41h144/Hanging Folder: "" +*uk.PageSize w153h198/3.5" Disk: "" +*uk.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*uk.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*uk.Translation Resolution/Resolution: "" +*uk.Resolution 136dpi/136dpi: "" +*uk.Resolution 203dpi/203dpi: "" +*uk.Resolution 300dpi/300dpi: "" +*uk.Translation InputSlot/Media Source: "" +*uk.InputSlot Roll/Main Roll: "" +*uk.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*uk.Translation cupsDarkness/Darkness: "" +*uk.cupsDarkness Light/Light: "" +*uk.cupsDarkness Medium/Medium: "" +*uk.cupsDarkness Normal/Normal: "" +*uk.cupsDarkness Dark/Dark: "" +*vi.Translation Manufacturer/DYMO: "" +*vi.Translation ModelName/DYMO Label Printer: "" +*vi.Translation ShortNickName/DYMO Label Printer: "" +*vi.Translation NickName/DYMO Label Printer: "" +*vi.Translation PageSize/Media Size: "" +*vi.PageSize w81h252/Address: "" +*vi.PageSize w101h252/Large Address: "" +*vi.PageSize w54h144/Return Address: "" +*vi.PageSize w162h225/30859 Paint Can Label: "" +*vi.PageSize w162h288/2.25x4.00": "" +*vi.PageSize w162h540/Internet Postage 2-Part: "" +*vi.PageSize w162h504/Internet Postage 3-Part: "" +*vi.PageSize w41h248/File Folder: "" +*vi.PageSize w41h144/Hanging Folder: "" +*vi.PageSize w153h198/3.5" Disk: "" +*vi.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*vi.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*vi.Translation Resolution/Resolution: "" +*vi.Resolution 136dpi/136dpi: "" +*vi.Resolution 203dpi/203dpi: "" +*vi.Resolution 300dpi/300dpi: "" +*vi.Translation InputSlot/Media Source: "" +*vi.InputSlot Roll/Main Roll: "" +*vi.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*vi.Translation cupsDarkness/Darkness: "" +*vi.cupsDarkness Light/Light: "" +*vi.cupsDarkness Medium/Medium: "" +*vi.cupsDarkness Normal/Normal: "" +*vi.cupsDarkness Dark/Dark: "" +*zh_CN.Translation Manufacturer/DYMO: "" +*zh_CN.Translation ModelName/DYMO Label Printer: "" +*zh_CN.Translation ShortNickName/DYMO Label Printer: "" +*zh_CN.Translation NickName/DYMO Label Printer: "" +*zh_CN.Translation PageSize/Media Size: "" +*zh_CN.PageSize w81h252/Address: "" +*zh_CN.PageSize w101h252/Large Address: "" +*zh_CN.PageSize w54h144/Return Address: "" +*zh_CN.PageSize w162h225/30859 Paint Can Label: "" +*zh_CN.PageSize w162h288/2.25x4.00": "" +*zh_CN.PageSize w162h540/Internet Postage 2-Part: "" +*zh_CN.PageSize w162h504/Internet Postage 3-Part: "" +*zh_CN.PageSize w41h248/File Folder: "" +*zh_CN.PageSize w41h144/Hanging Folder: "" +*zh_CN.PageSize w153h198/3.5" Disk: "" +*zh_CN.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*zh_CN.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*zh_CN.Translation Resolution/Resolution: "" +*zh_CN.Resolution 136dpi/136dpi: "" +*zh_CN.Resolution 203dpi/203dpi: "" +*zh_CN.Resolution 300dpi/300dpi: "" +*zh_CN.Translation InputSlot/Media Source: "" +*zh_CN.InputSlot Roll/Main Roll: "" +*zh_CN.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*zh_CN.Translation cupsDarkness/Darkness: "" +*zh_CN.cupsDarkness Light/Light: "" +*zh_CN.cupsDarkness Medium/Medium: "" +*zh_CN.cupsDarkness Normal/Normal: "" +*zh_CN.cupsDarkness Dark/Dark: "" +*zh_TW.Translation Manufacturer/DYMO: "" +*zh_TW.Translation ModelName/DYMO Label Printer: "" +*zh_TW.Translation ShortNickName/DYMO Label Printer: "" +*zh_TW.Translation NickName/DYMO Label Printer: "" +*zh_TW.Translation PageSize/Media Size: "" +*zh_TW.PageSize w81h252/Address: "" +*zh_TW.PageSize w101h252/Large Address: "" +*zh_TW.PageSize w54h144/Return Address: "" +*zh_TW.PageSize w162h225/30859 Paint Can Label: "" +*zh_TW.PageSize w162h288/2.25x4.00": "" +*zh_TW.PageSize w162h540/Internet Postage 2-Part: "" +*zh_TW.PageSize w162h504/Internet Postage 3-Part: "" +*zh_TW.PageSize w41h248/File Folder: "" +*zh_TW.PageSize w41h144/Hanging Folder: "" +*zh_TW.PageSize w153h198/3.5" Disk: "" +*zh_TW.PageSize pg55x25/24x55mm Price Label (portrait feed): "" +*zh_TW.PageSize pg55x25L/24x55mm Price Label (landscape feed): "" +*zh_TW.Translation Resolution/Resolution: "" +*zh_TW.Resolution 136dpi/136dpi: "" +*zh_TW.Resolution 203dpi/203dpi: "" +*zh_TW.Resolution 300dpi/300dpi: "" +*zh_TW.Translation InputSlot/Media Source: "" +*zh_TW.InputSlot Roll/Main Roll: "" +*zh_TW.InputSlot Roll2/Second Roll (DUO/Twin Only): "" +*zh_TW.Translation cupsDarkness/Darkness: "" +*zh_TW.cupsDarkness Light/Light: "" +*zh_TW.cupsDarkness Medium/Medium: "" +*zh_TW.cupsDarkness Normal/Normal: "" +*zh_TW.cupsDarkness Dark/Dark: "" +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(1.05)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM +*Font AvantGarde-Demi: Standard "(1.05)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM +*Font Bookman-Demi: Standard "(1.05)" Standard ROM +*Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM +*Font Bookman-Light: Standard "(1.05)" Standard ROM +*Font Bookman-LightItalic: Standard "(1.05)" Standard ROM +*Font Courier: Standard "(1.05)" Standard ROM +*Font Courier-Bold: Standard "(1.05)" Standard ROM +*Font Courier-BoldOblique: Standard "(1.05)" Standard ROM +*Font Courier-Oblique: Standard "(1.05)" Standard ROM +*Font Helvetica: Standard "(1.05)" Standard ROM +*Font Helvetica-Bold: Standard "(1.05)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM +*Font Helvetica-Narrow: Standard "(1.05)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM +*Font Helvetica-Oblique: Standard "(1.05)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM +*Font Palatino-Bold: Standard "(1.05)" Standard ROM +*Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM +*Font Palatino-Italic: Standard "(1.05)" Standard ROM +*Font Palatino-Roman: Standard "(1.05)" Standard ROM +*Font Symbol: Special "(001.005)" Special ROM +*Font Times-Bold: Standard "(1.05)" Standard ROM +*Font Times-BoldItalic: Standard "(1.05)" Standard ROM +*Font Times-Italic: Standard "(1.05)" Standard ROM +*Font Times-Roman: Standard "(1.05)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM +*Font ZapfDingbats: Special "(001.005)" Special ROM +*% End of dymo.ppd, 41594 bytes. diff --git a/mac/patch_ppd.py b/mac/patch_ppd.py new file mode 100644 index 0000000..9eca4ee --- /dev/null +++ b/mac/patch_ppd.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python3 +"""Add John's 24x55mm label stock to the generic CUPS DYMO PPD. + +The macOS-supplied generic dymo.ppd (ModelName "DYMO Label Printer") ships 10 fixed +label sizes and NO CustomPageSize block -- so a "custom paper size" made in the macOS +page-setup dialog can never reach the printer, and CUPS silently falls back to +w81h252 (Address, 28.6 x 88.9 mm). That is why the label prints rotated and shrunk. + +We add BOTH orientations so the correct one can be picked in the print dialog: + pg55x25 72 x 155 pt = 25.4 x 54.7 mm -- roll ~25 mm wide, label runs 55 mm along the feed + pg55x25L 155 x 72 pt = 54.7 x 25.4 mm -- roll ~55 mm wide, label runs 25 mm along the feed + +Margins: 2 pt sides, 4 pt ends (~0.7 / 1.4 mm) -- tighter than the driver's stock +14.9 pt end margin, which would eat 10.5 mm of a 55 mm label. + +Regenerate from the PRISTINE driver PPD, not from the live queue -- once you have applied +this, /etc/cups/ppd/.ppd IS the patched file and the script will refuse it: + + ppdc -d /tmp/ppdout /usr/share/cups/drv/sample.drv + python3 patch_ppd.py dymo-24x55.ppd /tmp/ppdout/dymo.ppd + +(Verified: that route reproduces the committed dymo-24x55.ppd byte-for-byte and PASSes +cupstestppd.) Source defaults to JING5's queue for a first run on a stock install. +""" +import re +import shutil +import sys + +DST = sys.argv[1] if len(sys.argv) > 1 else 'dymo-24x55.ppd' +SRC = sys.argv[2] if len(sys.argv) > 2 else '/etc/cups/ppd/make_it_soso.ppd' + +# name, width_pt, height_pt, human label +NEW = [ + ('pg55x25', 72, 155, '24x55mm Price Label (portrait feed)'), + ('pg55x25L', 155, 72, '24x55mm Price Label (landscape feed)'), +] + +shutil.copyfile(SRC, DST) +with open(DST, encoding='utf-8', errors='surrogateescape') as f: + ppd = f.read() + +if 'pg55x25' in ppd: + sys.exit('already patched') + + +def area(w, h): + """left bottom right top -- 2pt sides, 4pt ends""" + return f'2 4 {w - 2} {h - 4}' + + +# 1. *PageSize entries -- insert after the last existing *PageSize line +def insert_after_last(text, prefix, lines): + idx = [m.start() for m in re.finditer(rf'^\*{prefix} ', text, re.M)] + end = text.index('\n', idx[-1]) + 1 + return text[:end] + ''.join(lines) + text[end:] + + +ppd = insert_after_last(ppd, 'PageSize', [ + f'*PageSize {n}/{lab}: "<>setpagedevice"\n' + for n, w, h, lab in NEW]) + +ppd = insert_after_last(ppd, 'PageRegion', [ + f'*PageRegion {n}/{lab}: "<>setpagedevice"\n' + for n, w, h, lab in NEW]) + +ppd = insert_after_last(ppd, 'ImageableArea', [ + f'*ImageableArea {n}/{lab}: "{area(w, h)}"\n' + for n, w, h, lab in NEW]) + +ppd = insert_after_last(ppd, 'PaperDimension', [ + f'*PaperDimension {n}/{lab}: "{w} {h}"\n' + for n, w, h, lab in NEW]) + +# 1b. per-language translation strings. The PPD declares 31 languages in *cupsLanguages +# and cupstestppd FAILs if a PageSize choice is missing any of them. +langs = re.search(r'^\*cupsLanguages:\s*"([^"]+)"', ppd, re.M).group(1).split() +for lg in langs: + if lg == 'en': + continue + for opt in ('PageSize', 'PageRegion'): + pat = rf'^\*{lg}\.{opt} \S+.*$' + hits = [m for m in re.finditer(pat, ppd, re.M)] + if not hits: + continue + end = hits[-1].end() + 1 + add = ''.join(f'*{lg}.{opt} {n}/{lab}: ""\n' for n, w, h, lab in NEW) + ppd = ppd[:end] + add + ppd[end:] + +# 2. make the portrait one the default so a plain "print" already lands right +ppd = ppd.replace('*DefaultPageSize: w81h252', '*DefaultPageSize: pg55x25') +ppd = ppd.replace('*DefaultPageRegion: w81h252', '*DefaultPageRegion: pg55x25') +ppd = ppd.replace('*DefaultImageableArea: w81h252', '*DefaultImageableArea: pg55x25') +ppd = ppd.replace('*DefaultPaperDimension: w81h252', '*DefaultPaperDimension: pg55x25') + +with open(DST, 'w', encoding='utf-8', errors='surrogateescape') as f: + f.write(ppd) + +print(f'wrote {DST}') +for n, w, h, lab in NEW: + print(f' {n:9s} {w:3d} x {h:3d} pt = {w/72*25.4:5.1f} x {h/72*25.4:5.1f} mm {lab}')