commit b4c4f14ca5d26a73a03e1f6bf54e0bf1a2c10578 Author: bart Date: Sun Oct 4 21:47:22 2026 +0200 v1 diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..5706b12 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,18 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + + { + "type": "node", + "request": "launch", + "name": "Launch Program", + "skipFiles": [ + "/**" + ], + "program": "${workspaceFolderBasename}" + } + ] +} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..0b3abde --- /dev/null +++ b/Dockerfile @@ -0,0 +1,34 @@ +FROM node:24-trixie AS base + +RUN apt update && apt install -y glabels libusb-1.0-0-dev usbutils imagemagick ghostscript + +FROM node:24-trixie AS build + +WORKDIR /app + +COPY src/package*.json ./ + +RUN npm install --save-dev + +COPY src . + +# (Optioneel) Compileer je TypeScript naar JS +RUN npm run build + + + +FROM base AS labelelec + + +WORKDIR /app + +COPY src/package*.json ./ +RUN npm install --omit=dev + +COPY --from=build --chown=node:node /app/dist /app/dist + +COPY frontend /app/public + +EXPOSE 80 + +ENTRYPOINT ["node", "dist/index.js"] \ No newline at end of file diff --git a/cups-config/cups/classes.conf b/cups-config/cups/classes.conf new file mode 100644 index 0000000..4133bf0 --- /dev/null +++ b/cups-config/cups/classes.conf @@ -0,0 +1,3 @@ +# Class configuration file for CUPS v2.4.16 +# Written by cupsd +# DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING diff --git a/cups-config/cups/cups-browsed.conf b/cups-config/cups/cups-browsed.conf new file mode 100644 index 0000000..44e7b8a --- /dev/null +++ b/cups-config/cups/cups-browsed.conf @@ -0,0 +1,776 @@ +# All configuration options described here can also be supplied on the +# command line of cups-browsed via the "-o" option. In case of +# contradicting settings the setting defined in the configuration file +# will get used. + +# Unknown directives are ignored, also unknown values. + + +# Where should cups-browsed save information about the print queues it had +# generated when shutting down, like whether one of these queues was the +# default printer, or default option settings of the queues? + +# CacheDir /var/cache/cups + + +# Where should cups-browsed create its debug log file (if "DebugLogging file" +# is set)? + +# LogDir /var/log/cups + + +# How should debug logging be done? Into the file +# /var/log/cups/cups-browsed_log ('file'), to stderr ('stderr'), or +# not at all ('none')? + +# Note that if cups-browsed is running as a system service (for +# example via systemd) logging to stderr makes the log output going to +# the journal or syslog. Only if you run cups-browsed from the command +# line (for development or debugging) it will actually appear on +# stderr. + +# DebugLogging file +# DebugLogging stderr +# DebugLogging file stderr +# DebugLogging none + + +# Which protocols will we use to discover printers on the network? +# Can use DNSSD and/or CUPS and/or LDAP, or 'none' for neither. + +BrowseRemoteProtocols dnssd + + +# Which protocols will we use to broadcast shared local printers to the network? +# Can use DNSSD and/or CUPS, or 'none' for neither. +# Only CUPS is actually supported, as DNSSD is done by CUPS itself (we ignore +# DNSSD in this directive). + +# BrowseLocalProtocols none + + +# Settings of this directive apply to both BrowseRemoteProtocols and +# BrowseLocalProtocols. +# Can use DNSSD and/or CUPS and/or LDAP, or 'none' for neither. + +# BrowseProtocols none + + +# Only browse remote printers (via DNS-SD or CUPS browsing) from +# selected servers using the "BrowseAllow", "BrowseDeny", and +# "BrowseOrder" directives + +# This serves for restricting the choice of printers in print dialogs +# to trusted servers or to reduce the number of listed printers in the +# print dialogs to a more user-friendly amount in large networks with +# very many shared printers. + +# This only filters the selection of remote printers for which +# cups-browsed creates local queues. If the print dialog uses other +# mechanisms to list remote printers as for example direct DNS-SD +# access, cups-browsed has no influence. cups-browsed also does not +# prevent the user from manually accessing non-listed printers. + +# "BrowseAllow": Accept printers from these hosts or networks. If +# there are only "BrowseAllow" lines and no "BrowseOrder" and/or +# "BrowseDeny" lines, only servers matching at last one "BrowseAllow" +# line are accepted. + +# "BrowseDeny": Deny printers from these hosts or networks. If there +# are only "BrowseDeny" lines and no "BrowseOrder" and/or +# "BrowseAllow" lines, all servers NOT matching any of the +# "BrowseDeny" lines are accepted. + +# "BrowseOrder": Determine the order in which "BrowseAllow" and +# "BrowseDeny" lines are applied. With "BrowseOrder Deny,Allow" in the +# beginning all servers are accepted, then the "BrowseDeny" lines are +# applied to exclude unwished servers or networks and after that the +# "BrowseAllow" lines to re-include servers or networks. With +# "BrowseOrder Allow,Deny" we start with denying all servers, then +# applying the "BrowseAllow" lines and afterwards the "BrowseDeny" +# lines. + +# Default for "BrowseOrder" is "Deny.Allow" if there are both +# "BrowseAllow" and "BrowseDeny" lines. + +# If there are no "Browse..." lines at all, all servers are accepted. + +# BrowseAllow All +# BrowseAllow cups.example.com +# BrowseAllow 192.168.1.12 +# BrowseAllow 192.168.1.0/24 +# BrowseAllow 192.168.1.0/255.255.255.0 + +# BrowseDeny All +# BrowseDeny printserver.example.com +# BrowseDeny 192.168.1.13 +# BrowseDeny 192.168.3.0/24 +# BrowseDeny 192.168.3.0/255.255.255.0 + +# BrowseOrder Deny,Allow +# BrowseOrder Allow,Deny + + +# The interval between browsing/broadcasting cycles, local and/or +# remote, can be adjusted with the BrowseInterval directive. + +# BrowseInterval 60 + + +# Browsing-related operations such as adding or removing printer queues +# and broadcasting are each allowed to take up to a given amount of time. +# It can be configured, in seconds, with the BrowseTimeout directive. +# Especially queues discovered by CUPS broadcasts will be removed after +# this timeout if no further broadcast from the server happens. + +# BrowseTimeout 300 + +# Filtering of remote printers by other properties than IP addresses +# of their servers + +# Often the desired selection of printers cannot be reached by only +# taking into account the IP addresses of the servers. For these cases +# there is the BrowseFilter directive to filter by most of the known +# properties of the printer. + +# By default there is no BrowseFilter line meaning that no filtering +# is applied. + +# To do filtering one can supply one or more BrowseFilter directives +# like this: + +# BrowseFilter [NOT] [EXACT] [] + +# The BrowseFilter directive always starts with the word +# "BrowseFilter" and it must at least contain the name of the data +# field () of the printer's properties to which it should +# apply. + +# Available field names are: + +# name: Name of the local print queue to be created +# host: Host name of the remote print server +# port: Port through which the printer is accessed on the server +# service: DNS/SD service name of the remote printer +# domain: Domain of the remote print server + +# Also all field names in the TXT records of DNS-SD-advertised printers +# are valid, like "color", "duplex", "pdl", ... If the field name of +# the filter rule does not exist for the printer, the rule is skipped. + +# The optional field is either the exact value (when the +# option EXACT is supplied) or a regular expression (Run "man 7 regex" +# in a terminal window) to be matched with the data field. + +# If no filed is supplied, rules with field names of the TXT +# record are considered for boolean matching (true/false) of boolean +# field (like duplex, which can have the values "T" for true and "F" +# for false). + +# If the option NOT is supplied, the filter rule is fulfilled if the +# regular expression or the exact value DOES NOT match the content of +# the data field. In a boolean rule (without ) the rule matches +# false. + +# Regular expressions are always considered case-insensitive and +# extended POSIX regular expressions. Field names and options (NOT, +# EXACT) are all evaluated case-insensitive. If there is an error in a +# regular expression, the BrowseFilter line gets ignored. + +# Especially to note is that supplying any simple string consisting of +# only letters, numbers, spaces, and some basic special characters as +# a regular expression matches if it is contained somewhere in the +# data field. + +# If there is more than one BrowseFilter directive, ALL the directives +# need to be fulfilled for the remote printer to be accepted. If one +# is not fulfilled, the printer will get ignored. + +# Examples: + +# Rules for standard data items which are supplied with any remote +# printer advertised via DNS-SD: + +# Print queue name must contain "hum_res_", this matches +# "hum_res_mono" or "hum_res_color" but also "old_hum_res_mono": + +# BrowseFilter name hum_res_ + +# This matches if the remote host name contains "printserver", like +# "printserver.local", "printserver2.example.com", "newprintserver": + +# BrowseFilter host printserver + +# This matches all ports with 631 int its number, for example 631, +# 8631, 10631,...: + +# BrowseFilter port 631 + +# This rule matches if the DNS-SD service name contains "@ printserver": + +# Browsefilter service @ printserver + +# Matches all domains with "local" in their names, not only "local" but +# also things like "printlocally.com": + +# BrowseFilter domain local + +# Examples for rules applying to items of the TXT record: + +# This rule selects PostScript printers, as the "PDL" field in the TXT +# record contains "postscript" then. This includes also remote CUPS +# queues which accept PostScript, independent of whether the physical +# printer behind the CUPS queue accepts PostScript or not. + +# BrowseFilter pdl postscript + +# Color printers usually contain a "Color" entry set to "T" (for true) +# in the TXT record. This rule selects them: + +# BrowseFilter color + +# This is a similar rule to select only duplex (automatic double-sided +# printing) printers: + +# BrowseFilter duplex + +# Rules with the NOT option: + +# This rule EXCLUDES printers from all hosts containing "financial" in +# their names, nice to get rid of the 100s of printers of the +# financial department: + +# BrowseFilter NOT host financial + +# Get only monochrome printers ("Color" set to "F", meaning false, in +# the TXT record): + +# BrowseFilter NOT color + +# Rules with more advanced use of regular expressions: + +# Only queue names which BEGIN WITH "hum_res_" are accepted now, so we +# still get "hum_res_mono" or "hum_res_color" but not +# "old_hum_res_mono" any more: + +# BrowseFilter name ^hum_res_ + +# Server names is accepted if it contains "print_server" OR +# "graphics_dep_server": + +# BrowseFilter host print_server|graphics_dep_server + +# "printserver1", "printserver2", and "printserver3", nothing else: + +# BrowseFilter host ^printserver[1-3]$ + +# Printers understanding at least one of PostScript, PCL, or PDF: + +# BrowseFilter pdl postscript|pcl|pdf + +# Examples for the EXACT option: + +# Only printers from "printserver.local" are accepted: + +# BrowseFilter EXACT host printserver.local + +# Printers from all servers except "prinserver2.local" are accepted: + +# BrowseFilter NOT EXACT host prinserver2.local + + +# Use BrowsePoll to poll a particular CUPS server + +# BrowsePoll cups.example.com +# BrowsePoll cups.example.com:631 +# BrowsePoll cups.example.com:631/version=1.1 + + +# LDAP browsing configuration +# The default value for all options is an empty string. Example configuration: + +# BrowseLDAPBindDN cn=cups-browsed,dc=domain,dc=tld +# BrowseLDAPCACertFile /path/to/server/certificate.pem +# BrowseLDAPDN ou=printers,dc=domain,dc=tld +# BrowseLDAPFilter (printerLocation=/Office 1/*) +# BrowseLDAPPassword s3cret +# BrowseLDAPServer ldaps://ldap.domain.tld + + +# Use DomainSocket to access the local CUPS daemon via another than the +# default domain socket. "None" or "Off" lets cups-browsed not use CUPS' +# domain socket. + +# DomainSocket /var/run/cups/cups.sock +# DomainSocket None +# DomainSocket Off + + +# Set HTTP timeout (in seconds) for requests sent to local/remote +# resources Note that too short timeouts can make services getting +# missed when they are present and operations be unnecessarily +# repeated and too long timeouts can make operations take too long +# when the server does not respond. + +# HttpLocalTimeout 5 +# HttpRemoteTimeout 10 + +# Set how many retries (N) should cups-browsed do for creating print +# queues for remote printers which receive timeouts during print queue +# creation. The printers which are not successfully set up even after +# N retries, are skipped until the next restart of the service. Note +# that too many retries can cause high CPU load. + +# HttpMaxRetries 5 + +# Set OnlyUnsupportedByCUPS to "Yes" will make cups-browsed not create +# local queues for remote printers for which CUPS creates queues by +# itself. These printers are printers advertised via DNS-SD and doing +# CUPS-supported (currently PWG Raster and Apple Raster) driverless +# printing, including remote CUPS queues. Queues for other printers +# (like for legacy PostScript/PCL printers) are always created +# (depending on the other configuration settings of cups-browsed). + +# With OnlyUnsupportedByCUPS set to "No", cups-browsed creates queues +# for all printers which it supports, including printers for which +# CUPS would create queues by itself. Temporary queues created by CUPS +# will get overwritten. This way it is assured that any extra +# functionality of cups-browsed will apply to these queues. As queues +# created by cups-browsed are permanent CUPS queues this setting is +# also recommended if applications/print dialogs which do not support +# temporary CUPS queues are installed. This setting is the default. + +# OnlyUnsupportedByCUPS Yes + + +# With UseCUPSGeneratedPPDs set to "Yes" cups-browsed creates queues +# for IPP printers with PPDs generated by the PPD generator of CUPS +# and not with the one of cups-browsed. So any new development in +# CUPS' PPD generator gets available. As CUPS' PPD generator is not +# directly accessible, we need to make CUPS generate a temporary print +# queue with the desired PPD. Therefore we can only use these PPDs +# when our queue replaces a temporary CUPS queue, meaning that the +# queue is for a printer on which CUPS supports driverless printing +# (IPP 2.x, PDLs: PDF, PWG Raster, and/or Apple Raster) and that its +# name is the same as CUPS uses for the temporary queue +# ("LocalQueueNamingIPPPrinter DNS-SD" must be set). The directive +# applies only to IPP printers, not to remote CUPS queues, to not +# break clustering. Setting this directive to "No" lets cups-browsed +# generate the PPD file. Default setting is "No". + +# UseCUPSGeneratedPPDs No + + +# With the directives LocalQueueNamingRemoteCUPS and +# LocalQueueNamingIPPPrinter you can determine how the names for local +# queues generated by cups-browsed are generated, separately for +# remote CUPS printers and IPP printers. + +# DNS-SD (the default in both cases) bases the naming on the service +# name of the printer's advertised DNS-SD record. This is exactly the +# same naming scheme as CUPS uses for its temporary queues, so the +# local queue from cups-browsed prevents CUPS from listing and +# creating an additional queue. As DNS-SD service names have to be +# unique, queue names of printers from different servers will also be +# unique and so there is no automatic clustering for load-balanced +# printing. + +# MakeModel bases the queue name on the printer's manufacturer and +# model names. This scheme cups-browsed used formerly for IPP +# printers. + +# RemoteName is only available for remote CUPS queues and uses the +# name of the queue on the remote CUPS server as the local queue's +# name. This makes printers on different CUPS servers with equal queue +# names automatically forming a load-balancing cluster as CUPS did +# formerly (CUPS 1.5.x and older) with CUPS-broadcasted remote +# printers. This scheme cups-browsed used formerly for remote CUPS +# printers. + +# LocalQueueNamingRemoteCUPS DNS-SD +# LocalQueueNamingRemoteCUPS MakeModel +# LocalQueueNamingRemoteCUPS RemoteName +# LocalQueueNamingIPPPrinter DNS-SD +# LocalQueueNamingIPPPrinter MakeModel + + +# Set DNSSDBasedDeviceURIs to "Yes" if cups-browsed should use +# DNS-SD-service-name-based device URIs for its local queues, as CUPS +# also does. These queues use the DNS-SD service name of the +# discovered printer. With this the URI is independent of network +# interfaces and ports, giving reliable connections to always the same +# physical device. This setting is the default. + +# Set DNSSDBasedDeviceURIs to "No" if cups-browsed should use the +# conventional host-name/IP-based URIs. + +# Note that this option has only influence on URIs for printers +# discovered via DNS-SD, not via legacy CUPS broewsing or LDAP. +# Those printers get always assigned the conventional URIs. + +# DNSSDBasedDeviceURIs Yes + + +# Set IPBasedDeviceURIs to "Yes" if cups-browsed should create its +# local queues with device URIs with the IP addresses instead of the +# host names of the remote servers. This mode is there for any +# problems with host name resolution in the network, especially also +# if avahi-daemon is only run for printer discovery and already +# stopped while still printing. By default this mode is turned off, +# meaning that we use URIs with host names. + +# Note that the IP addresses depend on the network interface through +# which the printer is accessed. So do not use IP-based URIs on systems +# with many network interfaces and where interfaces can appear and +# disappear frequently. + +# This mode could also be useful for development and debugging. + +# If you prefer IPv4 or IPv6 IP addresses in the URIs, you can set +# IPBasedDeviceURIs to "IPv4" to only get IPv4 IP addresses or +# IPBasedDeviceURIs to "IPv6" to only get IPv6 IP addresses. + +# IPBasedDeviceURIs No +# IPBasedDeviceURIs Yes +# IPBasedDeviceURIs IPv4 +# IPBasedDeviceURIs IPv6 + +# The AllowResharingRemoteCUPSPrinters directive determines whether a +# print queue pointing to a remote CUPS queue will be re-shared to the +# local network or not. Since the queues generated using the BrowsePoll +# directive are also pointing to remote queues, they are also shared +# automatically if the following option is set. Default is not to share +# remote printers. + +# AllowResharingRemoteCUPSPrinters Yes + +# The NewBrowsePollQueuesShared directive determines whether a print +# queue for a newly discovered printer (discovered by the BrowsePoll directive) +# will be shared to the local network or not. This directive will only work +# if AllowResharingRemoteCUPSPrinters is set to yes. Default is +# not to share printers discovered using BrowsePoll. + +# NewBrowsePollQueuesShared Yes + +# Set CreateRemoteRawPrinterQueues to "Yes" to let cups-browsed also +# create local queues pointing to remote raw CUPS queues. Normally, +# only queues pointing to remote queues with PPD/driver are created +# as we do not use drivers on the client side, but in some cases +# accessing a remote raw queue can make sense, for example if the +# queue forwards the jobs by a special backend like Tea4CUPS. + +# CreateRemoteRawPrinterQueues Yes + + +# cups-browsed by default creates local print queues for each shared +# CUPS print queue which it discovers on remote machines in the local +# network(s). Set CreateRemoteCUPSPrinterQueues to "No" if you do not +# want cups-browsed to do this. For example you can set cups-browsed +# to only create queues for IPP network printers setting +# CreateIPPPrinterQueues not to "No" and CreateRemoteCUPSPrinterQueues +# to "No". + +# CreateRemoteCUPSPrinterQueues No + + +# Set CreateIPPPrinterQueues to "All" to let cups-browsed discover IPP +# network printers (native printers, not CUPS queues) with known page +# description languages (PWG Raster, PDF, PostScript, PCL XL, PCL +# 5c/e) in the local network and auto-create print queues for them. + +# Set CreateIPPPrinterQueues to "Everywhere" to let cups-browsed +# discover IPP Everywhere printers in the local network (native +# printers, not CUPS queues) and auto-create print queues for them. + +# Set CreateIPPPrinterQueues to "AppleRaster" to let cups-browsed +# discover Apple Raster printers in the local network (native +# printers, not CUPS queues) and auto-create print queues for them. + +# Set CreateIPPPrinterQueues to "Driverless" to let cups-browsed +# discover printers designed for driverless use (currently IPP +# Everywhere and Apple Raster) in the local network (native printers, +# not CUPS queues) and auto-create print queues for them. + +# Set CreateIPPPrinterQueues to "LocalOnly" to auto-create print +# queues only for local printers made available as IPP printers. These +# are for example IPP-over-USB printers, made available via +# ippusbxd. This is the default. + +# Set CreateIPPPrinterQueues to "No" to not auto-create print queues +# for IPP network printers. + +# If queues with PPD file are created (see IPPPrinterQueueType +# directive below) the PPDs are auto-generated by cups-browsed based +# on properties of the printer polled via IPP. In case of missing +# information, info from the Bonjour record is used asd as last mean +# default values. + +# If queues without PPD (see IPPPrinterQueueType directive below) are +# created clients have to IPP-poll the capabilities of the printer and +# send option settings as standard IPP attributes. Then we do not poll +# the capabilities by ourselves to not wake up the printer from +# power-saving mode when creating the queues. Jobs have to be sent in +# one of PDF, PWG Raster, or JPEG format. Other formats are not +# accepted. + +# This functionality is primarily for mobile devices running +# CUPS to not need a printer setup tool nor a collection of printer +# drivers and PPDs. + +# CreateIPPPrinterQueues No +# CreateIPPPrinterQueues LocalOnly +# CreateIPPPrinterQueues Everywhere +# CreateIPPPrinterQueues AppleRaster +# CreateIPPPrinterQueues Everywhere AppleRaster +# CreateIPPPrinterQueues Driverless +# CreateIPPPrinterQueues All + + +# If cups-browsed is automatically creating print queues for native +# IPP network printers ("CreateIPPPrinterQueues Yes"), the type of +# queue to be created can be selected by the "IPPPrinterQueueType" +# directive. The "PPD" (default) setting makes queues with PPD file +# being created. With "Interface" or "NoPPD" the queue is created with +# a System V interface script (Not supported with CUPS 2.2.x or +# later). "Auto" is for backward compatibility and also lets queues +# with PPD get created. + +# IPPPrinterQueueType PPD +# IPPPrinterQueueType NoPPD +# IPPPrinterQueueType Interface +# IPPPrinterQueueType Auto + + +# The NewIPPPrinterQueuesShared directive determines whether a print +# queue for a newly discovered IPP network printer (not remote CUPS +# queue) will be shared to the local network or not. This is only +# valid for newly discovered printers. For printers discovered in an +# earlier cups-browsed session, cups-browsed will remember whether the +# printer was shared, so changes by the user get conserved. Default is +# not to share newly discovered IPP printers. + +# NewIPPPrinterQueuesShared Yes + + +# How to handle the print queues cups-browsed creates when +# cups-browsed is shut down: + +# "KeepGeneratedQueuesOnShutdown No" makes the queues being +# removed. This makes sense as these queues only work while +# cups-browsed is running. cups-browsed has to determine to which +# member printer of a cluster to pass on the job. + +# "KeepGeneratedQueuesOnShutdown Yes" (the default) makes the queues +# not being removed. This is the recommended setting for a system +# where cups-browsed is permanently running and only stopped for short +# times (like log rotation) or on shutdown. This avoids the +# re-creation of the queues when cups-browsed is restarted, which +# often causes a clutter of CUPS notifications on the desktop. + +# KeepGeneratedQueuesOnShutdown No + +# If there is more than one remote CUPS printer whose local queue +# would get the same name and AutoClustering is set to "Yes" (the +# default) only one local queue is created which makes up a +# load-balancing cluster of the remote printers which would get this +# queue name (implicit class). This means that when several jobs are +# sent to this queue they get distributed between the printers, using +# the method chosen by the LoadBalancing directive. + +# Note that the forming of clusters depends on the naming scheme for +# local queues created by cups-browsed. If you have set +# LocalQueueNamingRemoteCUPS to "DNSSD" you will not get automatic +# clustering as the DNS-SD service names are always unique. With +# LocalQueueNamingRemoteCUPS set to "RemoteName" local queues are +# named as the CUPS queues on the remote servers are named and so +# equally named queues on different servers get clustered (this is how +# CUPS did it in version 1.5.x or older). LocalQueueNamingRemoteCUPS +# set to "MakeModel" makes remote printers of the same model get +# clustered. Note that then a cluster can contain more than one queue +# of the same server. + +# With AutoClustering set to "No", for each remote CUPS printer an +# individual local queue is created, and to avoid name clashes when +# using the LocalQueueNamingRemoteCUPS settings "RemoteName" or +# "MakeModel" "@" is added to the local queue name. + +# Only remote CUPS printers get clustered, not IPP network printers or +# IPP-over-USB printers. + +# AutoClustering Yes +# AutoClustering No + + +# Load-balancing printer cluster formation can also be manually +# controlled by defining explicitly which remote CUPS printers should +# get clustered together. + +# This is done by the "Cluster" directive: + +# Cluster : ... +# Cluster + +# If no expressions are given, is used as the first and +# only expression for this cluster. + +# Discovered printers are matched against all the expressions of all +# defined clusters. The first expression which matches the discovered +# printer determines to which cluster it belongs. Note that this way a +# printer can only belong to one cluster. Once matched, further +# cluster definitions will not checked any more. + +# With the first printer matching a cluster's expression a local queue +# with the name is created. If more printers are +# discovered and match this cluster, they join the cluster. Printing +# to this queue prints to all these printers in a load-balancing +# manner, according to to the setting of the LoadBalancing directive. + +# Each expression must be a string of characters without spaces. If +# spaces are needed, replace them by underscores ('_'). + +# An expression can be matched in three ways: + +# 1. By the name of the CUPS queue on the remote server +# 2. By make and model name of the remote printer +# 3. By the DNS-SD service name of the remote printer + +# Note that the matching is done case-insensitively and any group of +# non-alphanumerical characters is replaced by a single underscore. + +# So if an expression is "HP_DeskJet_2540" and the remote server +# reports "hp Deskjet-2540" the printer gets matched to this cluster. + +# If "AutoClustering" is not set to "No" both your manual cluster +# definitions will be followed and automatic clustering of +# equally-named remote queues will be performed. If a printer matches +# in both categories the match to the manually defined cluster has +# priority. Automatic clustering of equally-named remote printers is +# not performed if there is a manually defined cluster with this name +# (at least as the printers do not match this cluster). + +# Examples: + +# To cluster all remote CUPS queues named "laserprinter" in your local +# network but not cluster any other equally-named remote CUPS printers +# use (Local queue will get named "laserprinter"): + +# AutoClustering No +# Cluster laserprinter + +# To cluster all remote CUPS queues of HP LaserJet 4050 printers in a +# local queue named "LJ4050": + +# Cluster LJ4050: HP_LaserJet_4050 + +# As DNS-SD service names are unique in a network you can create a +# cluster from exactly specified printers (spaces replaced by +# underscores): + +# Cluster hrdep: oldlaser_@_hr-server1 newlaser_@_hr-server2 + + +# The LoadBalancing directive switches between two methods of handling +# load balancing between equally-named remote queues which are +# represented by one local print queue making up a cluster of them +# (implicit class). + +# The two methods are: + +# Queuing of jobs on the client (LoadBalancing QueueOnClient): + +# Here we queue up the jobs on the client and regularly check the +# clustered remote print queues. If we find an idle queue, we pass +# on a job to it. + +# This is also the method which CUPS uses for classes. Advantage is a +# more even distribution of the job workload on the servers +# (especially if the printing speed of the servers is very different), +# and if a server fails, there are not several jobs stuck or +# lost. Disadvantage is that if one takes the client (laptop, mobile +# phone, ...) out of the local network, printing stops with the jobs +# waiting in the local queue. + +# Queuing of jobs on the servers (LoadBalancing QueueOnServers): + +# Here we check the number of jobs on each of the clustered remote +# printers and send an incoming job immediately to the remote printer +# with the lowest amount of jobs in its queue. This way no jobs queue +# up locally, all jobs which are waiting are waiting on one of the +# remote servers. + +# Not having jobs waiting locally has the advantage that we can take +# the local machine from the network and all jobs get printed. +# Disadvantage is that if a server with a full queue of jobs goes +# away, the jobs go away, too. + +# Default is queuing the jobs on the client as this is what CUPS does +# with classes. + +# LoadBalancing QueueOnClient +# LoadBalancing QueueOnServers + + +# With the DefaultOptions directive one or more option settings can be +# defined to be applied to every print queue newly created by +# cups-browsed. Each option is supplied as one supplies options with +# the "-o" command line argument to the "lpadmin" command (Run "man +# lpadmin" for more details). More than one option can be supplied +# separating the options by spaces. By default no option settings are +# pre-defined. + +# Note that print queues which cups-browsed already created before +# remember their previous settings and so these settings do not get +# applied. + +# DefaultOptions Option1=Value1 Option2=Value2 Option3 noOption4 + + +# The AutoShutdown directive specifies whether cups-browsed should +# automatically terminate when it has no local raw queues set up +# pointing to any discovered remote printers or no jobs on such queues +# depending on AutoShutdownOn setting (auto shutdown mode). Setting it +# to "On" activates the auto-shutdown mode, setting it to "Off" +# deactiivates it (the default). The special mode "avahi" turns auto +# shutdown off while avahi-daemon is running and on when avahi-daemon +# stops. This allows running cups-browsed on-demand when avahi-daemon +# is run on-demand. + +# AutoShutdown Off +# AutoShutdown On +# AutoShutdown avahi + + +# The AutoShutdownOn directive determines what event cups-browsed +# considers as inactivity in auto shutdown mode. "NoQueues" (the +# default) means that auto shutdown is initiated when there are no +# queues for discovered remote printers generated by cups-browsed any +# more. "NoJobs" means that all queues generated by cups-browsed are +# without jobs. + +# AutoShutdownOn NoQueues +# AutoShutdownOn NoJobs + + +# The AutoShutdownTimeout directive specifies after how many seconds +# without local raw queues set up pointing to any discovered remote +# printers or jobs on these queues cups-browsed should actually shut +# down in auto shutdown mode. Default is 30 seconds, 0 means immediate +# shutdown. + +# AutoShutdownTimeout 30 + +# DebugLogFileSize defines the maximum size possible (in KBytes) +# of the log files (cups-browsed_log and cups-browsed_previous_logs) +# that is created using cups-browsed in the debugging mode. +# Setting its value to 0 would turn off any restriction +# on the size of the file. + +# DebugLogFileSize 300 + +# NotifLeaseDuration defines how long the D-BUS subscription created by cups-browsed +# in cupsd will last before cupsd cancels it. The default value is 1 day +# in seconds - 86400. The subscription renewal is set to happen after half of +# NotifLeaseDuration passed. The D-BUS notifications are used for watching over queues +# and doing specific actions when a D-BUS notification comes. + +# NotifLeaseDuration 86400 diff --git a/cups-config/cups/cups-files.conf b/cups-config/cups/cups-files.conf new file mode 100644 index 0000000..80dcfc6 --- /dev/null +++ b/cups-config/cups/cups-files.conf @@ -0,0 +1,94 @@ +# +# File/directory/user/group configuration file for the CUPS scheduler. +# See "man cups-files.conf" for a complete description of this file. +# + +# List of events that are considered fatal errors for the scheduler... +#FatalErrors config + +# Strip domain in local username? +#StripUserDomain No + +# Do we call fsync() after writing configuration or status files? +#SyncOnClose Yes + +# Default user and group for filters/backends/helper programs; this cannot be +# any user or group that resolves to ID 0 for security reasons... +#User lp +#Group lp + +# Administrator user group, used to match @SYSTEM in cupsd.conf policy rules... +# This cannot contain the Group value for security reasons... +SystemGroup root lpadmin + + +# Are Unix domain socket peer credentials used for authorization? +PeerCred on + +# User that is substituted for unauthenticated (remote) root accesses... +#RemoteRoot remroot + +# Do we allow file: device URIs other than to /dev/null? +#FileDevice No + +# Permissions for configuration and log files... +#ConfigFilePerm 0640 +#LogFilePerm 00640 + +# Specifies the group name or ID that will be used for log files. +# The default group in Debian is "adm". +LogFileGroup adm + +# Location of the file logging all access to the scheduler; may be the name +# "syslog". If not an absolute path, the value of ServerRoot is used as the +# root directory. Also see the "AccessLogLevel" directive in cupsd.conf. +AccessLog /var/log/cups/access_log + +# Location of cache files used by the scheduler... +#CacheDir /var/cache/cups + +# Location of data files used by the scheduler... +#DataDir /usr/share/cups + +# Location of the static web content served by the scheduler... +#DocumentRoot /usr/share/cups/doc-root + +# Location of the file logging all messages produced by the scheduler and any +# helper programs; may be the name "syslog". If not an absolute path, the value +# of ServerRoot is used as the root directory. Also see the "LogLevel" +# directive in cupsd.conf. +ErrorLog /var/log/cups/error_log + +# Location of the file logging all pages printed by the scheduler and any +# helper programs; may be the name "syslog". If not an absolute path, the value +# of ServerRoot is used as the root directory. Also see the "PageLogFormat" +# directive in cupsd.conf. +PageLog /var/log/cups/page_log + +# Location of the file listing all of the local printers... +#Printcap /run/cups/printcap + +# Format of the Printcap file... +#PrintcapFormat bsd +#PrintcapFormat plist +#PrintcapFormat solaris + +# Location of all spool files... +#RequestRoot /var/spool/cups + +# Location of helper programs... +#ServerBin /usr/lib/cups + +# SSL/TLS keychain for the scheduler... +#ServerKeychain ssl + +# Location of other configuration files... +#ServerRoot /etc/cups + +# Location of scheduler state files... +#StateDir /run/cups + +# Location of scheduler/helper temporary files. This directory is emptied on +# scheduler startup and cannot be one of the standard (public) temporary +# directory locations for security reasons... +#TempDir /var/spool/cups/tmp diff --git a/cups-config/cups/cups-pdf.conf b/cups-config/cups/cups-pdf.conf new file mode 100644 index 0000000..8a3391b --- /dev/null +++ b/cups-config/cups/cups-pdf.conf @@ -0,0 +1,306 @@ +# cups-pdf.conf -- CUPS Backend Configuration (version 3.0.2, 2025-03-23) +# 18.09.2005, Volker C. Behr +# volker@cups-pdf.de +# http://www.cups-pdf.de +# +# +# This code may be freely distributed as long as this header +# is preserved. Changes to the code should be clearly indicated. +# +# This code is distributed under the GPL. +# (http://www.gnu.org/copyleft/gpl.html) +# +# For more detailed licensing information see cups-pdf.c in the +# corresponding version number. + +########################################################################### +# # +# This is the configuration file for CUPS-PDF. Values that are not set in # +# here will use the defaults. Changes take effect immediately without the # +# need for restarting any services. # +# # +# Take care not to add whitespaces at the end of a line! # +# # +# Options are marked where they can be set (setting via PPD requires the # +# PPD file that comes with CUPS-PDF to be used!). # +# Options passed via lpoptions that are not named for lpoptions here are # +# ignored. # +# Options precedence is as follows: # +# 1st: lpoptions # +# 2nd: PPD settings # +# 3rd: config file (this file) # +# 4th: default values # +########################################################################### + + +########################################################################### +# # +# Path Settings # +# # +########################################################################### + +### Key: Out (config) +## CUPS-PDF output directory +## special qualifiers: +## ${HOME} will be expanded to the user's home directory +## ${USER} will be expanded to the user name +## in case it is an NFS export make sure it is exported without +## root_squash! +## NOTE: if AppArmor is installed, the AppArmor profile must +## be updated to match the output path below, otherwise file +## writing will be denied by AppArmor. +## See instructions on Ubuntu Launchpad in LP bug #147551. +### Default: /var/spool/cups-pdf/${USER} + +Out ${HOME}/PDF + +### Key: AnonDirName (config) +## ABSOLUTE path for anonymously created PDF files +## if anonymous access is disabled this setting has no effect +### Default: /var/spool/cups-pdf/ANONYMOUS + +#AnonDirName /var/spool/cups-pdf/ANONYMOUS + +### Key: Spool (config) +## CUPS-PDF spool directory - make sure there is no user 'SPOOL' on your +## system or change the path +### Default: /var/spool/cups-pdf/SPOOL + +#Spool /var/spool/cups-pdf/SPOOL + + +########################################################################### +# # +# Filename Settings # +# # +########################################################################### + +### Key: Truncate (config, ppd, lpoptions) +## truncate long filenames to a maximum of characters +## this does not consider the full path to the output but only the filename +## without the .pdf-extension or a job-id prefix (see 'Label') +## the minimal value is 8 +### Default: 64 + +#Truncate 64 + +### Key: Cut (config, lpoptions) +## removing file name extensions before appending .pdf to output +## extensions will only be removed if _both_ the following criteria are met: +## - the extension (w/o the dot) is not longer than characters +## - the remaining filename has a minimal length of 1 character +## set Cut to -1 in order to disable cutting +## recommended values: pure UNIX environment : -1 +## mixed environments : 3 +### Default: 3 + +#Cut 3 + +### Key: Label (config, ppd, lpoptions) +## label all jobs with a unique job-id in order to avoid overwriting old +## files in case new ones with identical names are created; always true for +## untitled documents +## 0: label untitled documents only +## 1: label all documents with a preceeding "job_#-" +## 2: label all documents with a tailing "-job_#" +### Default: 0 + +#Label 0 + +### Key: TitlePref (config, ppd, lpoptions) +## where to look first for a title when creating the output filename +## (title in PS file or title on commandline): +## 0: prefer title from %Title statement in the PS file +## 1: prefer title passed via commandline +### Default: 0 + +#TitlePref 0 + + +########################################################################### +# # +# User Settings # +# # +########################################################################### + +### Key: AnonUser (config) +## uid for anonymous PDF creation (this might be a security issue) +## this setting has no influence on AnonDirName (see there) +## set this to an empty value to disable anonymous +### Default: nobody + +#AnonUser nobody + +### Key: LowerCase (config) +## This options allows to check user names given to CUPS-PDF additionally +## against their lower case variants. This is necessary since in some +## Windows environments only upper case user names are passed. Usually UNIX +## user names are all lower case and it is save to use this option +## but be aware that it can lead to mis-identifications in case +## you have user names that differ only in upper/lower case. +## check only against user name as passed to CUPS : 0 +## check additionally against lower case user name : 1 +### Default: 1 + +#LowerCase 1 + +### Key: UserPrefix (config) +## some installations require a domain prefix added to the user name +## leave empty for no prefix +### Default: + +#UserPrefix + +### Key: DirPrefix (config) +## if a prefix was defined above this switch toggels whether to include +## the prefix in the output directory's name (if not $HOME) or not +## 0: do not include, 1: include +### Default: 0 + +#DirPrefix 0 + +### Key: RemovePrefix (config) +## some installation pass usernames with a prefix (usually a domain name) +## if you do not want this prefix to be used by the ${USER} variable for +## output directories put the part which is to be cut here +### Default: + +#RemovePrefix + + +########################################################################### +# # +# Security Settings # +# # +########################################################################### + +### Key: AnonUMask (config) +## umask for anonymous output +## these are the _inverse_ permissions to be granted +### Default: 0000 + +#AnonUMask 0000 + +### Key: UserUMask (config, lptoptions) +## umask for user output of known users +## changing this can introduce security leaks if confidential +## information is processed! +### Default: 0077 + +#UserUMask 0077 + +### Key: Grp (config) +## group cups-pdf is supposed to run as - this will also be the gid for all +## created directories and log files +### Default: lp + +Grp lpadmin + +### Key: AllowUnsafeOptions (config) +## DON'T CHANGE THIS SETTING UNLESS YOU ABSOLUTELY KNOW WHAT YOU ARE DOING +## set to 1 in order to allow users to override any option - including +## those that pose SEVERE SECURITY RISKS, set to 0 for full security +### Default: 0 + +#AllowUnsafeOptions 0 + + +########################################################################### +# # +# Log Settings # +# # +########################################################################### + +### Key: Log (config) +## CUPS-PDF log directory +## set this to an empty value to disable all logging +### Default: /var/log/cups + +#Log /var/log/cups + +### Key: LogType (config, ppd) +## log-mode +## 1: errors +## 2: status (i.e. activity) +## 4: debug - this will generate a lot of log-output! +## add up values to combine options, i.e. 7 is full logging +## if logging is disabled these setting have no effect +### Default: 3 + +#LogType 3 + + +########################################################################### +# # +# PDF Conversion Settings # +# # +########################################################################### + +### Key: GhostScript (config) +## location of GhostScript binary (gs) +## MacOSX: for using pstopdf (recommended) set this to /usr/bin/pstopdf +## or its proper location on your system +### Default: /usr/bin/gs + +#GhostScript /usr/bin/gs + +### Key: GSTmp (config) +## location of temporary files during GhostScript operation +## this must be user-writable like /var/tmp or /tmp ! +### Default: /var/tmp + +#GSTmp /var/tmp + +### Key: GSCall (config) +## command line for calling GhostScript (!!! DO NOT USE NEWLINES !!!) +## MacOSX: for using pstopdf set this to %s %s -o %s %s +### Default: %s -q -dCompatibilityLevel=%s -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite -sOutputFile="%s" -dAutoRotatePages=/PageByPage -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dPDFSETTINGS=/prepress %s + +#GSCall %s -q -dCompatibilityLevel=%s -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite -sOutputFile="%s" -dAutoRotatePages=/PageByPage -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dPDFSETTINGS=/prepress %s + +### Key: PDFVer (config, ppd, lptopions) +## PDF version to be created - can be "1.5", "1.4", "1.3" or "1.2" +## MacOSX: for using pstopdf set this to an empty value +### Default: 1.4 + +#PDFVer 1.4 + +### Key: PostProcessing (config, lptoptions) +## postprocessing script that will be called after the creation of the PDF +## as arguments the filename of the PDF, the username as determined by +## CUPS-PDF and the one as given to CUPS-PDF will be passed +## the script will be called with user privileges +## set this to an empty value to use no postprocessing +### Default: + +#PostProcessing + + +########################################################################### +# # +# Experimental Settings # +# These settings activate experimental options. If you decide to use # +# them I would appreciate any feedback - including an 'ok' if they # +# work as expected - so I can eventually put them into the non- # +# experimental sections. # +# # +########################################################################### + +### Key: DecodeHexStrings (config) +## this option will try to decode hex strings in the title to allow +## internationalized titles +## (have a look at pstitleconv on www.cups-pdf.de for a suitable filter +## for data from Windows clients) +## 0: disable, 1: enable +### Default: 0 + +DecodeHexStrings 1 + +### Key: FixNewlines (config) +## this option will try to fix various unusal line delimiters (e.g. +## form feeds) +## especially useful when using non-Linux-generated files +## 0: disable, 1: enable +### Default: 0 + +#FixNewlines 0 diff --git a/cups-config/cups/cupsd.conf b/cups-config/cups/cupsd.conf new file mode 100644 index 0000000..e781c07 --- /dev/null +++ b/cups-config/cups/cupsd.conf @@ -0,0 +1,196 @@ +# +# Configuration file for the CUPS scheduler. See "man cupsd.conf" for a +# complete description of this file. +# + +# Log general information in error_log - change "warn" to "debug" +# for troubleshooting... +LogLevel warn +PageLogFormat + +# Specifies the maximum size of the log files before they are rotated. The value "0" disables log rotation. +MaxLogSize 0 + +# Default error policy for printers +ErrorPolicy retry-job + +# Allow remote access +Listen *:631 +ServerAlias * + +# Show shared printers on the local network. +Browsing Yes +BrowseLocalProtocols dnssd + +# Default authentication type, when authentication is required... +DefaultAuthType Basic +DefaultEncryption IfRequested + +# Web interface setting... +WebInterface Yes + +# Timeout after cupsd exits if idle (applied only if cupsd runs on-demand - with -l) +IdleExitTimeout 60 + +# Restrict access to the server... + + Order allow,deny + Allow all + + +# Restrict access to the admin pages... + + Order allow,deny + Allow all + + +# Restrict access to configuration files... + + AuthType Default + Require user @SYSTEM + Order allow,deny + Allow all + + +# Restrict access to log files... + + AuthType Default + Require user @SYSTEM + Order allow,deny + Allow all + + +# Set the default printer/job policies... + + # Job/subscription privacy... + JobPrivateAccess default + JobPrivateValues default + SubscriptionPrivateAccess default + SubscriptionPrivateValues default + + # Job-related operations must be done by the owner or an administrator... + + Order deny,allow + + + + Require user @OWNER @SYSTEM + Order deny,allow + + + # All administration operations require an administrator to authenticate... + + AuthType Default + Require user @SYSTEM + Order deny,allow + + + # All printer operations require a printer operator to authenticate... + + AuthType Default + Require user @SYSTEM + Order deny,allow + + + # Only the owner or an administrator can cancel or authenticate a job... + + Require user @OWNER @SYSTEM + Order deny,allow + + + + Order deny,allow + + + +# Set the authenticated printer/job policies... + + # Job/subscription privacy... + JobPrivateAccess default + JobPrivateValues default + SubscriptionPrivateAccess default + SubscriptionPrivateValues default + + # Job-related operations must be done by the owner or an administrator... + + AuthType Default + Order deny,allow + + + + AuthType Default + Require user @OWNER @SYSTEM + Order deny,allow + + + # All administration operations require an administrator to authenticate... + + AuthType Default + Require user @SYSTEM + Order deny,allow + + + # All printer operations require a printer operator to authenticate... + + AuthType Default + Require user @SYSTEM + Order deny,allow + + + # Only the owner or an administrator can cancel or authenticate a job... + + AuthType Default + Require user @OWNER @SYSTEM + Order deny,allow + + + + Order deny,allow + + + +# Set the kerberized printer/job policies... + + # Job/subscription privacy... + JobPrivateAccess default + JobPrivateValues default + SubscriptionPrivateAccess default + SubscriptionPrivateValues default + + # Job-related operations must be done by the owner or an administrator... + + AuthType Negotiate + Order deny,allow + + + + AuthType Negotiate + Require user @OWNER @SYSTEM + Order deny,allow + + + # All administration operations require an administrator to authenticate... + + AuthType Default + Require user @SYSTEM + Order deny,allow + + + # All printer operations require a printer operator to authenticate... + + AuthType Default + Require user @SYSTEM + Order deny,allow + + + # Only the owner or an administrator can cancel or authenticate a job... + + AuthType Negotiate + Require user @OWNER @SYSTEM + Order deny,allow + + + + Order deny,allow + + diff --git a/cups-config/cups/ppd/dymo.ppd b/cups-config/cups/ppd/dymo.ppd new file mode 100644 index 0000000..57d9c82 --- /dev/null +++ b/cups-config/cups/ppd/dymo.ppd @@ -0,0 +1,628 @@ +*PPD-Adobe: "4.3" + +*% $Id: lw450.ppd 16401 2011-10-31 18:51:16Z pineichen $ + +*% DYMO LabelWriter Drivers +*% Copyright (C) 2009 Sanford L.P. + +*% This program is free software; you can redistribute it and/or +*% modify it under the terms of the GNU General Public License +*% as published by the Free Software Foundation; either version 2 +*% of the License, or (at your option) any later version. + +*% This program is distributed in the hope that it will be useful, +*% but WITHOUT ANY WARRANTY; without even the implied warranty of +*% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +*% GNU General Public License for more details. + +*% You should have received a copy of the GNU General Public License +*% along with this program; if not, write to the Free Software +*% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*FormatVersion: "4.3" +*FileVersion: "3.0" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "LW450.PPD" +*Manufacturer: "DYMO" +*Product: "(DYMO LabelWriter 450)" +*cupsVersion: 1.2 +*cupsManualCopies: False +*cupsFilter: "application/vnd.cups-raster 0 raster2dymolw" +*cupsModelNumber: 0 +*PSVersion: "(3010.000) 550" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "8" +*LandscapeOrientation: Minus90 +*TTRasterizer: Type42 + +*ModelName: "DYMO LabelWriter 450" +*NickName: "DYMO LabelWriter 450" +*ShortNickName: "DYMO LabelWriter 450" +*APPrinterIconPath: "/Library/Printers/DYMO/CUPS/Resources/LW450.icns" + +*cupsIPPReason com.dymo.out-of-paper-error/Out of labels. : "" +*cupsIPPReason com.dymo.read-error/Cannot read data from printer. : "" +*cupsIPPReason com.dymo.ready/Printer is ready. : "" +*cupsIPPReason com.dymo.general-error/General print error. : "" +*cupsIPPReason com.dymo.head-overheat-error/Print head is overheated. : "" +*cupsIPPReason com.dymo.slot-status-error/Label path is blocked. : "" +*cupsIPPReason com.dymo.busy-error/The printer is currently in use. : "" +*cupsIPPReason com.dymo.paper-size-error/Label being printed does not match label width currently in printer. : "" +*cupsIPPReason com.dymo.paper-size-undefine-error/Insert a label cassette in the printer. : "" + +*de.cupsIPPReason com.dymo.out-of-paper-error/Keine Etiketten mehr. : "" +*de.cupsIPPReason com.dymo.read-error/Kann keine Daten vom Drucker lesen. : "" +*de.cupsIPPReason com.dymo.ready/Drucker ist bereit. : "" +*de.cupsIPPReason com.dymo.general-error/Allgemeiner Fehler beim Drucken. : "" +*de.cupsIPPReason com.dymo.head-overheat-error/Druckkopf ist zu heiß. : "" +*de.cupsIPPReason com.dymo.slot-status-error/Etikettenzuführung ist blockiert. : "" +*de.cupsIPPReason com.dymo.busy-error/Der Drucker wird gegenwärtig verwendet. : "" +*de.cupsIPPReason com.dymo.paper-size-error/Zu druckendes Etikett passt nicht zur Breite der Etiketten im Drucker. : "" +*de.cupsIPPReason com.dymo.paper-size-undefine-error/Legen Sie eine Etikettenkassette in den Drucker ein. : "" + +*es.cupsIPPReason com.dymo.out-of-paper-error/No tiene etiquetas. : "" +*es.cupsIPPReason com.dymo.read-error/No se pueden leer los datos de la impresora. : "" +*es.cupsIPPReason com.dymo.ready/La impresora está lista. : "" +*es.cupsIPPReason com.dymo.general-error/Erreur d'impression générale. : "" +*es.cupsIPPReason com.dymo.head-overheat-error/El cabezal de impresión está sobrecalentado. : "" +*es.cupsIPPReason com.dymo.slot-status-error/La trayectoria de la etiqueta está bloqueada. : "" +*es.cupsIPPReason com.dymo.busy-error/La impresora se encuentra actualmente en uso. : "" +*es.cupsIPPReason com.dymo.paper-size-error/La etiqueta que se imprime no coincide con el ancho actual de la impresora. : "" +*es.cupsIPPReason com.dymo.paper-size-undefine-error/Inserte un cartucho de etiquetas en la impresora. : "" + +*es_CO.cupsIPPReason com.dymo.out-of-paper-error/No tiene etiquetas. : "" +*es_CO.cupsIPPReason com.dymo.read-error/No se pueden leer los datos de la impresora. : "" +*es_CO.cupsIPPReason com.dymo.ready/La impresora está lista. : "" +*es_CO.cupsIPPReason com.dymo.general-error/Erreur d'impression générale. : "" +*es_CO.cupsIPPReason com.dymo.head-overheat-error/El cabezal de impresión está sobrecalentado. : "" +*es_CO.cupsIPPReason com.dymo.slot-status-error/La trayectoria de la etiqueta está bloqueada. : "" +*es_CO.cupsIPPReason com.dymo.busy-error/La impresora se encuentra actualmente en uso. : "" +*es_CO.cupsIPPReason com.dymo.paper-size-error/La etiqueta que se imprime no coincide con el ancho actual de la impresora. : "" +*es_CO.cupsIPPReason com.dymo.paper-size-undefine-error/Inserte un cartucho de etiquetas en la impresora. : "" + +*fr.cupsIPPReason com.dymo.out-of-paper-error/Quantité d’étiquettes insuffisante. : "" +*fr.cupsIPPReason com.dymo.read-error/Impossible de lire les données depuis l'imprimante. : "" +*fr.cupsIPPReason com.dymo.ready/Imprimante prête. : "" +*fr.cupsIPPReason com.dymo.general-error/Erreur d'impression générale. : "" +*fr.cupsIPPReason com.dymo.head-overheat-error/Tête d'impression surchauffée. : "" +*fr.cupsIPPReason com.dymo.slot-status-error/Chemin des étiquettes bloqué. : "" +*fr.cupsIPPReason com.dymo.busy-error/Imprimante en cours d'utilisation. : "" +*fr.cupsIPPReason com.dymo.paper-size-error/Étiquette en cours d'impression pas de la même largeur que dans l'imprimante. : "" +*fr.cupsIPPReason com.dymo.paper-size-undefine-error/Insérer une cassette d'étiquettes dans l'imprimante. : "" + +*fr_CA.cupsIPPReason com.dymo.out-of-paper-error/Quantité d’étiquettes insuffisante. : "" +*fr_CA.cupsIPPReason com.dymo.read-error/Impossible de lire les données depuis l'imprimante. : "" +*fr_CA.cupsIPPReason com.dymo.ready/Imprimante prête. : "" +*fr_CA.cupsIPPReason com.dymo.general-error/Erreur d'impression générale. : "" +*fr_CA.cupsIPPReason com.dymo.head-overheat-error/Tête d'impression surchauffée. : "" +*fr_CA.cupsIPPReason com.dymo.slot-status-error/Chemin des étiquettes bloqué. : "" +*fr_CA.cupsIPPReason com.dymo.busy-error/Imprimante en cours d'utilisation. : "" +*fr_CA.cupsIPPReason com.dymo.paper-size-error/Étiquette en cours d'impression pas de la même largeur que dans l'imprimante. : "" +*fr_CA.cupsIPPReason com.dymo.paper-size-undefine-error/Insérer une cassette d'étiquettes dans l'imprimante. : "" + +*it.cupsIPPReason com.dymo.out-of-paper-error/Etichette esaurite. : "" +*it.cupsIPPReason com.dymo.read-error/Impossibile leggere i dati dalla stampante. : "" +*it.cupsIPPReason com.dymo.ready/Stampante pronta. : "" +*it.cupsIPPReason com.dymo.general-error/Errore generico di stampa. : "" +*it.cupsIPPReason com.dymo.head-overheat-error/Testina di stampa surriscaldata. : "" +*it.cupsIPPReason com.dymo.slot-status-error/Percorso etichetta bloccato. : "" +*it.cupsIPPReason com.dymo.busy-error/Stampante attualmente in uso. : "" +*it.cupsIPPReason com.dymo.paper-size-error/L'etichetta in stampa è diversa dalla larghezza impostata nella stampante. : "" +*it.cupsIPPReason com.dymo.paper-size-undefine-error/Inserire una cartuccia etichette nella stampante. : "" + +*nl.cupsIPPReason com.dymo.out-of-paper-error/Labels zijn op. : "" +*nl.cupsIPPReason com.dymo.read-error/Kan gegevens van de printer niet lezen. : "" +*nl.cupsIPPReason com.dymo.ready/Printer is gereed. : "" +*nl.cupsIPPReason com.dymo.general-error/Algemene afdrukfout. : "" +*nl.cupsIPPReason com.dymo.head-overheat-error/Printkop is oververhit. : "" +*nl.cupsIPPReason com.dymo.slot-status-error/Labelspoor is geblokkeerd. : "" +*nl.cupsIPPReason com.dymo.busy-error/De printer is momenteel in gebruik. : "" +*nl.cupsIPPReason com.dymo.paper-size-error/De af te drukken label komt niet overeen met de labelbreedte in de printer. : "" +*nl.cupsIPPReason com.dymo.paper-size-undefine-error/Plaats een labelcassette in de printer. : "" + +*pt.cupsIPPReason com.dymo.out-of-paper-error/Sem etiquetas. : "" +*pt.cupsIPPReason com.dymo.read-error/Não é possível ler dados da impressora. : "" +*pt.cupsIPPReason com.dymo.ready/A impressora está pronta. : "" +*pt.cupsIPPReason com.dymo.general-error/Erro geral de impressão. : "" +*pt.cupsIPPReason com.dymo.head-overheat-error/A cabeça de impressão está superaquecida. : "" +*pt.cupsIPPReason com.dymo.slot-status-error/O caminho da etiqueta está bloqueado. : "" +*pt.cupsIPPReason com.dymo.busy-error/A impressora está em uso no momento. : "" +*pt.cupsIPPReason com.dymo.paper-size-error/A etiqueta sendo impressa não coincide com a largura da etiqueta na impressora. : "" +*pt.cupsIPPReason com.dymo.paper-size-undefine-error/Inserir um cassete de etiquetas na impressora. : "" + +*pt_BR.cupsIPPReason com.dymo.out-of-paper-error/Sem etiquetas. : "" +*pt_BR.cupsIPPReason com.dymo.read-error/Não é possível ler dados da impressora. : "" +*pt_BR.cupsIPPReason com.dymo.ready/A impressora está pronta. : "" +*pt_BR.cupsIPPReason com.dymo.general-error/Erro geral de impressão. : "" +*pt_BR.cupsIPPReason com.dymo.head-overheat-error/A cabeça de impressão está superaquecida. : "" +*pt_BR.cupsIPPReason com.dymo.slot-status-error/O caminho da etiqueta está bloqueado. : "" +*pt_BR.cupsIPPReason com.dymo.busy-error/A impressora está em uso no momento. : "" +*pt_BR.cupsIPPReason com.dymo.paper-size-error/A etiqueta sendo impressa não coincide com a largura da etiqueta na impressora. : "" +*pt_BR.cupsIPPReason com.dymo.paper-size-undefine-error/Inserir um cassete de etiquetas na impressora. : "" + +*OpenUI *PageSize/Media Size: PickOne +*OrderDependency: 10 AnySetup *PageSize +*DefaultPageSize: w102h252.1 +*PageSize w154h64/11351 Jewelry Label: "<>setpagedevice" +*PageSize w72h154/11352 Return Address Int: "<>setpagedevice" +*PageSize w72h72/11353 Multi-Purpose: "<>setpagedevice" +*PageSize w162h90/11354 Multi-Purpose: "<>setpagedevice" +*PageSize w54h144/11355 Multi-Purpose: "<>setpagedevice" +*PageSize w118h252/11356 White Name badge: "<>setpagedevice" +*PageSize w167h188/14681 CD/DVD Label: "<>setpagedevice" +*PageSize w79h252/30252 Address: "<>setpagedevice" +*PageSize w167h252/30253 Address (2 up): "<>setpagedevice" +*PageSize w167h288/30256 Shipping: "<>setpagedevice" +*PageSize w154h198/30258 Diskette: "<>setpagedevice" +*PageSize w82h248/30277 File Folder (2 up): "<>setpagedevice" +*PageSize w154h64.1/30299 Jewelry Label (2 up): "<>setpagedevice" +*PageSize w79h252.1/30320 Address: "<>setpagedevice" +*PageSize w102h252/30321 Large Address: "<>setpagedevice" +*PageSize w154h286/30323 Shipping: "<>setpagedevice" +*PageSize w154h198.1/30324 Diskette: "<>setpagedevice" +*PageSize w54h424/30325 Video Spine: "<>setpagedevice" +*PageSize w131h221/30326 Video Top: "<>setpagedevice" +*PageSize w57h248/30327 File Folder: "<>setpagedevice" +*PageSize w54h144.1/30330 Return Address: "<>setpagedevice" +*PageSize w72h72.1/30332 1 in x 1 in: "<>setpagedevice" +*PageSize w72h72.2/30333 1/2 in x 1 in (2 up): "<>setpagedevice" +*PageSize w162h90.1/30334 2-1/4 in x 1-1/4 in: "<>setpagedevice" +*PageSize 30334_2-1_4_in_x_1-1_4_in/30334 2-1/4 in x 1-1/4 in: "<>setpagedevice" +*PageSize w73h86/30335 1/2 in x 1/2 in (4 up): "<>setpagedevice" +*PageSize w72h154.1/30336 1 in x 2-1/8 in: "<>setpagedevice" +*PageSize w118h252.1/30337 Audio Cassette: "<>setpagedevice" +*PageSize w54h203/30339 8mm Video (2 up): "<>setpagedevice" +*PageSize w54h180/30345 3/4 in x 2-1/2 in: "<>setpagedevice" +*PageSize w36h136/30346 1/2 in x 1-7/8 in: "<>setpagedevice" +*PageSize w72h108/30347 1 in x 1-1/2 in: "<>setpagedevice" +*PageSize w65h90/30348 9/10 in x 1-1/4 in: "<>setpagedevice" +*PageSize w167h288.1/30364 Name Badge Label: "<>setpagedevice" +*PageSize w168h252/30365 Name Badge Card: "<>setpagedevice" +*PageSize w144h169/30370 Zip Disk: "<>setpagedevice" +*PageSize w71h144/30373 Price Tag Label: "<>setpagedevice" +*PageSize w144h252/30374 Appointment Card: "<>setpagedevice" +*PageSize w80h144/30376 Hanging File Insert: "<>setpagedevice" +*PageSize w162h504/30383 PC Postage 3-Part: "<>setpagedevice" +*PageSize 30383_PC_Postage_3-Part/30383 PC Postage 3-Part: "<>setpagedevice" +*PageSize w167h540/30384 PC Postage 2-Part: "<>setpagedevice" +*PageSize 30384_PC_Postage_2-Part/30384 PC Postage 2-Part: "<>setpagedevice" +*PageSize w167h756/30387 PC Postage EPS: "<>setpagedevice" +*PageSize 30387_PC_Postage_EPS/30387 PC Postage EPS: "<>setpagedevice" +*PageSize w167h188.1/30854 CD Label: "<>setpagedevice" +*PageSize w176h292/30856 Badge Card Label: "<>setpagedevice" +*PageSize w167h288.2/30857 Badge Label: "<>setpagedevice" +*PageSize w112h126/30886 CD Label: "<>setpagedevice" +*PageSize w79h252.2/99010 Standard Address: "<>setpagedevice" +*PageSize w102h252.1/99012 Large Address: "<>setpagedevice" +*PageSize w154h286.1/99014 Name Badge Label: "<>setpagedevice" +*PageSize w154h286.2/99014 Shipping: "<>setpagedevice" +*PageSize w154h198.2/99015 Diskette: "<>setpagedevice" +*PageSize w63h419/99016 Video Spine: "<>setpagedevice" +*PageSize w139h221/99016 Video Top: "<>setpagedevice" +*PageSize w36h144/99017 Suspension File: "<>setpagedevice" +*PageSize w108h539/99018 Small Lever Arch: "<>setpagedevice" +*PageSize w167h539/99019 Large Lever Arch: "<>setpagedevice" +*PageSize w154h7680/Banner: "<>setpagedevice" +*PageSize w154h792/Continuous, Wide: "<>setpagedevice" +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 10 AnySetup *PageRegion +*DefaultPageRegion: w102h252.1 +*PageRegion w154h64/11351 Jewelry Label: "<>setpagedevice" +*PageRegion w72h154/11352 Return Address Int: "<>setpagedevice" +*PageRegion w72h72/11353 Multi-Purpose: "<>setpagedevice" +*PageRegion w162h90/11354 Multi-Purpose: "<>setpagedevice" +*PageRegion w54h144/11355 Multi-Purpose: "<>setpagedevice" +*PageRegion w118h252/11356 White Name badge: "<>setpagedevice" +*PageRegion w167h188/14681 CD/DVD Label: "<>setpagedevice" +*PageRegion w79h252/30252 Address: "<>setpagedevice" +*PageRegion w167h252/30253 Address (2 up): "<>setpagedevice" +*PageRegion w167h288/30256 Shipping: "<>setpagedevice" +*PageRegion w154h198/30258 Diskette: "<>setpagedevice" +*PageRegion w82h248/30277 File Folder (2 up): "<>setpagedevice" +*PageRegion w154h64.1/30299 Jewelry Label (2 up): "<>setpagedevice" +*PageRegion w79h252.1/30320 Address: "<>setpagedevice" +*PageRegion w102h252/30321 Large Address: "<>setpagedevice" +*PageRegion w154h286/30323 Shipping: "<>setpagedevice" +*PageRegion w154h198.1/30324 Diskette: "<>setpagedevice" +*PageRegion w54h424/30325 Video Spine: "<>setpagedevice" +*PageRegion w131h221/30326 Video Top: "<>setpagedevice" +*PageRegion w57h248/30327 File Folder: "<>setpagedevice" +*PageRegion w54h144.1/30330 Return Address: "<>setpagedevice" +*PageRegion w72h72.1/30332 1 in x 1 in: "<>setpagedevice" +*PageRegion w72h72.2/30333 1/2 in x 1 in (2 up): "<>setpagedevice" +*PageRegion w162h90.1/30334 2-1/4 in x 1-1/4 in: "<>setpagedevice" +*PageRegion 30334_2-1_4_in_x_1-1_4_in/30334 2-1/4 in x 1-1/4 in: "<>setpagedevice" +*PageRegion w73h86/30335 1/2 in x 1/2 in (4 up): "<>setpagedevice" +*PageRegion w72h154.1/30336 1 in x 2-1/8 in: "<>setpagedevice" +*PageRegion w118h252.1/30337 Audio Cassette: "<>setpagedevice" +*PageRegion w54h203/30339 8mm Video (2 up): "<>setpagedevice" +*PageRegion w54h180/30345 3/4 in x 2-1/2 in: "<>setpagedevice" +*PageRegion w36h136/30346 1/2 in x 1-7/8 in: "<>setpagedevice" +*PageRegion w72h108/30347 1 in x 1-1/2 in: "<>setpagedevice" +*PageRegion w65h90/30348 9/10 in x 1-1/4 in: "<>setpagedevice" +*PageRegion w167h288.1/30364 Name Badge Label: "<>setpagedevice" +*PageRegion w168h252/30365 Name Badge Card: "<>setpagedevice" +*PageRegion w144h169/30370 Zip Disk: "<>setpagedevice" +*PageRegion w71h144/30373 Price Tag Label: "<>setpagedevice" +*PageRegion w144h252/30374 Appointment Card: "<>setpagedevice" +*PageRegion w80h144/30376 Hanging File Insert: "<>setpagedevice" +*PageRegion w162h504/30383 PC Postage 3-Part: "<>setpagedevice" +*PageRegion 30383_PC_Postage_3-Part/30383 PC Postage 3-Part: "<>setpagedevice" +*PageRegion w167h540/30384 PC Postage 2-Part: "<>setpagedevice" +*PageRegion 30384_PC_Postage_2-Part/30384 PC Postage 2-Part: "<>setpagedevice" +*PageRegion w167h756/30387 PC Postage EPS: "<>setpagedevice" +*PageRegion 30387_PC_Postage_EPS/30387 PC Postage EPS: "<>setpagedevice" +*PageRegion w167h188.1/30854 CD Label: "<>setpagedevice" +*PageRegion w176h292/30856 Badge Card Label: "<>setpagedevice" +*PageRegion w167h288.2/30857 Badge Label: "<>setpagedevice" +*PageRegion w112h126/30886 CD Label: "<>setpagedevice" +*PageRegion w79h252.2/99010 Standard Address: "<>setpagedevice" +*PageRegion w102h252.1/99012 Large Address: "<>setpagedevice" +*PageRegion w154h286.1/99014 Name Badge Label: "<>setpagedevice" +*PageRegion w154h286.2/99014 Shipping: "<>setpagedevice" +*PageRegion w154h198.2/99015 Diskette: "<>setpagedevice" +*PageRegion w63h419/99016 Video Spine: "<>setpagedevice" +*PageRegion w139h221/99016 Video Top: "<>setpagedevice" +*PageRegion w36h144/99017 Suspension File: "<>setpagedevice" +*PageRegion w108h539/99018 Small Lever Arch: "<>setpagedevice" +*PageRegion w167h539/99019 Large Lever Arch: "<>setpagedevice" +*PageRegion w154h7680/Banner: "<>setpagedevice" +*PageRegion w154h792/Continuous, Wide: "<>setpagedevice" +*CloseUI: *PageRegion + +*DefaultImageableArea: w102h252.1 +*ImageableArea w154h64/11351 Jewelry Label: "0.00 4.32 150.72 58.80" +*ImageableArea w72h154/11352 Return Address Int: "4.08 4.32 69.12 146.64" +*ImageableArea w72h72/11353 Multi-Purpose: "4.08 4.32 69.12 65.28" +*ImageableArea w162h90/11354 Multi-Purpose: "2.88 4.32 159.12 85.68" +*ImageableArea w54h144/11355 Multi-Purpose: "4.08 4.32 51.12 127.68" +*ImageableArea w118h252/11356 White Name badge: "4.08 4.32 114.24 235.44" +*ImageableArea w167h188/14681 CD/DVD Label: "4.08 17.04 161.28 170.40" +*ImageableArea w79h252/30252 Address: "4.32 4.32 76.08 235.44" +*ImageableArea w167h252/30253 Address (2 up): "4.08 4.32 163.44 235.68" +*ImageableArea w167h288/30256 Shipping: "4.08 4.32 163.68 271.20" +*ImageableArea w154h198/30258 Diskette: "4.08 4.32 150.24 182.16" +*ImageableArea w82h248/30277 File Folder (2 up): "4.32 4.32 78.24 233.04" +*ImageableArea w154h64.1/30299 Jewelry Label (2 up): "0.00 4.32 150.72 58.80" +*ImageableArea w79h252.1/30320 Address: "4.32 4.32 76.08 235.44" +*ImageableArea w102h252/30321 Large Address: "4.32 4.32 98.40 234.96" +*ImageableArea w154h286/30323 Shipping: "4.32 4.32 150.24 270.48" +*ImageableArea w154h198.1/30324 Diskette: "2.88 4.32 150.24 182.16" +*ImageableArea w54h424/30325 Video Spine: "2.88 4.32 51.12 407.28" +*ImageableArea w131h221/30326 Video Top: "4.08 4.32 127.68 204.72" +*ImageableArea w57h248/30327 File Folder: "0.00 4.32 53.52 231.60" +*ImageableArea w54h144.1/30330 Return Address: "4.08 4.32 51.12 127.68" +*ImageableArea w72h72.1/30332 1 in x 1 in: "4.08 4.32 69.12 64.80" +*ImageableArea w72h72.2/30333 1/2 in x 1 in (2 up): "4.08 4.32 69.12 65.28" +*ImageableArea w162h90.1/30334 2-1/4 in x 1-1/4 in: "2.88 4.32 159.12 85.68" +*ImageableArea 30334_2-1_4_in_x_1-1_4_in/30334 2-1/4 in x 1-1/4 in: "2.88 4.32 159.12 85.68" +*ImageableArea w73h86/30335 1/2 in x 1/2 in (4 up): "0.00 4.32 70.08 81.12" +*ImageableArea w72h154.1/30336 1 in x 2-1/8 in: "4.08 4.32 69.12 146.64" +*ImageableArea w118h252.1/30337 Audio Cassette: "4.08 4.32 114.24 235.44" +*ImageableArea w54h203/30339 8mm Video (2 up): "4.08 4.32 51.12 186.72" +*ImageableArea w54h180/30345 3/4 in x 2-1/2 in: "4.08 4.32 51.12 163.68" +*ImageableArea w36h136/30346 1/2 in x 1-7/8 in: "4.08 4.32 33.12 118.80" +*ImageableArea w72h108/30347 1 in x 1-1/2 in: "4.08 4.32 69.12 91.68" +*ImageableArea w65h90/30348 9/10 in x 1-1/4 in: "5.04 4.32 61.92 73.68" +*ImageableArea w167h288.1/30364 Name Badge Label: "4.08 4.32 163.68 271.20" +*ImageableArea w168h252/30365 Name Badge Card: "0.00 4.32 161.28 225.12" +*ImageableArea w144h169/30370 Zip Disk: "4.32 4.32 141.12 152.88" +*ImageableArea w71h144/30373 Price Tag Label: "0.00 85.44 67.44 139.68" +*ImageableArea w144h252/30374 Appointment Card: "8.64 4.32 141.12 225.12" +*ImageableArea w80h144/30376 Hanging File Insert: "8.64 4.32 76.32 121.44" +*ImageableArea w162h504/30383 PC Postage 3-Part: "4.08 4.32 159.12 488.16" +*ImageableArea 30383_PC_Postage_3-Part/30383 PC Postage 3-Part: "4.08 4.32 159.12 488.16" +*ImageableArea w167h540/30384 PC Postage 2-Part: "4.08 4.32 163.68 524.16" +*ImageableArea 30384_PC_Postage_2-Part/30384 PC Postage 2-Part: "4.08 4.32 163.68 524.16" +*ImageableArea w167h756/30387 PC Postage EPS: "4.08 4.32 163.68 740.16" +*ImageableArea 30387_PC_Postage_EPS/30387 PC Postage EPS: "4.08 4.32 163.68 740.16" +*ImageableArea w167h188.1/30854 CD Label: "4.08 17.04 161.28 170.40" +*ImageableArea w176h292/30856 Badge Card Label: "0.00 4.32 161.28 264.72" +*ImageableArea w167h288.2/30857 Badge Label: "4.08 4.32 163.68 271.20" +*ImageableArea w112h126/30886 CD Label: "4.32 18.00 102.24 110.16" +*ImageableArea w79h252.2/99010 Standard Address: "4.32 4.32 76.08 235.44" +*ImageableArea w102h252.1/99012 Large Address: "0.00 0.00 102.00 252.00" +*ImageableArea w154h286.1/99014 Name Badge Label: "4.32 4.32 150.24 270.48" +*ImageableArea w154h286.2/99014 Shipping: "4.32 4.32 150.24 270.48" +*ImageableArea w154h198.2/99015 Diskette: "2.88 4.32 150.24 182.16" +*ImageableArea w63h419/99016 Video Spine: "0.00 4.32 59.52 402.24" +*ImageableArea w139h221/99016 Video Top: "0.00 4.32 136.08 204.48" +*ImageableArea w36h144/99017 Suspension File: "2.88 4.32 33.12 127.92" +*ImageableArea w108h539/99018 Small Lever Arch: "4.08 4.32 104.88 522.72" +*ImageableArea w167h539/99019 Large Lever Arch: "4.08 4.32 163.68 522.72" +*ImageableArea w154h7680/Banner: "4.08 17.04 148.08 7663.92" +*ImageableArea w154h792/Continuous, Wide: "4.32 4.32 150.24 775.68" + +*DefaultPaperDimension: w102h252.1 +*PaperDimension w154h64/11351 Jewelry Label: "153.60 63.12" +*PaperDimension w72h154/11352 Return Address Int: "72.00 153.12" +*PaperDimension w72h72/11353 Multi-Purpose: "72.00 72.00" +*PaperDimension w162h90/11354 Multi-Purpose: "162.00 90.00" +*PaperDimension w54h144/11355 Multi-Purpose: "54.00 144.00" +*PaperDimension w118h252/11356 White Name badge: "117.12 252.00" +*PaperDimension w167h188/14681 CD/DVD Label: "166.32 187.20" +*PaperDimension w79h252/30252 Address: "78.96 252.00" +*PaperDimension w167h252/30253 Address (2 up): "166.32 252.00" +*PaperDimension w167h288/30256 Shipping: "166.56 288.00" +*PaperDimension w154h198/30258 Diskette: "153.12 198.00" +*PaperDimension w82h248/30277 File Folder (2 up): "81.12 247.44" +*PaperDimension w154h64.1/30299 Jewelry Label (2 up): "153.60 63.12" +*PaperDimension w79h252.1/30320 Address: "78.96 252.00" +*PaperDimension w102h252/30321 Large Address: "101.28 251.04" +*PaperDimension w154h286/30323 Shipping: "153.12 285.84" +*PaperDimension w154h198.1/30324 Diskette: "153.12 198.00" +*PaperDimension w54h424/30325 Video Spine: "54.00 423.12" +*PaperDimension w131h221/30326 Video Top: "130.56 220.56" +*PaperDimension w57h248/30327 File Folder: "56.40 247.44" +*PaperDimension w54h144.1/30330 Return Address: "54.00 144.00" +*PaperDimension w72h72.1/30332 1 in x 1 in: "72.00 72.00" +*PaperDimension w72h72.2/30333 1/2 in x 1 in (2 up): "72.00 72.00" +*PaperDimension w162h90.1/30334 2-1/4 in x 1-1/4 in: "162.00 90.00" +*PaperDimension 30334_2-1_4_in_x_1-1_4_in/30334 2-1/4 in x 1-1/4 in: "162.00 90.00" +*PaperDimension w73h86/30335 1/2 in x 1/2 in (4 up): "72.96 85.44" +*PaperDimension w72h154.1/30336 1 in x 2-1/8 in: "72.00 153.12" +*PaperDimension w118h252.1/30337 Audio Cassette: "117.12 252.00" +*PaperDimension w54h203/30339 8mm Video (2 up): "54.00 202.56" +*PaperDimension w54h180/30345 3/4 in x 2-1/2 in: "54.00 180.00" +*PaperDimension w36h136/30346 1/2 in x 1-7/8 in: "36.00 135.12" +*PaperDimension w72h108/30347 1 in x 1-1/2 in: "72.00 108.00" +*PaperDimension w65h90/30348 9/10 in x 1-1/4 in: "64.80 90.00" +*PaperDimension w167h288.1/30364 Name Badge Label: "166.56 288.00" +*PaperDimension w168h252/30365 Name Badge Card: "167.04 252.00" +*PaperDimension w144h169/30370 Zip Disk: "144.00 168.72" +*PaperDimension w71h144/30373 Price Tag Label: "70.32 144.00" +*PaperDimension w144h252/30374 Appointment Card: "144.00 252.00" +*PaperDimension w80h144/30376 Hanging File Insert: "79.20 144.00" +*PaperDimension w162h504/30383 PC Postage 3-Part: "162.00 504.00" +*PaperDimension 30383_PC_Postage_3-Part/30383 PC Postage 3-Part: "162.00 504.00" +*PaperDimension w167h540/30384 PC Postage 2-Part: "166.56 540.00" +*PaperDimension 30384_PC_Postage_2-Part/30384 PC Postage 2-Part: "166.56 540.00" +*PaperDimension w167h756/30387 PC Postage EPS: "166.56 756.00" +*PaperDimension 30387_PC_Postage_EPS/30387 PC Postage EPS: "166.56 756.00" +*PaperDimension w167h188.1/30854 CD Label: "166.32 187.20" +*PaperDimension w176h292/30856 Badge Card Label: "175.44 291.60" +*PaperDimension w167h288.2/30857 Badge Label: "166.56 288.00" +*PaperDimension w112h126/30886 CD Label: "111.36 126.00" +*PaperDimension w79h252.2/99010 Standard Address: "78.96 252.00" +*PaperDimension w102h252.1/99012 Large Address: "101.28 251.04" +*PaperDimension w154h286.1/99014 Name Badge Label: "153.12 285.84" +*PaperDimension w154h286.2/99014 Shipping: "153.12 285.84" +*PaperDimension w154h198.2/99015 Diskette: "153.12 198.00" +*PaperDimension w63h419/99016 Video Spine: "62.40 418.56" +*PaperDimension w139h221/99016 Video Top: "138.96 220.56" +*PaperDimension w36h144/99017 Suspension File: "36.00 144.00" +*PaperDimension w108h539/99018 Small Lever Arch: "107.76 538.56" +*PaperDimension w167h539/99019 Large Lever Arch: "166.56 538.56" +*PaperDimension w154h7680/Banner: "153.12 7680.00" +*PaperDimension w154h792/Continuous, Wide: "153.12 792.00" + +*% Custom page size support +*HWMargins: 0 0 0 0 +*NonUIOrderDependency: 100 AnySetup *CustomPageSize True +*CustomPageSize True/Custom Page Size: "pop pop pop <>setpagedevice" +*ParamCustomPageSize Width: 1 points 10 161.28 +*ParamCustomPageSize Height: 2 points 10 7680 +*ParamCustomPageSize WidthOffset/Width Offset: 3 points 0 0 +*ParamCustomPageSize HeightOffset/Height Offset: 4 points 0 0 +*ParamCustomPageSize Orientation: 5 int 0 0 + +*OpenUI *Resolution/Output Resolution: PickOne +*OrderDependency: 20 AnySetup *Resolution +*DefaultResolution: 300dpi +*Resolution 300dpi/300 DPI: "<>setpagedevice" +*Resolution 300x600dpi/300x600 DPI: "<>setpagedevice" +*CloseUI: *Resolution + +*OpenUI *DymoHalftoning/Halftoning: PickOne +*OrderDependency: 20 AnySetup *DymoHalftoning +*DefaultDymoHalftoning: ErrorDiffusion +*DymoHalftoning Default/Default: "<>setpagedevice" +*DymoHalftoning ErrorDiffusion/Error Diffusion: "<>setpagedevice" +*DymoHalftoning NLL/Nonlinear Dithering: "<>setpagedevice" + +*de.Translation DymoHalftoning/Halbtöne: "" +*de.DymoHalftoning Default/Standard: "" +*de.DymoHalftoning ErrorDiffusion/Fehlerstreuung: "" +*de.DymoHalftoning NLL/Nichtlineare Farbmischung: "" + +*es.Translation DymoHalftoning/Proceso de semitono: "" +*es.DymoHalftoning Default/Predeterminado: "" +*es.DymoHalftoning ErrorDiffusion/Difusión de errores: "" +*es.DymoHalftoning NLL/Interpolación no linear: "" + +*es_CO.Translation DymoHalftoning/Proceso de semitono: "" +*es_CO.DymoHalftoning Default/Predeterminado: "" +*es_CO.DymoHalftoning ErrorDiffusion/Difusión de errores: "" +*es_CO.DymoHalftoning NLL/Interpolación no linear: "" + +*fr.Translation DymoHalftoning/Tramage: "" +*fr.DymoHalftoning Default/Par défaut: "" +*fr.DymoHalftoning ErrorDiffusion/Diffusion d'erreur: "" +*fr.DymoHalftoning NLL/Juxtaposition non linéaire: "" + +*fr_CA.Translation DymoHalftoning/Tramage: "" +*fr_CA.DymoHalftoning Default/Par défaut: "" +*fr_CA.DymoHalftoning ErrorDiffusion/Diffusion d'erreur: "" +*fr_CA.DymoHalftoning NLL/Juxtaposition non linéaire: "" + +*it.Translation DymoHalftoning/Mezzitoni: "" +*it.DymoHalftoning Default/Predefinito: "" +*it.DymoHalftoning ErrorDiffusion/Diffusione errore: "" +*it.DymoHalftoning NLL/Retino non lineare: "" + +*nl.Translation DymoHalftoning/Halftoon: "" +*nl.DymoHalftoning Default/Standaard: "" +*nl.DymoHalftoning ErrorDiffusion/Foutdiffusie: "" +*nl.DymoHalftoning NLL/Niet-lineaire rastering: "" + +*pt.Translation DymoHalftoning/Meio-tom: "" +*pt.DymoHalftoning Default/Padrão: "" +*pt.DymoHalftoning ErrorDiffusion/Difusão de erro: "" +*pt.DymoHalftoning NLL/Pontilhado não linear: "" + +*pt_BR.Translation DymoHalftoning/Meio-tom: "" +*pt_BR.DymoHalftoning Default/Padrão: "" +*pt_BR.DymoHalftoning ErrorDiffusion/Difusão de erro: "" +*pt_BR.DymoHalftoning NLL/Pontilhado não linear: "" + +*CloseUI: *DymoHalftoning + +*OpenUI *DymoPrintDensity/Print Density: PickOne +*OrderDependency: 20 AnySetup *DymoPrintDensity +*DefaultDymoPrintDensity: Normal +*DymoPrintDensity Light/Light: "" +*DymoPrintDensity Medium/Medium: "" +*DymoPrintDensity Normal/Normal: "" +*DymoPrintDensity Dark/Dark: "" + +*de.Translation DymoPrintDensity/Druckdichte: "" +*de.DymoPrintDensity Light/Niedrig: "" +*de.DymoPrintDensity Medium/Mittel: "" +*de.DymoPrintDensity Normal/Normal: "" +*de.DymoPrintDensity Dark/Hoch: "" + +*es.Translation DymoPrintDensity/Densidad de impresión: "" +*es.DymoPrintDensity Light/Bajo: "" +*es.DymoPrintDensity Medium/Mediano: "" +*es.DymoPrintDensity Normal/Normal: "" +*es.DymoPrintDensity Dark/Alto: "" + +*es_CO.Translation DymoPrintDensity/Densidad de impresión: "" +*es_CO.DymoPrintDensity Light/Bajo: "" +*es_CO.DymoPrintDensity Medium/Mediano: "" +*es_CO.DymoPrintDensity Normal/Normal: "" +*es_CO.DymoPrintDensity Dark/Alto: "" + +*fr.Translation DymoPrintDensity/Densité d’impression: "" +*fr.DymoPrintDensity Light/Faible: "" +*fr.DymoPrintDensity Medium/Moyenne: "" +*fr.DymoPrintDensity Normal/Normale: "" +*fr.DymoPrintDensity Dark/Élevée: "" + +*fr_CA.Translation DymoPrintDensity/Densité d'impression: "" +*fr_CA.DymoPrintDensity Light/Faible: "" +*fr_CA.DymoPrintDensity Medium/Moyenne: "" +*fr_CA.DymoPrintDensity Normal/Normale: "" +*fr_CA.DymoPrintDensity Dark/Élevée: "" + +*it.Translation DymoPrintDensity/Densità di stampa: "" +*it.DymoPrintDensity Light/Leggera: "" +*it.DymoPrintDensity Medium/Media: "" +*it.DymoPrintDensity Normal/Normale: "" +*it.DymoPrintDensity Dark/Scura: "" + +*nl.Translation DymoPrintDensity/Afdrukdichtheid: "" +*nl.DymoPrintDensity Light/Laag: "" +*nl.DymoPrintDensity Medium/Middel: "" +*nl.DymoPrintDensity Normal/Normaal: "" +*nl.DymoPrintDensity Dark/Hoog: "" + +*pt.Translation DymoPrintDensity/Densid. de impressão: "" +*pt.DymoPrintDensity Light/Baixo: "" +*pt.DymoPrintDensity Medium/Médio: "" +*pt.DymoPrintDensity Normal/Normal: "" +*pt.DymoPrintDensity Dark/Alto: "" + +*pt_BR.Translation DymoPrintDensity/Densid. de impressão: "" +*pt_BR.DymoPrintDensity Light/Baixo: "" +*pt_BR.DymoPrintDensity Medium/Médio: "" +*pt_BR.DymoPrintDensity Normal/Normal: "" +*pt_BR.DymoPrintDensity Dark/Alto: "" + +*CloseUI: *DymoPrintDensity + +*OpenUI *DymoPrintQuality/Print Quality: PickOne +*OrderDependency: 21 AnySetup *DymoPrintQuality +*DefaultDymoPrintQuality: Text +*DymoPrintQuality Text/Text Only: "<>setpagedevice" +*DymoPrintQuality Graphics/Barcodes and Graphics: "<>setpagedevice" + +*de.Translation DymoPrintQuality/Druckqualität: "" +*de.DymoPrintQuality Text/Nur Text: "" +*de.DymoPrintQuality Graphics/Barcode und Grafik: "" + +*es.Translation DymoPrintQuality/Calidad de impresión: "" +*es.DymoPrintQuality Text/Sólo texto: "" +*es.DymoPrintQuality Graphics/Código de barras y gráficas: "" + +*es_CO.Translation DymoPrintQuality/Calidad de impresión: "" +*es_CO.DymoPrintQuality Text/Sólo texto: "" +*es_CO.DymoPrintQuality Graphics/Código de barras y gráficas: "" + +*fr.Translation DymoPrintQuality/Qualité d’impression: "" +*fr.DymoPrintQuality Text/Texte uniquement: "" +*fr.DymoPrintQuality Graphics/Code-barres et graphisme: "" + +*fr_CA.Translation DymoPrintQuality/Qualité d'impression: "" +*fr_CA.DymoPrintQuality Text/Texte uniquement: "" +*fr_CA.DymoPrintQuality Graphics/Code-barres et graphisme: "" + +*it.Translation DymoPrintQuality/Qualità della stampa: "" +*it.DymoPrintQuality Text/Solo testo: "" +*it.DymoPrintQuality Graphics/Codice a barre e grafica: "" + +*nl.Translation DymoPrintQuality/Afdrukkwaliteit: "" +*nl.DymoPrintQuality Text/Alleen tekst: "" +*nl.DymoPrintQuality Graphics/Streepjescode en afbeeldingen: "" + +*pt.Translation DymoPrintQuality/Qualid. da impressão: "" +*pt.DymoPrintQuality Text/Somente texto: "" +*pt.DymoPrintQuality Graphics/Código de barras e gráficos: "" + +*pt_BR.Translation DymoPrintQuality/Qualid. da impressão: "" +*pt_BR.DymoPrintQuality Text/Somente texto: "" +*pt_BR.DymoPrintQuality Graphics/Código de barras e gráficos: "" + +*CloseUI: *DymoPrintQuality + +*UIConstraints: *DymoPrintQuality Text *Resolution 300x600dpi +*UIConstraints: *DymoPrintQuality Graphics *Resolution 300dpi +*UIConstraints: *Resolution 300x600dpi *DymoPrintQuality Text +*UIConstraints: *Resolution 300dpi *DymoPrintQuality Graphics + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + +*% +*% End of "$Id: lw450.ppd 16401 2011-10-31 18:51:16Z pineichen $" +*% diff --git a/cups-config/cups/ppd/dymo.ppd.O b/cups-config/cups/ppd/dymo.ppd.O new file mode 100644 index 0000000..92d51bc --- /dev/null +++ b/cups-config/cups/ppd/dymo.ppd.O @@ -0,0 +1,628 @@ +*PPD-Adobe: "4.3" + +*% $Id: lw450.ppd 16401 2011-10-31 18:51:16Z pineichen $ + +*% DYMO LabelWriter Drivers +*% Copyright (C) 2009 Sanford L.P. + +*% This program is free software; you can redistribute it and/or +*% modify it under the terms of the GNU General Public License +*% as published by the Free Software Foundation; either version 2 +*% of the License, or (at your option) any later version. + +*% This program is distributed in the hope that it will be useful, +*% but WITHOUT ANY WARRANTY; without even the implied warranty of +*% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +*% GNU General Public License for more details. + +*% You should have received a copy of the GNU General Public License +*% along with this program; if not, write to the Free Software +*% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*FormatVersion: "4.3" +*FileVersion: "3.0" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "LW450.PPD" +*Manufacturer: "DYMO" +*Product: "(DYMO LabelWriter 450)" +*cupsVersion: 1.2 +*cupsManualCopies: False +*cupsFilter: "application/vnd.cups-raster 0 raster2dymolw" +*cupsModelNumber: 0 +*PSVersion: "(3010.000) 550" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "8" +*LandscapeOrientation: Minus90 +*TTRasterizer: Type42 + +*ModelName: "DYMO LabelWriter 450" +*NickName: "DYMO LabelWriter 450" +*ShortNickName: "DYMO LabelWriter 450" +*APPrinterIconPath: "/Library/Printers/DYMO/CUPS/Resources/LW450.icns" + +*cupsIPPReason com.dymo.out-of-paper-error/Out of labels. : "" +*cupsIPPReason com.dymo.read-error/Cannot read data from printer. : "" +*cupsIPPReason com.dymo.ready/Printer is ready. : "" +*cupsIPPReason com.dymo.general-error/General print error. : "" +*cupsIPPReason com.dymo.head-overheat-error/Print head is overheated. : "" +*cupsIPPReason com.dymo.slot-status-error/Label path is blocked. : "" +*cupsIPPReason com.dymo.busy-error/The printer is currently in use. : "" +*cupsIPPReason com.dymo.paper-size-error/Label being printed does not match label width currently in printer. : "" +*cupsIPPReason com.dymo.paper-size-undefine-error/Insert a label cassette in the printer. : "" + +*de.cupsIPPReason com.dymo.out-of-paper-error/Keine Etiketten mehr. : "" +*de.cupsIPPReason com.dymo.read-error/Kann keine Daten vom Drucker lesen. : "" +*de.cupsIPPReason com.dymo.ready/Drucker ist bereit. : "" +*de.cupsIPPReason com.dymo.general-error/Allgemeiner Fehler beim Drucken. : "" +*de.cupsIPPReason com.dymo.head-overheat-error/Druckkopf ist zu heiß. : "" +*de.cupsIPPReason com.dymo.slot-status-error/Etikettenzuführung ist blockiert. : "" +*de.cupsIPPReason com.dymo.busy-error/Der Drucker wird gegenwärtig verwendet. : "" +*de.cupsIPPReason com.dymo.paper-size-error/Zu druckendes Etikett passt nicht zur Breite der Etiketten im Drucker. : "" +*de.cupsIPPReason com.dymo.paper-size-undefine-error/Legen Sie eine Etikettenkassette in den Drucker ein. : "" + +*es.cupsIPPReason com.dymo.out-of-paper-error/No tiene etiquetas. : "" +*es.cupsIPPReason com.dymo.read-error/No se pueden leer los datos de la impresora. : "" +*es.cupsIPPReason com.dymo.ready/La impresora está lista. : "" +*es.cupsIPPReason com.dymo.general-error/Erreur d'impression générale. : "" +*es.cupsIPPReason com.dymo.head-overheat-error/El cabezal de impresión está sobrecalentado. : "" +*es.cupsIPPReason com.dymo.slot-status-error/La trayectoria de la etiqueta está bloqueada. : "" +*es.cupsIPPReason com.dymo.busy-error/La impresora se encuentra actualmente en uso. : "" +*es.cupsIPPReason com.dymo.paper-size-error/La etiqueta que se imprime no coincide con el ancho actual de la impresora. : "" +*es.cupsIPPReason com.dymo.paper-size-undefine-error/Inserte un cartucho de etiquetas en la impresora. : "" + +*es_CO.cupsIPPReason com.dymo.out-of-paper-error/No tiene etiquetas. : "" +*es_CO.cupsIPPReason com.dymo.read-error/No se pueden leer los datos de la impresora. : "" +*es_CO.cupsIPPReason com.dymo.ready/La impresora está lista. : "" +*es_CO.cupsIPPReason com.dymo.general-error/Erreur d'impression générale. : "" +*es_CO.cupsIPPReason com.dymo.head-overheat-error/El cabezal de impresión está sobrecalentado. : "" +*es_CO.cupsIPPReason com.dymo.slot-status-error/La trayectoria de la etiqueta está bloqueada. : "" +*es_CO.cupsIPPReason com.dymo.busy-error/La impresora se encuentra actualmente en uso. : "" +*es_CO.cupsIPPReason com.dymo.paper-size-error/La etiqueta que se imprime no coincide con el ancho actual de la impresora. : "" +*es_CO.cupsIPPReason com.dymo.paper-size-undefine-error/Inserte un cartucho de etiquetas en la impresora. : "" + +*fr.cupsIPPReason com.dymo.out-of-paper-error/Quantité d’étiquettes insuffisante. : "" +*fr.cupsIPPReason com.dymo.read-error/Impossible de lire les données depuis l'imprimante. : "" +*fr.cupsIPPReason com.dymo.ready/Imprimante prête. : "" +*fr.cupsIPPReason com.dymo.general-error/Erreur d'impression générale. : "" +*fr.cupsIPPReason com.dymo.head-overheat-error/Tête d'impression surchauffée. : "" +*fr.cupsIPPReason com.dymo.slot-status-error/Chemin des étiquettes bloqué. : "" +*fr.cupsIPPReason com.dymo.busy-error/Imprimante en cours d'utilisation. : "" +*fr.cupsIPPReason com.dymo.paper-size-error/Étiquette en cours d'impression pas de la même largeur que dans l'imprimante. : "" +*fr.cupsIPPReason com.dymo.paper-size-undefine-error/Insérer une cassette d'étiquettes dans l'imprimante. : "" + +*fr_CA.cupsIPPReason com.dymo.out-of-paper-error/Quantité d’étiquettes insuffisante. : "" +*fr_CA.cupsIPPReason com.dymo.read-error/Impossible de lire les données depuis l'imprimante. : "" +*fr_CA.cupsIPPReason com.dymo.ready/Imprimante prête. : "" +*fr_CA.cupsIPPReason com.dymo.general-error/Erreur d'impression générale. : "" +*fr_CA.cupsIPPReason com.dymo.head-overheat-error/Tête d'impression surchauffée. : "" +*fr_CA.cupsIPPReason com.dymo.slot-status-error/Chemin des étiquettes bloqué. : "" +*fr_CA.cupsIPPReason com.dymo.busy-error/Imprimante en cours d'utilisation. : "" +*fr_CA.cupsIPPReason com.dymo.paper-size-error/Étiquette en cours d'impression pas de la même largeur que dans l'imprimante. : "" +*fr_CA.cupsIPPReason com.dymo.paper-size-undefine-error/Insérer une cassette d'étiquettes dans l'imprimante. : "" + +*it.cupsIPPReason com.dymo.out-of-paper-error/Etichette esaurite. : "" +*it.cupsIPPReason com.dymo.read-error/Impossibile leggere i dati dalla stampante. : "" +*it.cupsIPPReason com.dymo.ready/Stampante pronta. : "" +*it.cupsIPPReason com.dymo.general-error/Errore generico di stampa. : "" +*it.cupsIPPReason com.dymo.head-overheat-error/Testina di stampa surriscaldata. : "" +*it.cupsIPPReason com.dymo.slot-status-error/Percorso etichetta bloccato. : "" +*it.cupsIPPReason com.dymo.busy-error/Stampante attualmente in uso. : "" +*it.cupsIPPReason com.dymo.paper-size-error/L'etichetta in stampa è diversa dalla larghezza impostata nella stampante. : "" +*it.cupsIPPReason com.dymo.paper-size-undefine-error/Inserire una cartuccia etichette nella stampante. : "" + +*nl.cupsIPPReason com.dymo.out-of-paper-error/Labels zijn op. : "" +*nl.cupsIPPReason com.dymo.read-error/Kan gegevens van de printer niet lezen. : "" +*nl.cupsIPPReason com.dymo.ready/Printer is gereed. : "" +*nl.cupsIPPReason com.dymo.general-error/Algemene afdrukfout. : "" +*nl.cupsIPPReason com.dymo.head-overheat-error/Printkop is oververhit. : "" +*nl.cupsIPPReason com.dymo.slot-status-error/Labelspoor is geblokkeerd. : "" +*nl.cupsIPPReason com.dymo.busy-error/De printer is momenteel in gebruik. : "" +*nl.cupsIPPReason com.dymo.paper-size-error/De af te drukken label komt niet overeen met de labelbreedte in de printer. : "" +*nl.cupsIPPReason com.dymo.paper-size-undefine-error/Plaats een labelcassette in de printer. : "" + +*pt.cupsIPPReason com.dymo.out-of-paper-error/Sem etiquetas. : "" +*pt.cupsIPPReason com.dymo.read-error/Não é possível ler dados da impressora. : "" +*pt.cupsIPPReason com.dymo.ready/A impressora está pronta. : "" +*pt.cupsIPPReason com.dymo.general-error/Erro geral de impressão. : "" +*pt.cupsIPPReason com.dymo.head-overheat-error/A cabeça de impressão está superaquecida. : "" +*pt.cupsIPPReason com.dymo.slot-status-error/O caminho da etiqueta está bloqueado. : "" +*pt.cupsIPPReason com.dymo.busy-error/A impressora está em uso no momento. : "" +*pt.cupsIPPReason com.dymo.paper-size-error/A etiqueta sendo impressa não coincide com a largura da etiqueta na impressora. : "" +*pt.cupsIPPReason com.dymo.paper-size-undefine-error/Inserir um cassete de etiquetas na impressora. : "" + +*pt_BR.cupsIPPReason com.dymo.out-of-paper-error/Sem etiquetas. : "" +*pt_BR.cupsIPPReason com.dymo.read-error/Não é possível ler dados da impressora. : "" +*pt_BR.cupsIPPReason com.dymo.ready/A impressora está pronta. : "" +*pt_BR.cupsIPPReason com.dymo.general-error/Erro geral de impressão. : "" +*pt_BR.cupsIPPReason com.dymo.head-overheat-error/A cabeça de impressão está superaquecida. : "" +*pt_BR.cupsIPPReason com.dymo.slot-status-error/O caminho da etiqueta está bloqueado. : "" +*pt_BR.cupsIPPReason com.dymo.busy-error/A impressora está em uso no momento. : "" +*pt_BR.cupsIPPReason com.dymo.paper-size-error/A etiqueta sendo impressa não coincide com a largura da etiqueta na impressora. : "" +*pt_BR.cupsIPPReason com.dymo.paper-size-undefine-error/Inserir um cassete de etiquetas na impressora. : "" + +*OpenUI *PageSize/Media Size: PickOne +*OrderDependency: 10 AnySetup *PageSize +*DefaultPageSize: w167h288 +*PageSize w154h64/11351 Jewelry Label: "<>setpagedevice" +*PageSize w72h154/11352 Return Address Int: "<>setpagedevice" +*PageSize w72h72/11353 Multi-Purpose: "<>setpagedevice" +*PageSize w162h90/11354 Multi-Purpose: "<>setpagedevice" +*PageSize w54h144/11355 Multi-Purpose: "<>setpagedevice" +*PageSize w118h252/11356 White Name badge: "<>setpagedevice" +*PageSize w167h188/14681 CD/DVD Label: "<>setpagedevice" +*PageSize w79h252/30252 Address: "<>setpagedevice" +*PageSize w167h252/30253 Address (2 up): "<>setpagedevice" +*PageSize w167h288/30256 Shipping: "<>setpagedevice" +*PageSize w154h198/30258 Diskette: "<>setpagedevice" +*PageSize w82h248/30277 File Folder (2 up): "<>setpagedevice" +*PageSize w154h64.1/30299 Jewelry Label (2 up): "<>setpagedevice" +*PageSize w79h252.1/30320 Address: "<>setpagedevice" +*PageSize w102h252/30321 Large Address: "<>setpagedevice" +*PageSize w154h286/30323 Shipping: "<>setpagedevice" +*PageSize w154h198.1/30324 Diskette: "<>setpagedevice" +*PageSize w54h424/30325 Video Spine: "<>setpagedevice" +*PageSize w131h221/30326 Video Top: "<>setpagedevice" +*PageSize w57h248/30327 File Folder: "<>setpagedevice" +*PageSize w54h144.1/30330 Return Address: "<>setpagedevice" +*PageSize w72h72.1/30332 1 in x 1 in: "<>setpagedevice" +*PageSize w72h72.2/30333 1/2 in x 1 in (2 up): "<>setpagedevice" +*PageSize w162h90.1/30334 2-1/4 in x 1-1/4 in: "<>setpagedevice" +*PageSize 30334_2-1_4_in_x_1-1_4_in/30334 2-1/4 in x 1-1/4 in: "<>setpagedevice" +*PageSize w73h86/30335 1/2 in x 1/2 in (4 up): "<>setpagedevice" +*PageSize w72h154.1/30336 1 in x 2-1/8 in: "<>setpagedevice" +*PageSize w118h252.1/30337 Audio Cassette: "<>setpagedevice" +*PageSize w54h203/30339 8mm Video (2 up): "<>setpagedevice" +*PageSize w54h180/30345 3/4 in x 2-1/2 in: "<>setpagedevice" +*PageSize w36h136/30346 1/2 in x 1-7/8 in: "<>setpagedevice" +*PageSize w72h108/30347 1 in x 1-1/2 in: "<>setpagedevice" +*PageSize w65h90/30348 9/10 in x 1-1/4 in: "<>setpagedevice" +*PageSize w167h288.1/30364 Name Badge Label: "<>setpagedevice" +*PageSize w168h252/30365 Name Badge Card: "<>setpagedevice" +*PageSize w144h169/30370 Zip Disk: "<>setpagedevice" +*PageSize w71h144/30373 Price Tag Label: "<>setpagedevice" +*PageSize w144h252/30374 Appointment Card: "<>setpagedevice" +*PageSize w80h144/30376 Hanging File Insert: "<>setpagedevice" +*PageSize w162h504/30383 PC Postage 3-Part: "<>setpagedevice" +*PageSize 30383_PC_Postage_3-Part/30383 PC Postage 3-Part: "<>setpagedevice" +*PageSize w167h540/30384 PC Postage 2-Part: "<>setpagedevice" +*PageSize 30384_PC_Postage_2-Part/30384 PC Postage 2-Part: "<>setpagedevice" +*PageSize w167h756/30387 PC Postage EPS: "<>setpagedevice" +*PageSize 30387_PC_Postage_EPS/30387 PC Postage EPS: "<>setpagedevice" +*PageSize w167h188.1/30854 CD Label: "<>setpagedevice" +*PageSize w176h292/30856 Badge Card Label: "<>setpagedevice" +*PageSize w167h288.2/30857 Badge Label: "<>setpagedevice" +*PageSize w112h126/30886 CD Label: "<>setpagedevice" +*PageSize w79h252.2/99010 Standard Address: "<>setpagedevice" +*PageSize w102h252.1/99012 Large Address: "<>setpagedevice" +*PageSize w154h286.1/99014 Name Badge Label: "<>setpagedevice" +*PageSize w154h286.2/99014 Shipping: "<>setpagedevice" +*PageSize w154h198.2/99015 Diskette: "<>setpagedevice" +*PageSize w63h419/99016 Video Spine: "<>setpagedevice" +*PageSize w139h221/99016 Video Top: "<>setpagedevice" +*PageSize w36h144/99017 Suspension File: "<>setpagedevice" +*PageSize w108h539/99018 Small Lever Arch: "<>setpagedevice" +*PageSize w167h539/99019 Large Lever Arch: "<>setpagedevice" +*PageSize w154h7680/Banner: "<>setpagedevice" +*PageSize w154h792/Continuous, Wide: "<>setpagedevice" +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 10 AnySetup *PageRegion +*DefaultPageRegion: w167h288 +*PageRegion w154h64/11351 Jewelry Label: "<>setpagedevice" +*PageRegion w72h154/11352 Return Address Int: "<>setpagedevice" +*PageRegion w72h72/11353 Multi-Purpose: "<>setpagedevice" +*PageRegion w162h90/11354 Multi-Purpose: "<>setpagedevice" +*PageRegion w54h144/11355 Multi-Purpose: "<>setpagedevice" +*PageRegion w118h252/11356 White Name badge: "<>setpagedevice" +*PageRegion w167h188/14681 CD/DVD Label: "<>setpagedevice" +*PageRegion w79h252/30252 Address: "<>setpagedevice" +*PageRegion w167h252/30253 Address (2 up): "<>setpagedevice" +*PageRegion w167h288/30256 Shipping: "<>setpagedevice" +*PageRegion w154h198/30258 Diskette: "<>setpagedevice" +*PageRegion w82h248/30277 File Folder (2 up): "<>setpagedevice" +*PageRegion w154h64.1/30299 Jewelry Label (2 up): "<>setpagedevice" +*PageRegion w79h252.1/30320 Address: "<>setpagedevice" +*PageRegion w102h252/30321 Large Address: "<>setpagedevice" +*PageRegion w154h286/30323 Shipping: "<>setpagedevice" +*PageRegion w154h198.1/30324 Diskette: "<>setpagedevice" +*PageRegion w54h424/30325 Video Spine: "<>setpagedevice" +*PageRegion w131h221/30326 Video Top: "<>setpagedevice" +*PageRegion w57h248/30327 File Folder: "<>setpagedevice" +*PageRegion w54h144.1/30330 Return Address: "<>setpagedevice" +*PageRegion w72h72.1/30332 1 in x 1 in: "<>setpagedevice" +*PageRegion w72h72.2/30333 1/2 in x 1 in (2 up): "<>setpagedevice" +*PageRegion w162h90.1/30334 2-1/4 in x 1-1/4 in: "<>setpagedevice" +*PageRegion 30334_2-1_4_in_x_1-1_4_in/30334 2-1/4 in x 1-1/4 in: "<>setpagedevice" +*PageRegion w73h86/30335 1/2 in x 1/2 in (4 up): "<>setpagedevice" +*PageRegion w72h154.1/30336 1 in x 2-1/8 in: "<>setpagedevice" +*PageRegion w118h252.1/30337 Audio Cassette: "<>setpagedevice" +*PageRegion w54h203/30339 8mm Video (2 up): "<>setpagedevice" +*PageRegion w54h180/30345 3/4 in x 2-1/2 in: "<>setpagedevice" +*PageRegion w36h136/30346 1/2 in x 1-7/8 in: "<>setpagedevice" +*PageRegion w72h108/30347 1 in x 1-1/2 in: "<>setpagedevice" +*PageRegion w65h90/30348 9/10 in x 1-1/4 in: "<>setpagedevice" +*PageRegion w167h288.1/30364 Name Badge Label: "<>setpagedevice" +*PageRegion w168h252/30365 Name Badge Card: "<>setpagedevice" +*PageRegion w144h169/30370 Zip Disk: "<>setpagedevice" +*PageRegion w71h144/30373 Price Tag Label: "<>setpagedevice" +*PageRegion w144h252/30374 Appointment Card: "<>setpagedevice" +*PageRegion w80h144/30376 Hanging File Insert: "<>setpagedevice" +*PageRegion w162h504/30383 PC Postage 3-Part: "<>setpagedevice" +*PageRegion 30383_PC_Postage_3-Part/30383 PC Postage 3-Part: "<>setpagedevice" +*PageRegion w167h540/30384 PC Postage 2-Part: "<>setpagedevice" +*PageRegion 30384_PC_Postage_2-Part/30384 PC Postage 2-Part: "<>setpagedevice" +*PageRegion w167h756/30387 PC Postage EPS: "<>setpagedevice" +*PageRegion 30387_PC_Postage_EPS/30387 PC Postage EPS: "<>setpagedevice" +*PageRegion w167h188.1/30854 CD Label: "<>setpagedevice" +*PageRegion w176h292/30856 Badge Card Label: "<>setpagedevice" +*PageRegion w167h288.2/30857 Badge Label: "<>setpagedevice" +*PageRegion w112h126/30886 CD Label: "<>setpagedevice" +*PageRegion w79h252.2/99010 Standard Address: "<>setpagedevice" +*PageRegion w102h252.1/99012 Large Address: "<>setpagedevice" +*PageRegion w154h286.1/99014 Name Badge Label: "<>setpagedevice" +*PageRegion w154h286.2/99014 Shipping: "<>setpagedevice" +*PageRegion w154h198.2/99015 Diskette: "<>setpagedevice" +*PageRegion w63h419/99016 Video Spine: "<>setpagedevice" +*PageRegion w139h221/99016 Video Top: "<>setpagedevice" +*PageRegion w36h144/99017 Suspension File: "<>setpagedevice" +*PageRegion w108h539/99018 Small Lever Arch: "<>setpagedevice" +*PageRegion w167h539/99019 Large Lever Arch: "<>setpagedevice" +*PageRegion w154h7680/Banner: "<>setpagedevice" +*PageRegion w154h792/Continuous, Wide: "<>setpagedevice" +*CloseUI: *PageRegion + +*DefaultImageableArea: w167h288 +*ImageableArea w154h64/11351 Jewelry Label: "0.00 4.32 150.72 58.80" +*ImageableArea w72h154/11352 Return Address Int: "4.08 4.32 69.12 146.64" +*ImageableArea w72h72/11353 Multi-Purpose: "4.08 4.32 69.12 65.28" +*ImageableArea w162h90/11354 Multi-Purpose: "2.88 4.32 159.12 85.68" +*ImageableArea w54h144/11355 Multi-Purpose: "4.08 4.32 51.12 127.68" +*ImageableArea w118h252/11356 White Name badge: "4.08 4.32 114.24 235.44" +*ImageableArea w167h188/14681 CD/DVD Label: "4.08 17.04 161.28 170.40" +*ImageableArea w79h252/30252 Address: "4.32 4.32 76.08 235.44" +*ImageableArea w167h252/30253 Address (2 up): "4.08 4.32 163.44 235.68" +*ImageableArea w167h288/30256 Shipping: "4.08 4.32 163.68 271.20" +*ImageableArea w154h198/30258 Diskette: "4.08 4.32 150.24 182.16" +*ImageableArea w82h248/30277 File Folder (2 up): "4.32 4.32 78.24 233.04" +*ImageableArea w154h64.1/30299 Jewelry Label (2 up): "0.00 4.32 150.72 58.80" +*ImageableArea w79h252.1/30320 Address: "4.32 4.32 76.08 235.44" +*ImageableArea w102h252/30321 Large Address: "4.32 4.32 98.40 234.96" +*ImageableArea w154h286/30323 Shipping: "4.32 4.32 150.24 270.48" +*ImageableArea w154h198.1/30324 Diskette: "2.88 4.32 150.24 182.16" +*ImageableArea w54h424/30325 Video Spine: "2.88 4.32 51.12 407.28" +*ImageableArea w131h221/30326 Video Top: "4.08 4.32 127.68 204.72" +*ImageableArea w57h248/30327 File Folder: "0.00 4.32 53.52 231.60" +*ImageableArea w54h144.1/30330 Return Address: "4.08 4.32 51.12 127.68" +*ImageableArea w72h72.1/30332 1 in x 1 in: "4.08 4.32 69.12 64.80" +*ImageableArea w72h72.2/30333 1/2 in x 1 in (2 up): "4.08 4.32 69.12 65.28" +*ImageableArea w162h90.1/30334 2-1/4 in x 1-1/4 in: "2.88 4.32 159.12 85.68" +*ImageableArea 30334_2-1_4_in_x_1-1_4_in/30334 2-1/4 in x 1-1/4 in: "2.88 4.32 159.12 85.68" +*ImageableArea w73h86/30335 1/2 in x 1/2 in (4 up): "0.00 4.32 70.08 81.12" +*ImageableArea w72h154.1/30336 1 in x 2-1/8 in: "4.08 4.32 69.12 146.64" +*ImageableArea w118h252.1/30337 Audio Cassette: "4.08 4.32 114.24 235.44" +*ImageableArea w54h203/30339 8mm Video (2 up): "4.08 4.32 51.12 186.72" +*ImageableArea w54h180/30345 3/4 in x 2-1/2 in: "4.08 4.32 51.12 163.68" +*ImageableArea w36h136/30346 1/2 in x 1-7/8 in: "4.08 4.32 33.12 118.80" +*ImageableArea w72h108/30347 1 in x 1-1/2 in: "4.08 4.32 69.12 91.68" +*ImageableArea w65h90/30348 9/10 in x 1-1/4 in: "5.04 4.32 61.92 73.68" +*ImageableArea w167h288.1/30364 Name Badge Label: "4.08 4.32 163.68 271.20" +*ImageableArea w168h252/30365 Name Badge Card: "0.00 4.32 161.28 225.12" +*ImageableArea w144h169/30370 Zip Disk: "4.32 4.32 141.12 152.88" +*ImageableArea w71h144/30373 Price Tag Label: "0.00 85.44 67.44 139.68" +*ImageableArea w144h252/30374 Appointment Card: "8.64 4.32 141.12 225.12" +*ImageableArea w80h144/30376 Hanging File Insert: "8.64 4.32 76.32 121.44" +*ImageableArea w162h504/30383 PC Postage 3-Part: "4.08 4.32 159.12 488.16" +*ImageableArea 30383_PC_Postage_3-Part/30383 PC Postage 3-Part: "4.08 4.32 159.12 488.16" +*ImageableArea w167h540/30384 PC Postage 2-Part: "4.08 4.32 163.68 524.16" +*ImageableArea 30384_PC_Postage_2-Part/30384 PC Postage 2-Part: "4.08 4.32 163.68 524.16" +*ImageableArea w167h756/30387 PC Postage EPS: "4.08 4.32 163.68 740.16" +*ImageableArea 30387_PC_Postage_EPS/30387 PC Postage EPS: "4.08 4.32 163.68 740.16" +*ImageableArea w167h188.1/30854 CD Label: "4.08 17.04 161.28 170.40" +*ImageableArea w176h292/30856 Badge Card Label: "0.00 4.32 161.28 264.72" +*ImageableArea w167h288.2/30857 Badge Label: "4.08 4.32 163.68 271.20" +*ImageableArea w112h126/30886 CD Label: "4.32 18.00 102.24 110.16" +*ImageableArea w79h252.2/99010 Standard Address: "4.32 4.32 76.08 235.44" +*ImageableArea w102h252.1/99012 Large Address: "4.32 4.32 98.40 234.96" +*ImageableArea w154h286.1/99014 Name Badge Label: "4.32 4.32 150.24 270.48" +*ImageableArea w154h286.2/99014 Shipping: "4.32 4.32 150.24 270.48" +*ImageableArea w154h198.2/99015 Diskette: "2.88 4.32 150.24 182.16" +*ImageableArea w63h419/99016 Video Spine: "0.00 4.32 59.52 402.24" +*ImageableArea w139h221/99016 Video Top: "0.00 4.32 136.08 204.48" +*ImageableArea w36h144/99017 Suspension File: "2.88 4.32 33.12 127.92" +*ImageableArea w108h539/99018 Small Lever Arch: "4.08 4.32 104.88 522.72" +*ImageableArea w167h539/99019 Large Lever Arch: "4.08 4.32 163.68 522.72" +*ImageableArea w154h7680/Banner: "4.08 17.04 148.08 7663.92" +*ImageableArea w154h792/Continuous, Wide: "4.32 4.32 150.24 775.68" + +*DefaultPaperDimension: w167h288 +*PaperDimension w154h64/11351 Jewelry Label: "153.60 63.12" +*PaperDimension w72h154/11352 Return Address Int: "72.00 153.12" +*PaperDimension w72h72/11353 Multi-Purpose: "72.00 72.00" +*PaperDimension w162h90/11354 Multi-Purpose: "162.00 90.00" +*PaperDimension w54h144/11355 Multi-Purpose: "54.00 144.00" +*PaperDimension w118h252/11356 White Name badge: "117.12 252.00" +*PaperDimension w167h188/14681 CD/DVD Label: "166.32 187.20" +*PaperDimension w79h252/30252 Address: "78.96 252.00" +*PaperDimension w167h252/30253 Address (2 up): "166.32 252.00" +*PaperDimension w167h288/30256 Shipping: "166.56 288.00" +*PaperDimension w154h198/30258 Diskette: "153.12 198.00" +*PaperDimension w82h248/30277 File Folder (2 up): "81.12 247.44" +*PaperDimension w154h64.1/30299 Jewelry Label (2 up): "153.60 63.12" +*PaperDimension w79h252.1/30320 Address: "78.96 252.00" +*PaperDimension w102h252/30321 Large Address: "101.28 251.04" +*PaperDimension w154h286/30323 Shipping: "153.12 285.84" +*PaperDimension w154h198.1/30324 Diskette: "153.12 198.00" +*PaperDimension w54h424/30325 Video Spine: "54.00 423.12" +*PaperDimension w131h221/30326 Video Top: "130.56 220.56" +*PaperDimension w57h248/30327 File Folder: "56.40 247.44" +*PaperDimension w54h144.1/30330 Return Address: "54.00 144.00" +*PaperDimension w72h72.1/30332 1 in x 1 in: "72.00 72.00" +*PaperDimension w72h72.2/30333 1/2 in x 1 in (2 up): "72.00 72.00" +*PaperDimension w162h90.1/30334 2-1/4 in x 1-1/4 in: "162.00 90.00" +*PaperDimension 30334_2-1_4_in_x_1-1_4_in/30334 2-1/4 in x 1-1/4 in: "162.00 90.00" +*PaperDimension w73h86/30335 1/2 in x 1/2 in (4 up): "72.96 85.44" +*PaperDimension w72h154.1/30336 1 in x 2-1/8 in: "72.00 153.12" +*PaperDimension w118h252.1/30337 Audio Cassette: "117.12 252.00" +*PaperDimension w54h203/30339 8mm Video (2 up): "54.00 202.56" +*PaperDimension w54h180/30345 3/4 in x 2-1/2 in: "54.00 180.00" +*PaperDimension w36h136/30346 1/2 in x 1-7/8 in: "36.00 135.12" +*PaperDimension w72h108/30347 1 in x 1-1/2 in: "72.00 108.00" +*PaperDimension w65h90/30348 9/10 in x 1-1/4 in: "64.80 90.00" +*PaperDimension w167h288.1/30364 Name Badge Label: "166.56 288.00" +*PaperDimension w168h252/30365 Name Badge Card: "167.04 252.00" +*PaperDimension w144h169/30370 Zip Disk: "144.00 168.72" +*PaperDimension w71h144/30373 Price Tag Label: "70.32 144.00" +*PaperDimension w144h252/30374 Appointment Card: "144.00 252.00" +*PaperDimension w80h144/30376 Hanging File Insert: "79.20 144.00" +*PaperDimension w162h504/30383 PC Postage 3-Part: "162.00 504.00" +*PaperDimension 30383_PC_Postage_3-Part/30383 PC Postage 3-Part: "162.00 504.00" +*PaperDimension w167h540/30384 PC Postage 2-Part: "166.56 540.00" +*PaperDimension 30384_PC_Postage_2-Part/30384 PC Postage 2-Part: "166.56 540.00" +*PaperDimension w167h756/30387 PC Postage EPS: "166.56 756.00" +*PaperDimension 30387_PC_Postage_EPS/30387 PC Postage EPS: "166.56 756.00" +*PaperDimension w167h188.1/30854 CD Label: "166.32 187.20" +*PaperDimension w176h292/30856 Badge Card Label: "175.44 291.60" +*PaperDimension w167h288.2/30857 Badge Label: "166.56 288.00" +*PaperDimension w112h126/30886 CD Label: "111.36 126.00" +*PaperDimension w79h252.2/99010 Standard Address: "78.96 252.00" +*PaperDimension w102h252.1/99012 Large Address: "101.28 251.04" +*PaperDimension w154h286.1/99014 Name Badge Label: "153.12 285.84" +*PaperDimension w154h286.2/99014 Shipping: "153.12 285.84" +*PaperDimension w154h198.2/99015 Diskette: "153.12 198.00" +*PaperDimension w63h419/99016 Video Spine: "62.40 418.56" +*PaperDimension w139h221/99016 Video Top: "138.96 220.56" +*PaperDimension w36h144/99017 Suspension File: "36.00 144.00" +*PaperDimension w108h539/99018 Small Lever Arch: "107.76 538.56" +*PaperDimension w167h539/99019 Large Lever Arch: "166.56 538.56" +*PaperDimension w154h7680/Banner: "153.12 7680.00" +*PaperDimension w154h792/Continuous, Wide: "153.12 792.00" + +*% Custom page size support +*HWMargins: 0 0 0 0 +*NonUIOrderDependency: 100 AnySetup *CustomPageSize True +*CustomPageSize True/Custom Page Size: "pop pop pop <>setpagedevice" +*ParamCustomPageSize Width: 1 points 10 161.28 +*ParamCustomPageSize Height: 2 points 10 7680 +*ParamCustomPageSize WidthOffset/Width Offset: 3 points 0 0 +*ParamCustomPageSize HeightOffset/Height Offset: 4 points 0 0 +*ParamCustomPageSize Orientation: 5 int 0 0 + +*OpenUI *Resolution/Output Resolution: PickOne +*OrderDependency: 20 AnySetup *Resolution +*DefaultResolution: 300dpi +*Resolution 300dpi/300 DPI: "<>setpagedevice" +*Resolution 300x600dpi/300x600 DPI: "<>setpagedevice" +*CloseUI: *Resolution + +*OpenUI *DymoHalftoning/Halftoning: PickOne +*OrderDependency: 20 AnySetup *DymoHalftoning +*DefaultDymoHalftoning: ErrorDiffusion +*DymoHalftoning Default/Default: "<>setpagedevice" +*DymoHalftoning ErrorDiffusion/Error Diffusion: "<>setpagedevice" +*DymoHalftoning NLL/Nonlinear Dithering: "<>setpagedevice" + +*de.Translation DymoHalftoning/Halbtöne: "" +*de.DymoHalftoning Default/Standard: "" +*de.DymoHalftoning ErrorDiffusion/Fehlerstreuung: "" +*de.DymoHalftoning NLL/Nichtlineare Farbmischung: "" + +*es.Translation DymoHalftoning/Proceso de semitono: "" +*es.DymoHalftoning Default/Predeterminado: "" +*es.DymoHalftoning ErrorDiffusion/Difusión de errores: "" +*es.DymoHalftoning NLL/Interpolación no linear: "" + +*es_CO.Translation DymoHalftoning/Proceso de semitono: "" +*es_CO.DymoHalftoning Default/Predeterminado: "" +*es_CO.DymoHalftoning ErrorDiffusion/Difusión de errores: "" +*es_CO.DymoHalftoning NLL/Interpolación no linear: "" + +*fr.Translation DymoHalftoning/Tramage: "" +*fr.DymoHalftoning Default/Par défaut: "" +*fr.DymoHalftoning ErrorDiffusion/Diffusion d'erreur: "" +*fr.DymoHalftoning NLL/Juxtaposition non linéaire: "" + +*fr_CA.Translation DymoHalftoning/Tramage: "" +*fr_CA.DymoHalftoning Default/Par défaut: "" +*fr_CA.DymoHalftoning ErrorDiffusion/Diffusion d'erreur: "" +*fr_CA.DymoHalftoning NLL/Juxtaposition non linéaire: "" + +*it.Translation DymoHalftoning/Mezzitoni: "" +*it.DymoHalftoning Default/Predefinito: "" +*it.DymoHalftoning ErrorDiffusion/Diffusione errore: "" +*it.DymoHalftoning NLL/Retino non lineare: "" + +*nl.Translation DymoHalftoning/Halftoon: "" +*nl.DymoHalftoning Default/Standaard: "" +*nl.DymoHalftoning ErrorDiffusion/Foutdiffusie: "" +*nl.DymoHalftoning NLL/Niet-lineaire rastering: "" + +*pt.Translation DymoHalftoning/Meio-tom: "" +*pt.DymoHalftoning Default/Padrão: "" +*pt.DymoHalftoning ErrorDiffusion/Difusão de erro: "" +*pt.DymoHalftoning NLL/Pontilhado não linear: "" + +*pt_BR.Translation DymoHalftoning/Meio-tom: "" +*pt_BR.DymoHalftoning Default/Padrão: "" +*pt_BR.DymoHalftoning ErrorDiffusion/Difusão de erro: "" +*pt_BR.DymoHalftoning NLL/Pontilhado não linear: "" + +*CloseUI: *DymoHalftoning + +*OpenUI *DymoPrintDensity/Print Density: PickOne +*OrderDependency: 20 AnySetup *DymoPrintDensity +*DefaultDymoPrintDensity: Normal +*DymoPrintDensity Light/Light: "" +*DymoPrintDensity Medium/Medium: "" +*DymoPrintDensity Normal/Normal: "" +*DymoPrintDensity Dark/Dark: "" + +*de.Translation DymoPrintDensity/Druckdichte: "" +*de.DymoPrintDensity Light/Niedrig: "" +*de.DymoPrintDensity Medium/Mittel: "" +*de.DymoPrintDensity Normal/Normal: "" +*de.DymoPrintDensity Dark/Hoch: "" + +*es.Translation DymoPrintDensity/Densidad de impresión: "" +*es.DymoPrintDensity Light/Bajo: "" +*es.DymoPrintDensity Medium/Mediano: "" +*es.DymoPrintDensity Normal/Normal: "" +*es.DymoPrintDensity Dark/Alto: "" + +*es_CO.Translation DymoPrintDensity/Densidad de impresión: "" +*es_CO.DymoPrintDensity Light/Bajo: "" +*es_CO.DymoPrintDensity Medium/Mediano: "" +*es_CO.DymoPrintDensity Normal/Normal: "" +*es_CO.DymoPrintDensity Dark/Alto: "" + +*fr.Translation DymoPrintDensity/Densité d’impression: "" +*fr.DymoPrintDensity Light/Faible: "" +*fr.DymoPrintDensity Medium/Moyenne: "" +*fr.DymoPrintDensity Normal/Normale: "" +*fr.DymoPrintDensity Dark/Élevée: "" + +*fr_CA.Translation DymoPrintDensity/Densité d'impression: "" +*fr_CA.DymoPrintDensity Light/Faible: "" +*fr_CA.DymoPrintDensity Medium/Moyenne: "" +*fr_CA.DymoPrintDensity Normal/Normale: "" +*fr_CA.DymoPrintDensity Dark/Élevée: "" + +*it.Translation DymoPrintDensity/Densità di stampa: "" +*it.DymoPrintDensity Light/Leggera: "" +*it.DymoPrintDensity Medium/Media: "" +*it.DymoPrintDensity Normal/Normale: "" +*it.DymoPrintDensity Dark/Scura: "" + +*nl.Translation DymoPrintDensity/Afdrukdichtheid: "" +*nl.DymoPrintDensity Light/Laag: "" +*nl.DymoPrintDensity Medium/Middel: "" +*nl.DymoPrintDensity Normal/Normaal: "" +*nl.DymoPrintDensity Dark/Hoog: "" + +*pt.Translation DymoPrintDensity/Densid. de impressão: "" +*pt.DymoPrintDensity Light/Baixo: "" +*pt.DymoPrintDensity Medium/Médio: "" +*pt.DymoPrintDensity Normal/Normal: "" +*pt.DymoPrintDensity Dark/Alto: "" + +*pt_BR.Translation DymoPrintDensity/Densid. de impressão: "" +*pt_BR.DymoPrintDensity Light/Baixo: "" +*pt_BR.DymoPrintDensity Medium/Médio: "" +*pt_BR.DymoPrintDensity Normal/Normal: "" +*pt_BR.DymoPrintDensity Dark/Alto: "" + +*CloseUI: *DymoPrintDensity + +*OpenUI *DymoPrintQuality/Print Quality: PickOne +*OrderDependency: 21 AnySetup *DymoPrintQuality +*DefaultDymoPrintQuality: Text +*DymoPrintQuality Text/Text Only: "<>setpagedevice" +*DymoPrintQuality Graphics/Barcodes and Graphics: "<>setpagedevice" + +*de.Translation DymoPrintQuality/Druckqualität: "" +*de.DymoPrintQuality Text/Nur Text: "" +*de.DymoPrintQuality Graphics/Barcode und Grafik: "" + +*es.Translation DymoPrintQuality/Calidad de impresión: "" +*es.DymoPrintQuality Text/Sólo texto: "" +*es.DymoPrintQuality Graphics/Código de barras y gráficas: "" + +*es_CO.Translation DymoPrintQuality/Calidad de impresión: "" +*es_CO.DymoPrintQuality Text/Sólo texto: "" +*es_CO.DymoPrintQuality Graphics/Código de barras y gráficas: "" + +*fr.Translation DymoPrintQuality/Qualité d’impression: "" +*fr.DymoPrintQuality Text/Texte uniquement: "" +*fr.DymoPrintQuality Graphics/Code-barres et graphisme: "" + +*fr_CA.Translation DymoPrintQuality/Qualité d'impression: "" +*fr_CA.DymoPrintQuality Text/Texte uniquement: "" +*fr_CA.DymoPrintQuality Graphics/Code-barres et graphisme: "" + +*it.Translation DymoPrintQuality/Qualità della stampa: "" +*it.DymoPrintQuality Text/Solo testo: "" +*it.DymoPrintQuality Graphics/Codice a barre e grafica: "" + +*nl.Translation DymoPrintQuality/Afdrukkwaliteit: "" +*nl.DymoPrintQuality Text/Alleen tekst: "" +*nl.DymoPrintQuality Graphics/Streepjescode en afbeeldingen: "" + +*pt.Translation DymoPrintQuality/Qualid. da impressão: "" +*pt.DymoPrintQuality Text/Somente texto: "" +*pt.DymoPrintQuality Graphics/Código de barras e gráficos: "" + +*pt_BR.Translation DymoPrintQuality/Qualid. da impressão: "" +*pt_BR.DymoPrintQuality Text/Somente texto: "" +*pt_BR.DymoPrintQuality Graphics/Código de barras e gráficos: "" + +*CloseUI: *DymoPrintQuality + +*UIConstraints: *DymoPrintQuality Text *Resolution 300x600dpi +*UIConstraints: *DymoPrintQuality Graphics *Resolution 300dpi +*UIConstraints: *Resolution 300x600dpi *DymoPrintQuality Text +*UIConstraints: *Resolution 300dpi *DymoPrintQuality Graphics + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + +*% +*% End of "$Id: lw450.ppd 16401 2011-10-31 18:51:16Z pineichen $" +*% diff --git a/cups-config/cups/printers.conf b/cups-config/cups/printers.conf new file mode 100644 index 0000000..e292827 --- /dev/null +++ b/cups-config/cups/printers.conf @@ -0,0 +1,24 @@ +# Printer configuration file for CUPS v2.4.16 +# Written by cupsd +# DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING +NextPrinterId 2 + +PrinterId 1 +UUID urn:uuid:e0ac4fa4-9ab4-3ad4-70e4-ffa942749675 +Info DYMO LabelWriter 450 +Location +MakeModel DYMO LabelWriter 450 +DeviceURI usb://DYMO/LabelWriter%20450?serial=13080117550634 +State Idle +StateTime 1778049613 +ConfigTime 1778048958 +Type 53316 +Accepting Yes +Shared Yes +JobSheets none none +QuotaPeriod 0 +PageLimit 0 +KLimit 0 +OpPolicy default +ErrorPolicy retry-job + diff --git a/cups-config/cups/printers.conf.O b/cups-config/cups/printers.conf.O new file mode 100644 index 0000000..3686006 --- /dev/null +++ b/cups-config/cups/printers.conf.O @@ -0,0 +1,24 @@ +# Printer configuration file for CUPS v2.4.16 +# Written by cupsd +# DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING +NextPrinterId 2 + +PrinterId 1 +UUID urn:uuid:e0ac4fa4-9ab4-3ad4-70e4-ffa942749675 +Info DYMO LabelWriter 450 +Location +MakeModel DYMO LabelWriter 450 +DeviceURI usb://DYMO/LabelWriter%20450?serial=13080117550634 +State Idle +StateTime 1778049110 +ConfigTime 1778048958 +Type 53316 +Accepting Yes +Shared Yes +JobSheets none none +QuotaPeriod 0 +PageLimit 0 +KLimit 0 +OpPolicy default +ErrorPolicy retry-job + diff --git a/cups-config/cups/raw.convs b/cups-config/cups/raw.convs new file mode 100644 index 0000000..0bd0e29 --- /dev/null +++ b/cups-config/cups/raw.convs @@ -0,0 +1,5 @@ +# This file was generated by the cups package. You may change it, or +# reconfigure this file with dpkg-reconfigure. If it is removed, it +# will be regenerated by the package scripts. + +application/octet-stream application/vnd.cups-raw 0 - diff --git a/cups-config/cups/raw.types b/cups-config/cups/raw.types new file mode 100644 index 0000000..839755f --- /dev/null +++ b/cups-config/cups/raw.types @@ -0,0 +1,5 @@ +# This file was generated by the cups package. You may change it, or +# reconfigure this file with dpkg-reconfigure. If it is removed, it +# will be regenerated by the package scripts. + +application/octet-stream diff --git a/cups-config/cups/snmp.conf b/cups-config/cups/snmp.conf new file mode 100644 index 0000000..a7d1e3b --- /dev/null +++ b/cups-config/cups/snmp.conf @@ -0,0 +1,7 @@ +# +# SNMP configuration file for CUPS. See "man cups-snmp.conf" for a complete +# description of this file. +# + +Address @LOCAL +Community public diff --git a/demo.xml b/demo.xml new file mode 100644 index 0000000..dce3d38 --- /dev/null +++ b/demo.xml @@ -0,0 +1,44 @@ + + + Landscape + LargeShipping + 30256 Shipping + + + + + + TEXT + + + + Rotation0 + False + False + Left + Middle + AlwaysFit + True + False + + + T + + + + + + + EST123 + + + + + + + + + + \ No newline at end of file diff --git a/docker-compose.local.yaml b/docker-compose.local.yaml new file mode 100644 index 0000000..6222a0b --- /dev/null +++ b/docker-compose.local.yaml @@ -0,0 +1,16 @@ +services: + # 1. CUPS Printserver: beheert de USB-printer en drivers + + # 2. Jouw Node.js Applicatie + label-service: + build: . + container_name: label-service + restart: unless-stopped + volumes: + - ./labels:/app/labels + ports: + - "3000:3000" + extra_hosts: + - "host.docker.internal:host-gateway" + environment: + - PRINTER_URL=http://192.168.2.171:631/printers/dymo diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..57c4095 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,30 @@ +services: + # 1. CUPS Printserver: beheert de USB-printer en drivers + cups: + image: olbat/cupsd:latest + container_name: cups-server + privileged: true + restart: unless-stopped + ports: + - "631:631" + volumes: + - /dev/labelprinter:/dev/labelprinter + + environment: + - CUPS_ADMIN_USER=admin + - CUPS_ADMIN_PASSWORD=password + + # 2. Jouw Node.js Applicatie + label-service: + build: . + container_name: label-service + restart: unless-stopped + volumes: + - ./labels:/app/labels + ports: + - "80:3000" + environment: + - PRINTER_URL=http://cups:631/printers/dymo + - API_BASE=labels/ + depends_on: + - cups \ No newline at end of file diff --git a/dymo.ppd b/dymo.ppd new file mode 100644 index 0000000..92d51bc --- /dev/null +++ b/dymo.ppd @@ -0,0 +1,628 @@ +*PPD-Adobe: "4.3" + +*% $Id: lw450.ppd 16401 2011-10-31 18:51:16Z pineichen $ + +*% DYMO LabelWriter Drivers +*% Copyright (C) 2009 Sanford L.P. + +*% This program is free software; you can redistribute it and/or +*% modify it under the terms of the GNU General Public License +*% as published by the Free Software Foundation; either version 2 +*% of the License, or (at your option) any later version. + +*% This program is distributed in the hope that it will be useful, +*% but WITHOUT ANY WARRANTY; without even the implied warranty of +*% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +*% GNU General Public License for more details. + +*% You should have received a copy of the GNU General Public License +*% along with this program; if not, write to the Free Software +*% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*FormatVersion: "4.3" +*FileVersion: "3.0" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "LW450.PPD" +*Manufacturer: "DYMO" +*Product: "(DYMO LabelWriter 450)" +*cupsVersion: 1.2 +*cupsManualCopies: False +*cupsFilter: "application/vnd.cups-raster 0 raster2dymolw" +*cupsModelNumber: 0 +*PSVersion: "(3010.000) 550" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "8" +*LandscapeOrientation: Minus90 +*TTRasterizer: Type42 + +*ModelName: "DYMO LabelWriter 450" +*NickName: "DYMO LabelWriter 450" +*ShortNickName: "DYMO LabelWriter 450" +*APPrinterIconPath: "/Library/Printers/DYMO/CUPS/Resources/LW450.icns" + +*cupsIPPReason com.dymo.out-of-paper-error/Out of labels. : "" +*cupsIPPReason com.dymo.read-error/Cannot read data from printer. : "" +*cupsIPPReason com.dymo.ready/Printer is ready. : "" +*cupsIPPReason com.dymo.general-error/General print error. : "" +*cupsIPPReason com.dymo.head-overheat-error/Print head is overheated. : "" +*cupsIPPReason com.dymo.slot-status-error/Label path is blocked. : "" +*cupsIPPReason com.dymo.busy-error/The printer is currently in use. : "" +*cupsIPPReason com.dymo.paper-size-error/Label being printed does not match label width currently in printer. : "" +*cupsIPPReason com.dymo.paper-size-undefine-error/Insert a label cassette in the printer. : "" + +*de.cupsIPPReason com.dymo.out-of-paper-error/Keine Etiketten mehr. : "" +*de.cupsIPPReason com.dymo.read-error/Kann keine Daten vom Drucker lesen. : "" +*de.cupsIPPReason com.dymo.ready/Drucker ist bereit. : "" +*de.cupsIPPReason com.dymo.general-error/Allgemeiner Fehler beim Drucken. : "" +*de.cupsIPPReason com.dymo.head-overheat-error/Druckkopf ist zu heiß. : "" +*de.cupsIPPReason com.dymo.slot-status-error/Etikettenzuführung ist blockiert. : "" +*de.cupsIPPReason com.dymo.busy-error/Der Drucker wird gegenwärtig verwendet. : "" +*de.cupsIPPReason com.dymo.paper-size-error/Zu druckendes Etikett passt nicht zur Breite der Etiketten im Drucker. : "" +*de.cupsIPPReason com.dymo.paper-size-undefine-error/Legen Sie eine Etikettenkassette in den Drucker ein. : "" + +*es.cupsIPPReason com.dymo.out-of-paper-error/No tiene etiquetas. : "" +*es.cupsIPPReason com.dymo.read-error/No se pueden leer los datos de la impresora. : "" +*es.cupsIPPReason com.dymo.ready/La impresora está lista. : "" +*es.cupsIPPReason com.dymo.general-error/Erreur d'impression générale. : "" +*es.cupsIPPReason com.dymo.head-overheat-error/El cabezal de impresión está sobrecalentado. : "" +*es.cupsIPPReason com.dymo.slot-status-error/La trayectoria de la etiqueta está bloqueada. : "" +*es.cupsIPPReason com.dymo.busy-error/La impresora se encuentra actualmente en uso. : "" +*es.cupsIPPReason com.dymo.paper-size-error/La etiqueta que se imprime no coincide con el ancho actual de la impresora. : "" +*es.cupsIPPReason com.dymo.paper-size-undefine-error/Inserte un cartucho de etiquetas en la impresora. : "" + +*es_CO.cupsIPPReason com.dymo.out-of-paper-error/No tiene etiquetas. : "" +*es_CO.cupsIPPReason com.dymo.read-error/No se pueden leer los datos de la impresora. : "" +*es_CO.cupsIPPReason com.dymo.ready/La impresora está lista. : "" +*es_CO.cupsIPPReason com.dymo.general-error/Erreur d'impression générale. : "" +*es_CO.cupsIPPReason com.dymo.head-overheat-error/El cabezal de impresión está sobrecalentado. : "" +*es_CO.cupsIPPReason com.dymo.slot-status-error/La trayectoria de la etiqueta está bloqueada. : "" +*es_CO.cupsIPPReason com.dymo.busy-error/La impresora se encuentra actualmente en uso. : "" +*es_CO.cupsIPPReason com.dymo.paper-size-error/La etiqueta que se imprime no coincide con el ancho actual de la impresora. : "" +*es_CO.cupsIPPReason com.dymo.paper-size-undefine-error/Inserte un cartucho de etiquetas en la impresora. : "" + +*fr.cupsIPPReason com.dymo.out-of-paper-error/Quantité d’étiquettes insuffisante. : "" +*fr.cupsIPPReason com.dymo.read-error/Impossible de lire les données depuis l'imprimante. : "" +*fr.cupsIPPReason com.dymo.ready/Imprimante prête. : "" +*fr.cupsIPPReason com.dymo.general-error/Erreur d'impression générale. : "" +*fr.cupsIPPReason com.dymo.head-overheat-error/Tête d'impression surchauffée. : "" +*fr.cupsIPPReason com.dymo.slot-status-error/Chemin des étiquettes bloqué. : "" +*fr.cupsIPPReason com.dymo.busy-error/Imprimante en cours d'utilisation. : "" +*fr.cupsIPPReason com.dymo.paper-size-error/Étiquette en cours d'impression pas de la même largeur que dans l'imprimante. : "" +*fr.cupsIPPReason com.dymo.paper-size-undefine-error/Insérer une cassette d'étiquettes dans l'imprimante. : "" + +*fr_CA.cupsIPPReason com.dymo.out-of-paper-error/Quantité d’étiquettes insuffisante. : "" +*fr_CA.cupsIPPReason com.dymo.read-error/Impossible de lire les données depuis l'imprimante. : "" +*fr_CA.cupsIPPReason com.dymo.ready/Imprimante prête. : "" +*fr_CA.cupsIPPReason com.dymo.general-error/Erreur d'impression générale. : "" +*fr_CA.cupsIPPReason com.dymo.head-overheat-error/Tête d'impression surchauffée. : "" +*fr_CA.cupsIPPReason com.dymo.slot-status-error/Chemin des étiquettes bloqué. : "" +*fr_CA.cupsIPPReason com.dymo.busy-error/Imprimante en cours d'utilisation. : "" +*fr_CA.cupsIPPReason com.dymo.paper-size-error/Étiquette en cours d'impression pas de la même largeur que dans l'imprimante. : "" +*fr_CA.cupsIPPReason com.dymo.paper-size-undefine-error/Insérer une cassette d'étiquettes dans l'imprimante. : "" + +*it.cupsIPPReason com.dymo.out-of-paper-error/Etichette esaurite. : "" +*it.cupsIPPReason com.dymo.read-error/Impossibile leggere i dati dalla stampante. : "" +*it.cupsIPPReason com.dymo.ready/Stampante pronta. : "" +*it.cupsIPPReason com.dymo.general-error/Errore generico di stampa. : "" +*it.cupsIPPReason com.dymo.head-overheat-error/Testina di stampa surriscaldata. : "" +*it.cupsIPPReason com.dymo.slot-status-error/Percorso etichetta bloccato. : "" +*it.cupsIPPReason com.dymo.busy-error/Stampante attualmente in uso. : "" +*it.cupsIPPReason com.dymo.paper-size-error/L'etichetta in stampa è diversa dalla larghezza impostata nella stampante. : "" +*it.cupsIPPReason com.dymo.paper-size-undefine-error/Inserire una cartuccia etichette nella stampante. : "" + +*nl.cupsIPPReason com.dymo.out-of-paper-error/Labels zijn op. : "" +*nl.cupsIPPReason com.dymo.read-error/Kan gegevens van de printer niet lezen. : "" +*nl.cupsIPPReason com.dymo.ready/Printer is gereed. : "" +*nl.cupsIPPReason com.dymo.general-error/Algemene afdrukfout. : "" +*nl.cupsIPPReason com.dymo.head-overheat-error/Printkop is oververhit. : "" +*nl.cupsIPPReason com.dymo.slot-status-error/Labelspoor is geblokkeerd. : "" +*nl.cupsIPPReason com.dymo.busy-error/De printer is momenteel in gebruik. : "" +*nl.cupsIPPReason com.dymo.paper-size-error/De af te drukken label komt niet overeen met de labelbreedte in de printer. : "" +*nl.cupsIPPReason com.dymo.paper-size-undefine-error/Plaats een labelcassette in de printer. : "" + +*pt.cupsIPPReason com.dymo.out-of-paper-error/Sem etiquetas. : "" +*pt.cupsIPPReason com.dymo.read-error/Não é possível ler dados da impressora. : "" +*pt.cupsIPPReason com.dymo.ready/A impressora está pronta. : "" +*pt.cupsIPPReason com.dymo.general-error/Erro geral de impressão. : "" +*pt.cupsIPPReason com.dymo.head-overheat-error/A cabeça de impressão está superaquecida. : "" +*pt.cupsIPPReason com.dymo.slot-status-error/O caminho da etiqueta está bloqueado. : "" +*pt.cupsIPPReason com.dymo.busy-error/A impressora está em uso no momento. : "" +*pt.cupsIPPReason com.dymo.paper-size-error/A etiqueta sendo impressa não coincide com a largura da etiqueta na impressora. : "" +*pt.cupsIPPReason com.dymo.paper-size-undefine-error/Inserir um cassete de etiquetas na impressora. : "" + +*pt_BR.cupsIPPReason com.dymo.out-of-paper-error/Sem etiquetas. : "" +*pt_BR.cupsIPPReason com.dymo.read-error/Não é possível ler dados da impressora. : "" +*pt_BR.cupsIPPReason com.dymo.ready/A impressora está pronta. : "" +*pt_BR.cupsIPPReason com.dymo.general-error/Erro geral de impressão. : "" +*pt_BR.cupsIPPReason com.dymo.head-overheat-error/A cabeça de impressão está superaquecida. : "" +*pt_BR.cupsIPPReason com.dymo.slot-status-error/O caminho da etiqueta está bloqueado. : "" +*pt_BR.cupsIPPReason com.dymo.busy-error/A impressora está em uso no momento. : "" +*pt_BR.cupsIPPReason com.dymo.paper-size-error/A etiqueta sendo impressa não coincide com a largura da etiqueta na impressora. : "" +*pt_BR.cupsIPPReason com.dymo.paper-size-undefine-error/Inserir um cassete de etiquetas na impressora. : "" + +*OpenUI *PageSize/Media Size: PickOne +*OrderDependency: 10 AnySetup *PageSize +*DefaultPageSize: w167h288 +*PageSize w154h64/11351 Jewelry Label: "<>setpagedevice" +*PageSize w72h154/11352 Return Address Int: "<>setpagedevice" +*PageSize w72h72/11353 Multi-Purpose: "<>setpagedevice" +*PageSize w162h90/11354 Multi-Purpose: "<>setpagedevice" +*PageSize w54h144/11355 Multi-Purpose: "<>setpagedevice" +*PageSize w118h252/11356 White Name badge: "<>setpagedevice" +*PageSize w167h188/14681 CD/DVD Label: "<>setpagedevice" +*PageSize w79h252/30252 Address: "<>setpagedevice" +*PageSize w167h252/30253 Address (2 up): "<>setpagedevice" +*PageSize w167h288/30256 Shipping: "<>setpagedevice" +*PageSize w154h198/30258 Diskette: "<>setpagedevice" +*PageSize w82h248/30277 File Folder (2 up): "<>setpagedevice" +*PageSize w154h64.1/30299 Jewelry Label (2 up): "<>setpagedevice" +*PageSize w79h252.1/30320 Address: "<>setpagedevice" +*PageSize w102h252/30321 Large Address: "<>setpagedevice" +*PageSize w154h286/30323 Shipping: "<>setpagedevice" +*PageSize w154h198.1/30324 Diskette: "<>setpagedevice" +*PageSize w54h424/30325 Video Spine: "<>setpagedevice" +*PageSize w131h221/30326 Video Top: "<>setpagedevice" +*PageSize w57h248/30327 File Folder: "<>setpagedevice" +*PageSize w54h144.1/30330 Return Address: "<>setpagedevice" +*PageSize w72h72.1/30332 1 in x 1 in: "<>setpagedevice" +*PageSize w72h72.2/30333 1/2 in x 1 in (2 up): "<>setpagedevice" +*PageSize w162h90.1/30334 2-1/4 in x 1-1/4 in: "<>setpagedevice" +*PageSize 30334_2-1_4_in_x_1-1_4_in/30334 2-1/4 in x 1-1/4 in: "<>setpagedevice" +*PageSize w73h86/30335 1/2 in x 1/2 in (4 up): "<>setpagedevice" +*PageSize w72h154.1/30336 1 in x 2-1/8 in: "<>setpagedevice" +*PageSize w118h252.1/30337 Audio Cassette: "<>setpagedevice" +*PageSize w54h203/30339 8mm Video (2 up): "<>setpagedevice" +*PageSize w54h180/30345 3/4 in x 2-1/2 in: "<>setpagedevice" +*PageSize w36h136/30346 1/2 in x 1-7/8 in: "<>setpagedevice" +*PageSize w72h108/30347 1 in x 1-1/2 in: "<>setpagedevice" +*PageSize w65h90/30348 9/10 in x 1-1/4 in: "<>setpagedevice" +*PageSize w167h288.1/30364 Name Badge Label: "<>setpagedevice" +*PageSize w168h252/30365 Name Badge Card: "<>setpagedevice" +*PageSize w144h169/30370 Zip Disk: "<>setpagedevice" +*PageSize w71h144/30373 Price Tag Label: "<>setpagedevice" +*PageSize w144h252/30374 Appointment Card: "<>setpagedevice" +*PageSize w80h144/30376 Hanging File Insert: "<>setpagedevice" +*PageSize w162h504/30383 PC Postage 3-Part: "<>setpagedevice" +*PageSize 30383_PC_Postage_3-Part/30383 PC Postage 3-Part: "<>setpagedevice" +*PageSize w167h540/30384 PC Postage 2-Part: "<>setpagedevice" +*PageSize 30384_PC_Postage_2-Part/30384 PC Postage 2-Part: "<>setpagedevice" +*PageSize w167h756/30387 PC Postage EPS: "<>setpagedevice" +*PageSize 30387_PC_Postage_EPS/30387 PC Postage EPS: "<>setpagedevice" +*PageSize w167h188.1/30854 CD Label: "<>setpagedevice" +*PageSize w176h292/30856 Badge Card Label: "<>setpagedevice" +*PageSize w167h288.2/30857 Badge Label: "<>setpagedevice" +*PageSize w112h126/30886 CD Label: "<>setpagedevice" +*PageSize w79h252.2/99010 Standard Address: "<>setpagedevice" +*PageSize w102h252.1/99012 Large Address: "<>setpagedevice" +*PageSize w154h286.1/99014 Name Badge Label: "<>setpagedevice" +*PageSize w154h286.2/99014 Shipping: "<>setpagedevice" +*PageSize w154h198.2/99015 Diskette: "<>setpagedevice" +*PageSize w63h419/99016 Video Spine: "<>setpagedevice" +*PageSize w139h221/99016 Video Top: "<>setpagedevice" +*PageSize w36h144/99017 Suspension File: "<>setpagedevice" +*PageSize w108h539/99018 Small Lever Arch: "<>setpagedevice" +*PageSize w167h539/99019 Large Lever Arch: "<>setpagedevice" +*PageSize w154h7680/Banner: "<>setpagedevice" +*PageSize w154h792/Continuous, Wide: "<>setpagedevice" +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 10 AnySetup *PageRegion +*DefaultPageRegion: w167h288 +*PageRegion w154h64/11351 Jewelry Label: "<>setpagedevice" +*PageRegion w72h154/11352 Return Address Int: "<>setpagedevice" +*PageRegion w72h72/11353 Multi-Purpose: "<>setpagedevice" +*PageRegion w162h90/11354 Multi-Purpose: "<>setpagedevice" +*PageRegion w54h144/11355 Multi-Purpose: "<>setpagedevice" +*PageRegion w118h252/11356 White Name badge: "<>setpagedevice" +*PageRegion w167h188/14681 CD/DVD Label: "<>setpagedevice" +*PageRegion w79h252/30252 Address: "<>setpagedevice" +*PageRegion w167h252/30253 Address (2 up): "<>setpagedevice" +*PageRegion w167h288/30256 Shipping: "<>setpagedevice" +*PageRegion w154h198/30258 Diskette: "<>setpagedevice" +*PageRegion w82h248/30277 File Folder (2 up): "<>setpagedevice" +*PageRegion w154h64.1/30299 Jewelry Label (2 up): "<>setpagedevice" +*PageRegion w79h252.1/30320 Address: "<>setpagedevice" +*PageRegion w102h252/30321 Large Address: "<>setpagedevice" +*PageRegion w154h286/30323 Shipping: "<>setpagedevice" +*PageRegion w154h198.1/30324 Diskette: "<>setpagedevice" +*PageRegion w54h424/30325 Video Spine: "<>setpagedevice" +*PageRegion w131h221/30326 Video Top: "<>setpagedevice" +*PageRegion w57h248/30327 File Folder: "<>setpagedevice" +*PageRegion w54h144.1/30330 Return Address: "<>setpagedevice" +*PageRegion w72h72.1/30332 1 in x 1 in: "<>setpagedevice" +*PageRegion w72h72.2/30333 1/2 in x 1 in (2 up): "<>setpagedevice" +*PageRegion w162h90.1/30334 2-1/4 in x 1-1/4 in: "<>setpagedevice" +*PageRegion 30334_2-1_4_in_x_1-1_4_in/30334 2-1/4 in x 1-1/4 in: "<>setpagedevice" +*PageRegion w73h86/30335 1/2 in x 1/2 in (4 up): "<>setpagedevice" +*PageRegion w72h154.1/30336 1 in x 2-1/8 in: "<>setpagedevice" +*PageRegion w118h252.1/30337 Audio Cassette: "<>setpagedevice" +*PageRegion w54h203/30339 8mm Video (2 up): "<>setpagedevice" +*PageRegion w54h180/30345 3/4 in x 2-1/2 in: "<>setpagedevice" +*PageRegion w36h136/30346 1/2 in x 1-7/8 in: "<>setpagedevice" +*PageRegion w72h108/30347 1 in x 1-1/2 in: "<>setpagedevice" +*PageRegion w65h90/30348 9/10 in x 1-1/4 in: "<>setpagedevice" +*PageRegion w167h288.1/30364 Name Badge Label: "<>setpagedevice" +*PageRegion w168h252/30365 Name Badge Card: "<>setpagedevice" +*PageRegion w144h169/30370 Zip Disk: "<>setpagedevice" +*PageRegion w71h144/30373 Price Tag Label: "<>setpagedevice" +*PageRegion w144h252/30374 Appointment Card: "<>setpagedevice" +*PageRegion w80h144/30376 Hanging File Insert: "<>setpagedevice" +*PageRegion w162h504/30383 PC Postage 3-Part: "<>setpagedevice" +*PageRegion 30383_PC_Postage_3-Part/30383 PC Postage 3-Part: "<>setpagedevice" +*PageRegion w167h540/30384 PC Postage 2-Part: "<>setpagedevice" +*PageRegion 30384_PC_Postage_2-Part/30384 PC Postage 2-Part: "<>setpagedevice" +*PageRegion w167h756/30387 PC Postage EPS: "<>setpagedevice" +*PageRegion 30387_PC_Postage_EPS/30387 PC Postage EPS: "<>setpagedevice" +*PageRegion w167h188.1/30854 CD Label: "<>setpagedevice" +*PageRegion w176h292/30856 Badge Card Label: "<>setpagedevice" +*PageRegion w167h288.2/30857 Badge Label: "<>setpagedevice" +*PageRegion w112h126/30886 CD Label: "<>setpagedevice" +*PageRegion w79h252.2/99010 Standard Address: "<>setpagedevice" +*PageRegion w102h252.1/99012 Large Address: "<>setpagedevice" +*PageRegion w154h286.1/99014 Name Badge Label: "<>setpagedevice" +*PageRegion w154h286.2/99014 Shipping: "<>setpagedevice" +*PageRegion w154h198.2/99015 Diskette: "<>setpagedevice" +*PageRegion w63h419/99016 Video Spine: "<>setpagedevice" +*PageRegion w139h221/99016 Video Top: "<>setpagedevice" +*PageRegion w36h144/99017 Suspension File: "<>setpagedevice" +*PageRegion w108h539/99018 Small Lever Arch: "<>setpagedevice" +*PageRegion w167h539/99019 Large Lever Arch: "<>setpagedevice" +*PageRegion w154h7680/Banner: "<>setpagedevice" +*PageRegion w154h792/Continuous, Wide: "<>setpagedevice" +*CloseUI: *PageRegion + +*DefaultImageableArea: w167h288 +*ImageableArea w154h64/11351 Jewelry Label: "0.00 4.32 150.72 58.80" +*ImageableArea w72h154/11352 Return Address Int: "4.08 4.32 69.12 146.64" +*ImageableArea w72h72/11353 Multi-Purpose: "4.08 4.32 69.12 65.28" +*ImageableArea w162h90/11354 Multi-Purpose: "2.88 4.32 159.12 85.68" +*ImageableArea w54h144/11355 Multi-Purpose: "4.08 4.32 51.12 127.68" +*ImageableArea w118h252/11356 White Name badge: "4.08 4.32 114.24 235.44" +*ImageableArea w167h188/14681 CD/DVD Label: "4.08 17.04 161.28 170.40" +*ImageableArea w79h252/30252 Address: "4.32 4.32 76.08 235.44" +*ImageableArea w167h252/30253 Address (2 up): "4.08 4.32 163.44 235.68" +*ImageableArea w167h288/30256 Shipping: "4.08 4.32 163.68 271.20" +*ImageableArea w154h198/30258 Diskette: "4.08 4.32 150.24 182.16" +*ImageableArea w82h248/30277 File Folder (2 up): "4.32 4.32 78.24 233.04" +*ImageableArea w154h64.1/30299 Jewelry Label (2 up): "0.00 4.32 150.72 58.80" +*ImageableArea w79h252.1/30320 Address: "4.32 4.32 76.08 235.44" +*ImageableArea w102h252/30321 Large Address: "4.32 4.32 98.40 234.96" +*ImageableArea w154h286/30323 Shipping: "4.32 4.32 150.24 270.48" +*ImageableArea w154h198.1/30324 Diskette: "2.88 4.32 150.24 182.16" +*ImageableArea w54h424/30325 Video Spine: "2.88 4.32 51.12 407.28" +*ImageableArea w131h221/30326 Video Top: "4.08 4.32 127.68 204.72" +*ImageableArea w57h248/30327 File Folder: "0.00 4.32 53.52 231.60" +*ImageableArea w54h144.1/30330 Return Address: "4.08 4.32 51.12 127.68" +*ImageableArea w72h72.1/30332 1 in x 1 in: "4.08 4.32 69.12 64.80" +*ImageableArea w72h72.2/30333 1/2 in x 1 in (2 up): "4.08 4.32 69.12 65.28" +*ImageableArea w162h90.1/30334 2-1/4 in x 1-1/4 in: "2.88 4.32 159.12 85.68" +*ImageableArea 30334_2-1_4_in_x_1-1_4_in/30334 2-1/4 in x 1-1/4 in: "2.88 4.32 159.12 85.68" +*ImageableArea w73h86/30335 1/2 in x 1/2 in (4 up): "0.00 4.32 70.08 81.12" +*ImageableArea w72h154.1/30336 1 in x 2-1/8 in: "4.08 4.32 69.12 146.64" +*ImageableArea w118h252.1/30337 Audio Cassette: "4.08 4.32 114.24 235.44" +*ImageableArea w54h203/30339 8mm Video (2 up): "4.08 4.32 51.12 186.72" +*ImageableArea w54h180/30345 3/4 in x 2-1/2 in: "4.08 4.32 51.12 163.68" +*ImageableArea w36h136/30346 1/2 in x 1-7/8 in: "4.08 4.32 33.12 118.80" +*ImageableArea w72h108/30347 1 in x 1-1/2 in: "4.08 4.32 69.12 91.68" +*ImageableArea w65h90/30348 9/10 in x 1-1/4 in: "5.04 4.32 61.92 73.68" +*ImageableArea w167h288.1/30364 Name Badge Label: "4.08 4.32 163.68 271.20" +*ImageableArea w168h252/30365 Name Badge Card: "0.00 4.32 161.28 225.12" +*ImageableArea w144h169/30370 Zip Disk: "4.32 4.32 141.12 152.88" +*ImageableArea w71h144/30373 Price Tag Label: "0.00 85.44 67.44 139.68" +*ImageableArea w144h252/30374 Appointment Card: "8.64 4.32 141.12 225.12" +*ImageableArea w80h144/30376 Hanging File Insert: "8.64 4.32 76.32 121.44" +*ImageableArea w162h504/30383 PC Postage 3-Part: "4.08 4.32 159.12 488.16" +*ImageableArea 30383_PC_Postage_3-Part/30383 PC Postage 3-Part: "4.08 4.32 159.12 488.16" +*ImageableArea w167h540/30384 PC Postage 2-Part: "4.08 4.32 163.68 524.16" +*ImageableArea 30384_PC_Postage_2-Part/30384 PC Postage 2-Part: "4.08 4.32 163.68 524.16" +*ImageableArea w167h756/30387 PC Postage EPS: "4.08 4.32 163.68 740.16" +*ImageableArea 30387_PC_Postage_EPS/30387 PC Postage EPS: "4.08 4.32 163.68 740.16" +*ImageableArea w167h188.1/30854 CD Label: "4.08 17.04 161.28 170.40" +*ImageableArea w176h292/30856 Badge Card Label: "0.00 4.32 161.28 264.72" +*ImageableArea w167h288.2/30857 Badge Label: "4.08 4.32 163.68 271.20" +*ImageableArea w112h126/30886 CD Label: "4.32 18.00 102.24 110.16" +*ImageableArea w79h252.2/99010 Standard Address: "4.32 4.32 76.08 235.44" +*ImageableArea w102h252.1/99012 Large Address: "4.32 4.32 98.40 234.96" +*ImageableArea w154h286.1/99014 Name Badge Label: "4.32 4.32 150.24 270.48" +*ImageableArea w154h286.2/99014 Shipping: "4.32 4.32 150.24 270.48" +*ImageableArea w154h198.2/99015 Diskette: "2.88 4.32 150.24 182.16" +*ImageableArea w63h419/99016 Video Spine: "0.00 4.32 59.52 402.24" +*ImageableArea w139h221/99016 Video Top: "0.00 4.32 136.08 204.48" +*ImageableArea w36h144/99017 Suspension File: "2.88 4.32 33.12 127.92" +*ImageableArea w108h539/99018 Small Lever Arch: "4.08 4.32 104.88 522.72" +*ImageableArea w167h539/99019 Large Lever Arch: "4.08 4.32 163.68 522.72" +*ImageableArea w154h7680/Banner: "4.08 17.04 148.08 7663.92" +*ImageableArea w154h792/Continuous, Wide: "4.32 4.32 150.24 775.68" + +*DefaultPaperDimension: w167h288 +*PaperDimension w154h64/11351 Jewelry Label: "153.60 63.12" +*PaperDimension w72h154/11352 Return Address Int: "72.00 153.12" +*PaperDimension w72h72/11353 Multi-Purpose: "72.00 72.00" +*PaperDimension w162h90/11354 Multi-Purpose: "162.00 90.00" +*PaperDimension w54h144/11355 Multi-Purpose: "54.00 144.00" +*PaperDimension w118h252/11356 White Name badge: "117.12 252.00" +*PaperDimension w167h188/14681 CD/DVD Label: "166.32 187.20" +*PaperDimension w79h252/30252 Address: "78.96 252.00" +*PaperDimension w167h252/30253 Address (2 up): "166.32 252.00" +*PaperDimension w167h288/30256 Shipping: "166.56 288.00" +*PaperDimension w154h198/30258 Diskette: "153.12 198.00" +*PaperDimension w82h248/30277 File Folder (2 up): "81.12 247.44" +*PaperDimension w154h64.1/30299 Jewelry Label (2 up): "153.60 63.12" +*PaperDimension w79h252.1/30320 Address: "78.96 252.00" +*PaperDimension w102h252/30321 Large Address: "101.28 251.04" +*PaperDimension w154h286/30323 Shipping: "153.12 285.84" +*PaperDimension w154h198.1/30324 Diskette: "153.12 198.00" +*PaperDimension w54h424/30325 Video Spine: "54.00 423.12" +*PaperDimension w131h221/30326 Video Top: "130.56 220.56" +*PaperDimension w57h248/30327 File Folder: "56.40 247.44" +*PaperDimension w54h144.1/30330 Return Address: "54.00 144.00" +*PaperDimension w72h72.1/30332 1 in x 1 in: "72.00 72.00" +*PaperDimension w72h72.2/30333 1/2 in x 1 in (2 up): "72.00 72.00" +*PaperDimension w162h90.1/30334 2-1/4 in x 1-1/4 in: "162.00 90.00" +*PaperDimension 30334_2-1_4_in_x_1-1_4_in/30334 2-1/4 in x 1-1/4 in: "162.00 90.00" +*PaperDimension w73h86/30335 1/2 in x 1/2 in (4 up): "72.96 85.44" +*PaperDimension w72h154.1/30336 1 in x 2-1/8 in: "72.00 153.12" +*PaperDimension w118h252.1/30337 Audio Cassette: "117.12 252.00" +*PaperDimension w54h203/30339 8mm Video (2 up): "54.00 202.56" +*PaperDimension w54h180/30345 3/4 in x 2-1/2 in: "54.00 180.00" +*PaperDimension w36h136/30346 1/2 in x 1-7/8 in: "36.00 135.12" +*PaperDimension w72h108/30347 1 in x 1-1/2 in: "72.00 108.00" +*PaperDimension w65h90/30348 9/10 in x 1-1/4 in: "64.80 90.00" +*PaperDimension w167h288.1/30364 Name Badge Label: "166.56 288.00" +*PaperDimension w168h252/30365 Name Badge Card: "167.04 252.00" +*PaperDimension w144h169/30370 Zip Disk: "144.00 168.72" +*PaperDimension w71h144/30373 Price Tag Label: "70.32 144.00" +*PaperDimension w144h252/30374 Appointment Card: "144.00 252.00" +*PaperDimension w80h144/30376 Hanging File Insert: "79.20 144.00" +*PaperDimension w162h504/30383 PC Postage 3-Part: "162.00 504.00" +*PaperDimension 30383_PC_Postage_3-Part/30383 PC Postage 3-Part: "162.00 504.00" +*PaperDimension w167h540/30384 PC Postage 2-Part: "166.56 540.00" +*PaperDimension 30384_PC_Postage_2-Part/30384 PC Postage 2-Part: "166.56 540.00" +*PaperDimension w167h756/30387 PC Postage EPS: "166.56 756.00" +*PaperDimension 30387_PC_Postage_EPS/30387 PC Postage EPS: "166.56 756.00" +*PaperDimension w167h188.1/30854 CD Label: "166.32 187.20" +*PaperDimension w176h292/30856 Badge Card Label: "175.44 291.60" +*PaperDimension w167h288.2/30857 Badge Label: "166.56 288.00" +*PaperDimension w112h126/30886 CD Label: "111.36 126.00" +*PaperDimension w79h252.2/99010 Standard Address: "78.96 252.00" +*PaperDimension w102h252.1/99012 Large Address: "101.28 251.04" +*PaperDimension w154h286.1/99014 Name Badge Label: "153.12 285.84" +*PaperDimension w154h286.2/99014 Shipping: "153.12 285.84" +*PaperDimension w154h198.2/99015 Diskette: "153.12 198.00" +*PaperDimension w63h419/99016 Video Spine: "62.40 418.56" +*PaperDimension w139h221/99016 Video Top: "138.96 220.56" +*PaperDimension w36h144/99017 Suspension File: "36.00 144.00" +*PaperDimension w108h539/99018 Small Lever Arch: "107.76 538.56" +*PaperDimension w167h539/99019 Large Lever Arch: "166.56 538.56" +*PaperDimension w154h7680/Banner: "153.12 7680.00" +*PaperDimension w154h792/Continuous, Wide: "153.12 792.00" + +*% Custom page size support +*HWMargins: 0 0 0 0 +*NonUIOrderDependency: 100 AnySetup *CustomPageSize True +*CustomPageSize True/Custom Page Size: "pop pop pop <>setpagedevice" +*ParamCustomPageSize Width: 1 points 10 161.28 +*ParamCustomPageSize Height: 2 points 10 7680 +*ParamCustomPageSize WidthOffset/Width Offset: 3 points 0 0 +*ParamCustomPageSize HeightOffset/Height Offset: 4 points 0 0 +*ParamCustomPageSize Orientation: 5 int 0 0 + +*OpenUI *Resolution/Output Resolution: PickOne +*OrderDependency: 20 AnySetup *Resolution +*DefaultResolution: 300dpi +*Resolution 300dpi/300 DPI: "<>setpagedevice" +*Resolution 300x600dpi/300x600 DPI: "<>setpagedevice" +*CloseUI: *Resolution + +*OpenUI *DymoHalftoning/Halftoning: PickOne +*OrderDependency: 20 AnySetup *DymoHalftoning +*DefaultDymoHalftoning: ErrorDiffusion +*DymoHalftoning Default/Default: "<>setpagedevice" +*DymoHalftoning ErrorDiffusion/Error Diffusion: "<>setpagedevice" +*DymoHalftoning NLL/Nonlinear Dithering: "<>setpagedevice" + +*de.Translation DymoHalftoning/Halbtöne: "" +*de.DymoHalftoning Default/Standard: "" +*de.DymoHalftoning ErrorDiffusion/Fehlerstreuung: "" +*de.DymoHalftoning NLL/Nichtlineare Farbmischung: "" + +*es.Translation DymoHalftoning/Proceso de semitono: "" +*es.DymoHalftoning Default/Predeterminado: "" +*es.DymoHalftoning ErrorDiffusion/Difusión de errores: "" +*es.DymoHalftoning NLL/Interpolación no linear: "" + +*es_CO.Translation DymoHalftoning/Proceso de semitono: "" +*es_CO.DymoHalftoning Default/Predeterminado: "" +*es_CO.DymoHalftoning ErrorDiffusion/Difusión de errores: "" +*es_CO.DymoHalftoning NLL/Interpolación no linear: "" + +*fr.Translation DymoHalftoning/Tramage: "" +*fr.DymoHalftoning Default/Par défaut: "" +*fr.DymoHalftoning ErrorDiffusion/Diffusion d'erreur: "" +*fr.DymoHalftoning NLL/Juxtaposition non linéaire: "" + +*fr_CA.Translation DymoHalftoning/Tramage: "" +*fr_CA.DymoHalftoning Default/Par défaut: "" +*fr_CA.DymoHalftoning ErrorDiffusion/Diffusion d'erreur: "" +*fr_CA.DymoHalftoning NLL/Juxtaposition non linéaire: "" + +*it.Translation DymoHalftoning/Mezzitoni: "" +*it.DymoHalftoning Default/Predefinito: "" +*it.DymoHalftoning ErrorDiffusion/Diffusione errore: "" +*it.DymoHalftoning NLL/Retino non lineare: "" + +*nl.Translation DymoHalftoning/Halftoon: "" +*nl.DymoHalftoning Default/Standaard: "" +*nl.DymoHalftoning ErrorDiffusion/Foutdiffusie: "" +*nl.DymoHalftoning NLL/Niet-lineaire rastering: "" + +*pt.Translation DymoHalftoning/Meio-tom: "" +*pt.DymoHalftoning Default/Padrão: "" +*pt.DymoHalftoning ErrorDiffusion/Difusão de erro: "" +*pt.DymoHalftoning NLL/Pontilhado não linear: "" + +*pt_BR.Translation DymoHalftoning/Meio-tom: "" +*pt_BR.DymoHalftoning Default/Padrão: "" +*pt_BR.DymoHalftoning ErrorDiffusion/Difusão de erro: "" +*pt_BR.DymoHalftoning NLL/Pontilhado não linear: "" + +*CloseUI: *DymoHalftoning + +*OpenUI *DymoPrintDensity/Print Density: PickOne +*OrderDependency: 20 AnySetup *DymoPrintDensity +*DefaultDymoPrintDensity: Normal +*DymoPrintDensity Light/Light: "" +*DymoPrintDensity Medium/Medium: "" +*DymoPrintDensity Normal/Normal: "" +*DymoPrintDensity Dark/Dark: "" + +*de.Translation DymoPrintDensity/Druckdichte: "" +*de.DymoPrintDensity Light/Niedrig: "" +*de.DymoPrintDensity Medium/Mittel: "" +*de.DymoPrintDensity Normal/Normal: "" +*de.DymoPrintDensity Dark/Hoch: "" + +*es.Translation DymoPrintDensity/Densidad de impresión: "" +*es.DymoPrintDensity Light/Bajo: "" +*es.DymoPrintDensity Medium/Mediano: "" +*es.DymoPrintDensity Normal/Normal: "" +*es.DymoPrintDensity Dark/Alto: "" + +*es_CO.Translation DymoPrintDensity/Densidad de impresión: "" +*es_CO.DymoPrintDensity Light/Bajo: "" +*es_CO.DymoPrintDensity Medium/Mediano: "" +*es_CO.DymoPrintDensity Normal/Normal: "" +*es_CO.DymoPrintDensity Dark/Alto: "" + +*fr.Translation DymoPrintDensity/Densité d’impression: "" +*fr.DymoPrintDensity Light/Faible: "" +*fr.DymoPrintDensity Medium/Moyenne: "" +*fr.DymoPrintDensity Normal/Normale: "" +*fr.DymoPrintDensity Dark/Élevée: "" + +*fr_CA.Translation DymoPrintDensity/Densité d'impression: "" +*fr_CA.DymoPrintDensity Light/Faible: "" +*fr_CA.DymoPrintDensity Medium/Moyenne: "" +*fr_CA.DymoPrintDensity Normal/Normale: "" +*fr_CA.DymoPrintDensity Dark/Élevée: "" + +*it.Translation DymoPrintDensity/Densità di stampa: "" +*it.DymoPrintDensity Light/Leggera: "" +*it.DymoPrintDensity Medium/Media: "" +*it.DymoPrintDensity Normal/Normale: "" +*it.DymoPrintDensity Dark/Scura: "" + +*nl.Translation DymoPrintDensity/Afdrukdichtheid: "" +*nl.DymoPrintDensity Light/Laag: "" +*nl.DymoPrintDensity Medium/Middel: "" +*nl.DymoPrintDensity Normal/Normaal: "" +*nl.DymoPrintDensity Dark/Hoog: "" + +*pt.Translation DymoPrintDensity/Densid. de impressão: "" +*pt.DymoPrintDensity Light/Baixo: "" +*pt.DymoPrintDensity Medium/Médio: "" +*pt.DymoPrintDensity Normal/Normal: "" +*pt.DymoPrintDensity Dark/Alto: "" + +*pt_BR.Translation DymoPrintDensity/Densid. de impressão: "" +*pt_BR.DymoPrintDensity Light/Baixo: "" +*pt_BR.DymoPrintDensity Medium/Médio: "" +*pt_BR.DymoPrintDensity Normal/Normal: "" +*pt_BR.DymoPrintDensity Dark/Alto: "" + +*CloseUI: *DymoPrintDensity + +*OpenUI *DymoPrintQuality/Print Quality: PickOne +*OrderDependency: 21 AnySetup *DymoPrintQuality +*DefaultDymoPrintQuality: Text +*DymoPrintQuality Text/Text Only: "<>setpagedevice" +*DymoPrintQuality Graphics/Barcodes and Graphics: "<>setpagedevice" + +*de.Translation DymoPrintQuality/Druckqualität: "" +*de.DymoPrintQuality Text/Nur Text: "" +*de.DymoPrintQuality Graphics/Barcode und Grafik: "" + +*es.Translation DymoPrintQuality/Calidad de impresión: "" +*es.DymoPrintQuality Text/Sólo texto: "" +*es.DymoPrintQuality Graphics/Código de barras y gráficas: "" + +*es_CO.Translation DymoPrintQuality/Calidad de impresión: "" +*es_CO.DymoPrintQuality Text/Sólo texto: "" +*es_CO.DymoPrintQuality Graphics/Código de barras y gráficas: "" + +*fr.Translation DymoPrintQuality/Qualité d’impression: "" +*fr.DymoPrintQuality Text/Texte uniquement: "" +*fr.DymoPrintQuality Graphics/Code-barres et graphisme: "" + +*fr_CA.Translation DymoPrintQuality/Qualité d'impression: "" +*fr_CA.DymoPrintQuality Text/Texte uniquement: "" +*fr_CA.DymoPrintQuality Graphics/Code-barres et graphisme: "" + +*it.Translation DymoPrintQuality/Qualità della stampa: "" +*it.DymoPrintQuality Text/Solo testo: "" +*it.DymoPrintQuality Graphics/Codice a barre e grafica: "" + +*nl.Translation DymoPrintQuality/Afdrukkwaliteit: "" +*nl.DymoPrintQuality Text/Alleen tekst: "" +*nl.DymoPrintQuality Graphics/Streepjescode en afbeeldingen: "" + +*pt.Translation DymoPrintQuality/Qualid. da impressão: "" +*pt.DymoPrintQuality Text/Somente texto: "" +*pt.DymoPrintQuality Graphics/Código de barras e gráficos: "" + +*pt_BR.Translation DymoPrintQuality/Qualid. da impressão: "" +*pt_BR.DymoPrintQuality Text/Somente texto: "" +*pt_BR.DymoPrintQuality Graphics/Código de barras e gráficos: "" + +*CloseUI: *DymoPrintQuality + +*UIConstraints: *DymoPrintQuality Text *Resolution 300x600dpi +*UIConstraints: *DymoPrintQuality Graphics *Resolution 300dpi +*UIConstraints: *Resolution 300x600dpi *DymoPrintQuality Text +*UIConstraints: *Resolution 300dpi *DymoPrintQuality Graphics + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + +*% +*% End of "$Id: lw450.ppd 16401 2011-10-31 18:51:16Z pineichen $" +*% diff --git a/frontend/index.html b/frontend/index.html new file mode 100644 index 0000000..c2ba007 --- /dev/null +++ b/frontend/index.html @@ -0,0 +1,146 @@ + + + + + + + +
+

Label Printer App

+ + + +
+
+ + + + + +
+ +
+
+ + +
+ +
+
+ +
+
+ Voorbeeld genereren... +
+ + + +
+ + + + + \ No newline at end of file diff --git a/input.csv b/input.csv new file mode 100644 index 0000000..e8cea3c --- /dev/null +++ b/input.csv @@ -0,0 +1,2 @@ +Voornaam;Achternaam;Straatnaam;Huisnr;Toev;Postcode;Woonplaats;Land +"Jan";"Jansen";"Dorpsstraat";"12";"a";"1234 AB";"Den Haag";"Nederland" diff --git a/labelelec.sh b/labelelec.sh new file mode 100755 index 0000000..d594ec5 --- /dev/null +++ b/labelelec.sh @@ -0,0 +1,6 @@ +#/bin/sh + + +docker build -t labelelec . + +/storage/bin/docker-compose up -d --build \ No newline at end of file diff --git a/labels/adres.glabels b/labels/adres.glabels new file mode 100644 index 0000000..d9e0e03 Binary files /dev/null and b/labels/adres.glabels differ diff --git a/labels/batch_bobz.glabels b/labels/batch_bobz.glabels new file mode 100644 index 0000000..7dd2e99 Binary files /dev/null and b/labels/batch_bobz.glabels differ diff --git a/labels/eenvoudig.glabels b/labels/eenvoudig.glabels new file mode 100644 index 0000000..09afdc9 Binary files /dev/null and b/labels/eenvoudig.glabels differ diff --git a/labels/etenopen.glabels b/labels/etenopen.glabels new file mode 100644 index 0000000..f4d3689 Binary files /dev/null and b/labels/etenopen.glabels differ diff --git a/labels/etenopslag.glabels b/labels/etenopslag.glabels new file mode 100644 index 0000000..8f9103f Binary files /dev/null and b/labels/etenopslag.glabels differ diff --git a/labels/outline.glabels b/labels/outline.glabels new file mode 100644 index 0000000..842cda2 Binary files /dev/null and b/labels/outline.glabels differ diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..6eda569 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,25 @@ +{ + "name": "labelelec", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "typescript": "^6.0.3" + } + }, + "node_modules/typescript": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..21185f7 --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "typescript": "^6.0.3" + } +} diff --git a/printer_emulation.img b/printer_emulation.img new file mode 100644 index 0000000..9e0f96a Binary files /dev/null and b/printer_emulation.img differ diff --git a/resultaat.pdf b/resultaat.pdf new file mode 100644 index 0000000..21f813f Binary files /dev/null and b/resultaat.pdf differ diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..1f8801e --- /dev/null +++ b/run.sh @@ -0,0 +1,6 @@ +#/bin/sh + + + + +docker compose -f docker-compose.local.yaml up --build \ No newline at end of file diff --git a/src/dist/dist/src/index.js b/src/dist/dist/src/index.js new file mode 100644 index 0000000..9c9fcb7 --- /dev/null +++ b/src/dist/dist/src/index.js @@ -0,0 +1,49 @@ +import { Dymo } from 'dymojs'; +const dymo = new Dymo(); +var labelXml = ` + + + Landscape + LargeShipping + 30256 Shipping + + + + + + TEXT + + + + Rotation0 + False + False + Left + Middle + AlwaysFit + True + False + + + T + + + + + + + EST123 + + + + + + + + + + +`; +dymo.print('DYMO LabelWriter 450', labelXml); diff --git a/src/dist/index.js b/src/dist/index.js new file mode 100644 index 0000000..d03fce4 --- /dev/null +++ b/src/dist/index.js @@ -0,0 +1,60 @@ +import fs from 'fs'; +function printDymoXml(xmlContent) { + // Schrijf de XML direct naar het printer device + // Zorg dat de container permissie heeft (via --device in docker) + fs.writeFile('/dev/labelprinter', xmlContent, (err) => { + if (err) { + console.error('Printfout:', err); + } + else { + console.log('XML succesvol naar printer gestuurd'); + } + }); +} +var labelXml = ` + + + Landscape + LargeShipping + 30256 Shipping + + + + + + TEXT + + + + Rotation0 + False + False + Left + Middle + AlwaysFit + True + False + + + T + + + + + + + EST123 + + + + + + + + + + +`; +printDymoXml(labelXml); diff --git a/src/dist/src/index.js b/src/dist/src/index.js new file mode 100644 index 0000000..9c9fcb7 --- /dev/null +++ b/src/dist/src/index.js @@ -0,0 +1,49 @@ +import { Dymo } from 'dymojs'; +const dymo = new Dymo(); +var labelXml = ` + + + Landscape + LargeShipping + 30256 Shipping + + + + + + TEXT + + + + Rotation0 + False + False + Left + Middle + AlwaysFit + True + False + + + T + + + + + + + EST123 + + + + + + + + + + +`; +dymo.print('DYMO LabelWriter 450', labelXml); diff --git a/src/dist/tsconfig.tsbuildinfo b/src/dist/tsconfig.tsbuildinfo new file mode 100644 index 0000000..a32ff7d --- /dev/null +++ b/src/dist/tsconfig.tsbuildinfo @@ -0,0 +1 @@ +{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/typescript/lib/lib.es2023.d.ts","../../node_modules/typescript/lib/lib.es2024.d.ts","../../node_modules/typescript/lib/lib.es2025.d.ts","../../node_modules/typescript/lib/lib.esnext.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../node_modules/typescript/lib/lib.es2023.intl.d.ts","../../node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2024.collection.d.ts","../../node_modules/typescript/lib/lib.es2024.object.d.ts","../../node_modules/typescript/lib/lib.es2024.promise.d.ts","../../node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2024.string.d.ts","../../node_modules/typescript/lib/lib.es2025.collection.d.ts","../../node_modules/typescript/lib/lib.es2025.float16.d.ts","../../node_modules/typescript/lib/lib.es2025.intl.d.ts","../../node_modules/typescript/lib/lib.es2025.iterator.d.ts","../../node_modules/typescript/lib/lib.es2025.promise.d.ts","../../node_modules/typescript/lib/lib.es2025.regexp.d.ts","../../node_modules/typescript/lib/lib.esnext.array.d.ts","../../node_modules/typescript/lib/lib.esnext.collection.d.ts","../../node_modules/typescript/lib/lib.esnext.date.d.ts","../../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../node_modules/typescript/lib/lib.esnext.error.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.esnext.temporal.d.ts","../../node_modules/typescript/lib/lib.esnext.typedarrays.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/index.ts"],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"1e9332c23e9a907175e0ffc6a49e236f97b48838cc8aec9ce7e4cec21e544b65","impliedFormat":1},{"version":"3753fbc1113dc511214802a2342280a8b284ab9094f6420e7aa171e868679f91","impliedFormat":1},{"version":"999ca32883495a866aa5737fe1babc764a469e4cde6ee6b136a4b9ae68853e4b","impliedFormat":1},{"version":"17f13ecb98cbc39243f2eee1f16d45cd8ec4706b03ee314f1915f1a8b42f6984","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"0bd714129fca875f7d4c477a1a392200b0bcd13fb2e80928cd334b63830ea047","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2c9037ae6cd2c52d80ceef0b3c5ffdb488627d71529cf4f63776daf11161c9a","affectsGlobalScope":true,"impliedFormat":1},{"version":"135d5cf4d345f59f1a9caadfafcd858d3d9cc68290db616cc85797224448cccc","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc238c3f81c2984751932b6aab223cd5b830e0ac6cad76389e5e9d2ffc03287d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4a07f9b76d361f572620927e5735b77d6d2101c23cdd94383eb5b706e7b36357","affectsGlobalScope":true,"impliedFormat":1},{"version":"7c4e8dc6ab834cc6baa0227e030606d29e3e8449a9f67cdf5605ea5493c4db29","affectsGlobalScope":true,"impliedFormat":1},{"version":"de7ba0fd02e06cd9a5bd4ab441ed0e122735786e67dde1e849cced1cd8b46b78","affectsGlobalScope":true,"impliedFormat":1},{"version":"6148e4e88d720a06855071c3db02069434142a8332cf9c182cda551adedf3156","affectsGlobalScope":true,"impliedFormat":1},{"version":"d63dba625b108316a40c95a4425f8d4294e0deeccfd6c7e59d819efa19e23409","affectsGlobalScope":true,"impliedFormat":1},{"version":"0568d6befee03dd435bed4fc25c4e46865b24bdcb8c563fdc21f580a2c301904","affectsGlobalScope":true,"impliedFormat":1},{"version":"30d62269b05b584741f19a5369852d5d34895aa2ac4fd948956f886d15f9cc0d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"ffbe6d7b295306b2ba88030f65b74c107d8d99bdcf596ea99c62a02f606108b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"996fb27b15277369c68a4ba46ed138b4e9e839a02fb4ec756f7997629242fd9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"79b712591b270d4778c89706ca2cfc56ddb8c3f895840e477388f1710dc5eda9","affectsGlobalScope":true,"impliedFormat":1},{"version":"20884846cef428b992b9bd032e70a4ef88e349263f63aeddf04dda837a7dba26","affectsGlobalScope":true,"impliedFormat":1},{"version":"5fcab789c73a97cd43828ee3cc94a61264cf24d4c44472ce64ced0e0f148bdb2","affectsGlobalScope":true,"impliedFormat":1},{"version":"db59a81f070c1880ad645b2c0275022baa6a0c4f0acdc58d29d349c6efcf0903","affectsGlobalScope":true,"impliedFormat":1},{"version":"673294292640f5722b700e7d814e17aaf7d93f83a48a2c9b38f33cbc940ad8b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"d786b48f934cbca483b3c6d0a798cb43bbb4ada283e76fb22c28e53ae05b9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":1},{"version":"142efd4ce210576f777dc34df121777be89eda476942d6d6663b03dcb53be3ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"379bc41580c2d774f82e828c70308f24a005b490c25ba34d679d84bcf05c3d9d","affectsGlobalScope":true,"impliedFormat":1},{"version":"ed484fb2aa8a1a23d0277056ec3336e0a0b52f9b8d6a961f338a642faf43235d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ffedae1d1c2d53fdbca1c96d3c7dda544281f7d262f99b6880634f8fd8d9820","affectsGlobalScope":true,"impliedFormat":1},{"version":"83a730b125d477dd264df8ba479afab27a3dae7152b005c214ab94dc7ee44fd3","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0c38884886c4edb7370e7e637f1e8bc956ec053ac17fcf7b018f878841934ab","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"}],"root":[90],"options":{"allowJs":true,"esModuleInterop":true,"jsx":4,"module":99,"outDir":"./","skipLibCheck":true,"strict":true,"target":4},"semanticDiagnosticsPerFile":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],"version":"6.0.3"} \ No newline at end of file diff --git a/src/package-lock.json b/src/package-lock.json new file mode 100644 index 0000000..bd6aed4 --- /dev/null +++ b/src/package-lock.json @@ -0,0 +1,1630 @@ +{ + "name": "labelelec", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "labelelec", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "canvas": "^3.2.3", + "cors": "^2.8.6", + "express": "^5.2.1", + "ipp": "^1.1.0", + "pdfkit": "^0.18.0" + }, + "devDependencies": { + "@types/cors": "^2.8.19", + "@types/express": "^5.0.6", + "@types/ipp": "^2.0.5", + "@types/node": "^24.12.2", + "@types/pdfkit": "^0.17.6", + "typescript": "^6.0.3" + } + }, + "node_modules/@noble/ciphers": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", + "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.21.tgz", + "integrity": "sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cors": { + "version": "2.8.19", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", + "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz", + "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^5.0.0", + "@types/serve-static": "^2" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", + "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ipp": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/ipp/-/ipp-2.0.5.tgz", + "integrity": "sha512-urVWEq8xGZyj9ddEXWaGotJ6uu2Jnn8qvUmsf2nWvQmOO5fw0ErUJGQE8nVHaIpe1fRsZ3ylSigySKT4xXvuwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "24.12.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.2.tgz", + "integrity": "sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/pdfkit": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.17.6.tgz", + "integrity": "sha512-tIwzxk2uWKp0Cq9JIluQXJid77lYhF52EsIOwhsMF4iWLA6YneoBR1xVKYYdAysHuepUB0OX4tdwMiUDdGKmig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/qs": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.1.2" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "license": "MIT", + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/canvas": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/canvas/-/canvas-3.2.3.tgz", + "integrity": "sha512-PzE5nJZPz72YUAfo8oTp0u3fqqY7IzlTubneAihqDYAUcBk7ryeCmBbdJBEdaH0bptSOe2VT2Zwcb3UaFyaSWw==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-addon-api": "^7.0.0", + "prebuild-install": "^7.1.3" + }, + "engines": { + "node": "^18.12.0 || >= 20.9.0" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "license": "ISC" + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/content-disposition": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", + "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==", + "license": "MIT" + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "license": "(MIT OR WTFPL)", + "engines": { + "node": ">=6" + } + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/fontkit": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-2.0.4.tgz", + "integrity": "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==", + "license": "MIT", + "dependencies": { + "@swc/helpers": "^0.5.12", + "brotli": "^1.3.2", + "clone": "^2.1.2", + "dfa": "^1.2.0", + "fast-deep-equal": "^3.1.3", + "restructure": "^3.0.0", + "tiny-inflate": "^1.0.3", + "unicode-properties": "^1.4.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "license": "MIT" + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ipp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ipp/-/ipp-1.1.0.tgz", + "integrity": "sha512-RwnBybTCrYZRsW0PAYIY004+1Cez1XfMsxlgxOG1VqUvTJZlYlVLkPRyFhNVtHqDaK3eaWfcTaWDJQSMDYDb5g==", + "engines": { + "node": "*" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/js-md5": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/js-md5/-/js-md5-0.8.3.tgz", + "integrity": "sha512-qR0HB5uP6wCuRMrWPTrkMaev7MJZwJuuw4fnwAzRgP4J4/F8RwtodOKpGp4XpqsLBFzzgqIO42efFAyz2Et6KQ==", + "license": "MIT" + }, + "node_modules/linebreak": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/linebreak/-/linebreak-1.1.0.tgz", + "integrity": "sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==", + "license": "MIT", + "dependencies": { + "base64-js": "0.0.8", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/linebreak/node_modules/base64-js": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "integrity": "sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-abi": { + "version": "3.90.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.90.0.tgz", + "integrity": "sha512-pZNQT7UnYlMwMBy5N1lV5X/YLTbZM5ncytN3xL7CHEzhDN8uVe0u55yaPUJICIJjaCW8NrM5BFdqr7HLweStNA==", + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", + "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/pdfkit": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/pdfkit/-/pdfkit-0.18.0.tgz", + "integrity": "sha512-NvUwSDZ0eYEzqAiWwVQkRkjYUkZ48kcsHuCO31ykqPPIVkwoSDjDGiwIgHHNtsiwls3z3P/zy4q00hl2chg2Ug==", + "license": "MIT", + "dependencies": { + "@noble/ciphers": "^1.0.0", + "@noble/hashes": "^1.6.0", + "fontkit": "^2.0.4", + "js-md5": "^0.8.3", + "linebreak": "^1.1.0", + "png-js": "^1.0.0" + } + }, + "node_modules/png-js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/png-js/-/png-js-1.1.0.tgz", + "integrity": "sha512-PM/uYGzGdNSzqeOgly68+6wKQDL1SY0a/N+OEa/+br6LnHWOAJB0Npiamnodfq3jd2LS/i2fMeOKSAILjA+m5Q==", + "dependencies": { + "browserify-zlib": "^0.2.0" + } + }, + "node_modules/prebuild-install": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "deprecated": "No longer maintained. Please contact the author of the relevant native addon; alternatives are available.", + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pump": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/qs": { + "version": "6.15.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", + "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/restructure": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.2.tgz", + "integrity": "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==", + "license": "MIT" + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tar-fs": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "license": "MIT" + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typescript": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true, + "license": "MIT" + }, + "node_modules/unicode-properties": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", + "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "license": "MIT", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "node_modules/unicode-trie/node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "license": "MIT" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + } + } +} diff --git a/src/package.json b/src/package.json new file mode 100644 index 0000000..140b447 --- /dev/null +++ b/src/package.json @@ -0,0 +1,28 @@ +{ + "name": "labelelec", + "version": "1.0.0", + "description": "", + "license": "ISC", + "author": "", + "type": "module", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "build": "npx tsc" + }, + "devDependencies": { + "@types/cors": "^2.8.19", + "@types/express": "^5.0.6", + "@types/ipp": "^2.0.5", + "@types/node": "^24.12.2", + "@types/pdfkit": "^0.17.6", + "typescript": "^6.0.3" + }, + "dependencies": { + "canvas": "^3.2.3", + "cors": "^2.8.6", + "express": "^5.2.1", + "ipp": "^1.1.0", + "pdfkit": "^0.18.0" + } +} diff --git a/src/src/index.ts b/src/src/index.ts new file mode 100644 index 0000000..0fc1416 --- /dev/null +++ b/src/src/index.ts @@ -0,0 +1,153 @@ +import express, { Request, Response } from 'express'; +import { exec } from 'child_process'; +import path from 'path'; +import fs from 'fs'; +import ipp from 'ipp'; +import zlib from 'zlib'; +import cors from 'cors'; +import { fileURLToPath } from 'url'; + +// 1. Definieer __dirname voor ES-modules +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const app = express(); + +app.use(cors()); +app.use(express.json()); + +const LABELS_DIR = path.join('labels'); +const TMP_CSV = '/tmp/input.csv'; +const OUTPUT_PDF = '/tmp/output.pdf'; + +const escapeCsv = (val: any) => `"${String(val).replace(/"/g, '""')}"`; + +const getPdfCmd = (req: Request) => { + + const { labelName, headers, data } = req.body; + const labelFile = path.join(LABELS_DIR, `${labelName}.glabels`); + + if (!fs.existsSync(labelFile)) return { cmd: null, labelName }; + + let cmd = `glabels-3-batch -o ${OUTPUT_PDF} ${labelFile}`; + + // Alleen als er headers en data zijn, maken we een CSV aan en voegen we de -i vlag toe + if (headers && data && data.length > 0) { + const csvContent = [ + headers.join(';'), + ...data.map((row: any[]) => row.map(escapeCsv).join(';')) + ].join('\n'); + + fs.writeFileSync(TMP_CSV, csvContent); + cmd = `glabels-3-batch -i ${TMP_CSV} -o ${OUTPUT_PDF} ${labelFile}`; + } + + return { cmd, labelName }; +} + +app.post('/print', async (req: Request, res: Response) => { + + const { cmd, labelName } = getPdfCmd(req); + if (!cmd) return res.status(404).send(`Label ${labelName} niet gevonden.`); + + const copies = Math.max(1, parseInt(req.body.copies) || 1); + + exec(cmd, async (error) => { + if (error) return res.status(500).send('Fout bij genereren: ' + error.message); + + try { + const pdfData = fs.readFileSync(OUTPUT_PDF); + await sendToCups(pdfData, copies); + res.send('Labels geprint!'); + } catch (err) { + res.status(500).send('Print fout: ' + err); + } + }); +}); + +app.post('/download', async (req: Request, res: Response) => { + const { headers, data, rotate, format } = req.body; // Voeg 'rotate' en 'format' toe + const { cmd, labelName } = getPdfCmd(req); + if (!cmd) return res.status(404).send(`Label ${labelName} niet gevonden.`); + + exec(cmd, (error) => { + if (error) return res.status(500).send('Fout: ' + error.message); + + if (format === 'png') { + const PNG_FILE = '/tmp/output.png'; + // -rotate: draai de afbeelding + // -density: zorgt voor scherpe kwaliteit (300 dpi) + const convertCmd = `convert -density 300 ${OUTPUT_PDF} -rotate ${rotate || 0} ${PNG_FILE}`; + + exec(convertCmd, (err) => { + if (err) return res.status(500).send('Conversie fout: ' + err.message); + res.setHeader('Content-Type', 'image/png'); + res.sendFile(PNG_FILE); + }); + } else { + // Standaard PDF sturen + res.setHeader('Content-Type', 'application/pdf'); + res.sendFile(OUTPUT_PDF); + } + }); +}); + +app.get('/labels', (req: Request, res: Response) => { + try { + const files = fs.readdirSync(LABELS_DIR).filter(file => file.endsWith('.glabels')); + + const labelData = files.map(file => { + const filePath = path.join(LABELS_DIR, file); + // Lees het bestand als buffer omdat het gecomprimeerd kan zijn + const buffer = fs.readFileSync(filePath); + + // Probeer te decomprimeren (als het GZIP is) of lees als tekst + let content = ''; + try { + content = zlib.gunzipSync(buffer).toString('utf-8'); + } catch { + content = buffer.toString('utf-8'); + } + console.log(content) + + // Regex om alle variabelen zoals ${Veldnaam} te vinden + const regex = /Field name="(.+?)"/g; + const matches = [...new Set([...content.matchAll(regex)].map(m => m[1]))]; + + return { + name: path.parse(file).name, + fields: matches + }; + }); + + res.json(labelData); + } catch (err) { + res.status(500).send('Fout bij ophalen labels: ' + err); + } +}); + +async function sendToCups(pdfBuffer: Buffer, copies: number = 1) { + const printerUrl = process.env.PRINTER_URL || "http://host.docker.internal:631/printers/dymo"; + const printer = new (ipp as any).Printer(printerUrl); + + return new Promise((resolve, reject) => { + printer.execute("Print-Job", { + "operation-attributes-tag": { "document-format": "application/pdf" }, + "job-attributes-tag": { "copies": copies }, + data: pdfBuffer + }, (err: Error | null, res: any) => err ? reject(err) : resolve(res)); + }); +} + + +// 2. Optioneel: Stuur index.html expliciet als iemand naar de root gaat +app.get('/', (req, res) => { + // Dit zorgt ervoor dat het pad altijd vanaf de root van je container wordt berekend + res.sendFile(path.join(__dirname, '../public/index.html')); +}); + + +app.use(express.static(path.join(__dirname, '../public'))); + + +app.listen(3000, '0.0.0.0'); \ No newline at end of file diff --git a/src/tsconfig.json b/src/tsconfig.json new file mode 100644 index 0000000..1edefcd --- /dev/null +++ b/src/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "ES2017", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "react-jsx", + "types": ["node"], + "incremental": true, + "plugins": [], + "paths": { + "@/*": ["./*"] + }, + "rootDir": "./src", + "noEmit": false, + "outDir": "./dist" + }, + "include": ["src/**/*", "src/types/**/*.d.ts"], + "exclude": ["node_modules"] +} diff --git a/src/tsconfig.tsbuildinfo b/src/tsconfig.tsbuildinfo new file mode 100644 index 0000000..f2d0cf3 --- /dev/null +++ b/src/tsconfig.tsbuildinfo @@ -0,0 +1 @@ +{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/typescript/lib/lib.es2024.d.ts","./node_modules/typescript/lib/lib.es2025.d.ts","./node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/typescript/lib/lib.es2023.intl.d.ts","./node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2024.collection.d.ts","./node_modules/typescript/lib/lib.es2024.object.d.ts","./node_modules/typescript/lib/lib.es2024.promise.d.ts","./node_modules/typescript/lib/lib.es2024.regexp.d.ts","./node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2024.string.d.ts","./node_modules/typescript/lib/lib.es2025.collection.d.ts","./node_modules/typescript/lib/lib.es2025.float16.d.ts","./node_modules/typescript/lib/lib.es2025.intl.d.ts","./node_modules/typescript/lib/lib.es2025.iterator.d.ts","./node_modules/typescript/lib/lib.es2025.promise.d.ts","./node_modules/typescript/lib/lib.es2025.regexp.d.ts","./node_modules/typescript/lib/lib.esnext.array.d.ts","./node_modules/typescript/lib/lib.esnext.collection.d.ts","./node_modules/typescript/lib/lib.esnext.date.d.ts","./node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/typescript/lib/lib.esnext.error.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","./node_modules/typescript/lib/lib.esnext.temporal.d.ts","./node_modules/typescript/lib/lib.esnext.typedarrays.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/@types/node/web-globals/crypto.d.ts","./node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/@types/node/web-globals/events.d.ts","./node_modules/buffer/index.d.ts","./node_modules/undici-types/utility.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client-stats.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/h2c-client.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-call-history.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/snapshot-agent.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/cache-interceptor.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/@types/node/web-globals/navigator.d.ts","./node_modules/@types/node/web-globals/storage.d.ts","./node_modules/@types/node/web-globals/streams.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/inspector.generated.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/sqlite.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@types/send/index.d.ts","./node_modules/@types/qs/index.d.ts","./node_modules/@types/range-parser/index.d.ts","./node_modules/@types/express-serve-static-core/index.d.ts","./node_modules/@types/http-errors/index.d.ts","./node_modules/@types/serve-static/index.d.ts","./node_modules/@types/connect/index.d.ts","./node_modules/@types/body-parser/index.d.ts","./node_modules/@types/express/index.d.ts","./node_modules/canvas/index.d.ts","./node_modules/@types/pdfkit/index.d.ts","./node_modules/@types/ipp/index.d.ts","./src/index.ts"],"fileIdsList":[[92,147,161,164,165,197,204],[92,147,161,164,165,197],[92,147,158,161,164,165,197,198,199,200],[92,147,164,165,201,203,205],[92,147,164,165],[92,147,164,165,190,197],[92,144,145,147,164,165],[92,146,147,164,165],[147,164,165],[92,147,152,164,165,182],[92,147,148,153,158,164,165,167,179,190],[92,147,148,149,158,164,165,167],[92,147,150,164,165,191],[92,147,151,152,159,164,165,168],[92,147,152,164,165,179,187],[92,147,153,155,158,164,165,167],[92,146,147,154,164,165],[92,147,155,156,164,165],[92,147,157,158,164,165],[92,146,147,158,164,165],[92,147,158,159,160,164,165,179,190],[92,147,158,159,160,164,165,174,179,182],[92,139,147,155,158,161,164,165,167,179,190],[92,147,158,159,161,162,164,165,167,179,187,190],[92,147,161,163,164,165,179,187,190],[90,91,92,93,94,95,96,97,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196],[92,147,158,164,165],[92,147,164,165,166,190],[92,147,155,158,164,165,167,179],[92,147,164,165,168],[92,147,164,165,169],[92,146,147,164,165,170],[92,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196],[92,147,164,165,172],[92,147,164,165,173],[92,147,158,164,165,174,175],[92,147,164,165,174,176,191,193],[92,147,159,164,165],[92,147,158,164,165,179,180,182],[92,147,164,165,181,182],[92,147,164,165,179,180],[92,147,164,165,182],[92,147,164,165,183],[92,144,147,164,165,179,184,190],[92,147,158,164,165,185,186],[92,147,164,165,185,186],[92,147,152,164,165,167,179,187],[92,147,164,165,188],[92,147,164,165,167,189],[92,147,161,164,165,173,190],[92,147,152,164,165,191],[92,147,164,165,179,192],[92,147,164,165,166,193],[92,147,164,165,194],[92,147,152,164,165],[92,139,147,164,165],[92,147,164,165,195],[92,139,147,158,160,164,165,170,179,182,190,192,193,195],[92,147,164,165,179,196],[92,147,164,165,179,197],[92,147,159,164,165,179,197],[92,147,161,164,165,197,202],[92,147,164,165,179],[92,105,108,111,112,147,164,165,190],[92,108,147,164,165,179,190],[92,108,112,147,164,165,190],[92,102,147,164,165],[92,106,147,164,165],[92,104,105,108,147,164,165,190],[92,147,164,165,167,187],[92,147,164,165,197],[92,102,147,164,165,197],[92,104,108,147,164,165,167,190],[92,99,100,101,103,107,147,158,164,165,179,190],[92,108,116,124,147,164,165],[92,100,106,147,164,165],[92,108,133,134,147,164,165],[92,100,103,108,147,164,165,182,190,197],[92,108,147,164,165],[92,104,108,147,164,165,190],[92,99,147,164,165],[92,102,103,104,106,107,108,109,110,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,134,135,136,137,138,147,164,165],[92,108,126,129,147,155,164,165],[92,108,116,117,118,147,164,165],[92,106,108,117,119,147,164,165],[92,107,147,164,165],[92,100,102,108,147,164,165],[92,108,112,117,119,147,164,165],[92,112,147,164,165],[92,106,108,111,147,164,165,190],[92,100,104,108,116,147,164,165],[92,108,126,147,164,165],[92,119,147,164,165],[92,102,108,133,147,164,165,182,195,197],[92,147,164,165,206,207,208,209]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"1e9332c23e9a907175e0ffc6a49e236f97b48838cc8aec9ce7e4cec21e544b65","impliedFormat":1},{"version":"3753fbc1113dc511214802a2342280a8b284ab9094f6420e7aa171e868679f91","impliedFormat":1},{"version":"999ca32883495a866aa5737fe1babc764a469e4cde6ee6b136a4b9ae68853e4b","impliedFormat":1},{"version":"17f13ecb98cbc39243f2eee1f16d45cd8ec4706b03ee314f1915f1a8b42f6984","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"0bd714129fca875f7d4c477a1a392200b0bcd13fb2e80928cd334b63830ea047","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2c9037ae6cd2c52d80ceef0b3c5ffdb488627d71529cf4f63776daf11161c9a","affectsGlobalScope":true,"impliedFormat":1},{"version":"135d5cf4d345f59f1a9caadfafcd858d3d9cc68290db616cc85797224448cccc","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc238c3f81c2984751932b6aab223cd5b830e0ac6cad76389e5e9d2ffc03287d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4a07f9b76d361f572620927e5735b77d6d2101c23cdd94383eb5b706e7b36357","affectsGlobalScope":true,"impliedFormat":1},{"version":"7c4e8dc6ab834cc6baa0227e030606d29e3e8449a9f67cdf5605ea5493c4db29","affectsGlobalScope":true,"impliedFormat":1},{"version":"de7ba0fd02e06cd9a5bd4ab441ed0e122735786e67dde1e849cced1cd8b46b78","affectsGlobalScope":true,"impliedFormat":1},{"version":"6148e4e88d720a06855071c3db02069434142a8332cf9c182cda551adedf3156","affectsGlobalScope":true,"impliedFormat":1},{"version":"d63dba625b108316a40c95a4425f8d4294e0deeccfd6c7e59d819efa19e23409","affectsGlobalScope":true,"impliedFormat":1},{"version":"0568d6befee03dd435bed4fc25c4e46865b24bdcb8c563fdc21f580a2c301904","affectsGlobalScope":true,"impliedFormat":1},{"version":"30d62269b05b584741f19a5369852d5d34895aa2ac4fd948956f886d15f9cc0d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"ffbe6d7b295306b2ba88030f65b74c107d8d99bdcf596ea99c62a02f606108b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"996fb27b15277369c68a4ba46ed138b4e9e839a02fb4ec756f7997629242fd9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"79b712591b270d4778c89706ca2cfc56ddb8c3f895840e477388f1710dc5eda9","affectsGlobalScope":true,"impliedFormat":1},{"version":"20884846cef428b992b9bd032e70a4ef88e349263f63aeddf04dda837a7dba26","affectsGlobalScope":true,"impliedFormat":1},{"version":"5fcab789c73a97cd43828ee3cc94a61264cf24d4c44472ce64ced0e0f148bdb2","affectsGlobalScope":true,"impliedFormat":1},{"version":"db59a81f070c1880ad645b2c0275022baa6a0c4f0acdc58d29d349c6efcf0903","affectsGlobalScope":true,"impliedFormat":1},{"version":"673294292640f5722b700e7d814e17aaf7d93f83a48a2c9b38f33cbc940ad8b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"d786b48f934cbca483b3c6d0a798cb43bbb4ada283e76fb22c28e53ae05b9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":1},{"version":"142efd4ce210576f777dc34df121777be89eda476942d6d6663b03dcb53be3ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"379bc41580c2d774f82e828c70308f24a005b490c25ba34d679d84bcf05c3d9d","affectsGlobalScope":true,"impliedFormat":1},{"version":"ed484fb2aa8a1a23d0277056ec3336e0a0b52f9b8d6a961f338a642faf43235d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ffedae1d1c2d53fdbca1c96d3c7dda544281f7d262f99b6880634f8fd8d9820","affectsGlobalScope":true,"impliedFormat":1},{"version":"83a730b125d477dd264df8ba479afab27a3dae7152b005c214ab94dc7ee44fd3","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"378281aa35786c27d5811af7e6bcaa492eebd0c7013d48137c35bbc69a2b9751","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"1b2dd1cbeb0cc6ae20795958ba5950395ebb2849b7c8326853dd15530c77ab0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"387a023d363f755eb63450a66c28b14cdd7bc30a104565e2dbf0a8988bb4a56c","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"f724236417941ea77ec8d38c6b7021f5fb7f8521c7f8c1538e87661f2c6a0774","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ea15fd99b2e34cb25fe8346c955000bb70c8b423ae4377a972ef46bfb37f595","impliedFormat":1},{"version":"7cf69dd5502c41644c9e5106210b5da7144800670cbe861f66726fa209e231c4","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"f9b4137a0d285bd77dba2e6e895530112264310ae47e07bf311feae428fb8b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"c06b2652ffeb89afd0f1c52c165ced77032f9cd09bc481153fbd6b5504c69494","impliedFormat":1},{"version":"51aecd2df90a3cffea1eb4696b33b2d78594ea2aa2138e6b9471ec4841c6c2ee","impliedFormat":1},{"version":"9d8f9e63e29a3396285620908e7f14d874d066caea747dc4b2c378f0599166b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"612422d5ba6b4a5c4537f423e9199645468ad80a689801da63ab7edb43f7b835","impliedFormat":1},{"version":"db9ada976f9e52e13f7ae8b9a320f4b67b87685938c5879187d8864b2fbe97f3","impliedFormat":1},{"version":"9f39e70a354d0fba29ac3cdf6eca00b7f9e96f64b2b2780c432e8ea27f133743","impliedFormat":1},{"version":"0dace96cc0f7bc6d0ee2044921bdf19fe42d16284dbcc8ae200800d1c9579335","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"c64e1888baaa3253ca4405b455e4bf44f76357868a1bd0a52998ade9a092ad78","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc8c6f5322961b56d9906601b20798725df60baeab45ec014fba9f795d5596fd","impliedFormat":1},{"version":"0904660ae854e6d41f6ff25356db1d654436c6305b0f0aa89d1532df0253486e","impliedFormat":1},{"version":"060d305fe4494d8cb2b99d620928d369d1ee55c1645f5e729a2aca07d0f108cb","impliedFormat":1},{"version":"230bdc111d7578276e4a3bb9d075d85c78c6b68f428c3a9935e2eaa10f4ae1f5","impliedFormat":1},{"version":"0c50296ee73dae94efc3f0da4936b1146ca6ce2217acfabb44c19c9a33fa30e5","impliedFormat":1},{"version":"bbf42f98a5819f4f06e18c8b669a994afe9a17fe520ae3454a195e6eabf7700d","impliedFormat":1},{"version":"0e5974dfff7a97181c7c376545f126b20acf2f1341db7d3fccea4977bf3ce19c","impliedFormat":1},{"version":"c7f977ea78a1b060a30554c1c4ec0e2269c6e305a349ca2ada14931ac27ecc0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"3806cdd6b48ba01a9198134e62a384ec217a98f316d4baef74dd46d62c947a63","impliedFormat":1},{"version":"ff65b8a8bd380c6d129becc35de02f7c29ad7ce03300331ca91311fb4044d1a9","impliedFormat":1},{"version":"04bf1aa481d1adfb16d93d76e44ce71c51c8ef68039d849926551199489637f6","impliedFormat":1},{"version":"2c9adcc85574b002c9a6311ff2141055769e0071856ec979d92ff989042b1f1b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bf3fe89ec8baa335f6370b9fa36308e1bc7a72e2eb2dad1e94f31e27fa28b5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"5fb39858b2459864b139950a09adae4f38dad87c25bf572ce414f10e4bd7baab","impliedFormat":1},{"version":"35390d6fa94bdb432c5d0bcb6547bdd11406c2692a6b90b9e47be2105ea19bd6","impliedFormat":1},{"version":"3910dab597c40e173bf0e0d419d3ce9682c54ebf6ae84849f9b829b1451a17ec","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"486c074a5c0f2254345c0d1c9540380f5463999e42d7e1a159305ea823d3c4b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"c119835edf36415081dfd9ed15fc0cd37aaa28d232be029ad073f15f3d88c323","impliedFormat":1},{"version":"8e7c3bed5f19ade8f911677ddc83052e2283e25b0a8654cd89db9079d4b323c7","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"ccf3afaeebbeee4ca9092101e99fd6abd681116b6e5ec23e381bbb1e1f32262c","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"ab7818a9d57a9297b90e456fc68b77f84d74395a9210a3cfa9d87db33aff8b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb08062718a5470cd864c1fae0eb5b3a3adc5bcd05dcf87608d6f60b65eca3f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"3a815b7d1aebc0646b91548eab2fc19dada09ff255d04c71ced00bbd3058c8eb","impliedFormat":1},{"version":"255d948f87f24ffd57bcb2fdf95792fd418a2e1f712a98cf2cce88744d75085c","impliedFormat":1},{"version":"0d5b085f36e6dc55bc6332ecb9c733be3a534958c238fb8d8d18d4a2b6f2a15a","impliedFormat":1},{"version":"836b36913830645ac3b28fe33731aac3fdb3524ee8adbb4cdab9a5c189f41943","affectsGlobalScope":true,"impliedFormat":1},{"version":"bfd3b3c21a56104693183942e221c1896ee23bcb8f8d91ab0b941f7b32985411","impliedFormat":1},{"version":"d7e9ab1b0996639047c61c1e62f85c620e4382206b3abb430d9a21fb7bc23c77","impliedFormat":1},{"version":"d34aa8df2d0b18fb56b1d772ff9b3c7aea7256cf0d692f969be6e1d27b74d660","impliedFormat":1},{"version":"f4db16820c99b6db923ab18af5fecb02331d785c4c2a8a88373a0cfc08256589","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"6823ccc7b5b77bbf898d878dbcad18aa45e0fa96bdd0abd0de98d514845d9ed9","affectsGlobalScope":true,"impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"168d88e14e0d81fe170e0dadd38ae9d217476c11435ea640ddb9b7382bdb6c1f","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"8e04cf0688e0d921111659c2b55851957017148fa7b977b02727477d155b3c47","impliedFormat":1},{"version":"c4995b9aff5198bdf89671a2706a3bf7a6b28c37a3993fe5050ebd672a0b288f","impliedFormat":1},{"version":"deadc214692b01495c5a238636de31d5bea1930cfe38392c33389cccedb81366","affectsGlobalScope":true,"impliedFormat":1},{"version":"1f91b32305c574a29ec1d6fc58692dbf40df293f28b0e75f459bb385f573331a","impliedFormat":1},{"version":"d01e11b5b7322420f461524a98652b71abb2ba7e53d1ebfb500f056d81ee1003","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"}],"root":[210],"options":{"allowJs":true,"esModuleInterop":true,"jsx":4,"module":99,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"strict":true,"target":4},"referencedMap":[[205,1],[204,2],[201,3],[206,4],[202,5],[209,6],[144,7],[145,7],[146,8],[92,9],[147,10],[148,11],[149,12],[90,5],[150,13],[151,14],[152,15],[153,16],[154,17],[155,18],[156,18],[157,19],[158,20],[159,21],[160,22],[93,5],[91,5],[161,23],[162,24],[163,25],[197,26],[164,27],[165,5],[166,28],[167,29],[168,30],[169,31],[170,32],[171,33],[172,34],[173,35],[174,36],[175,36],[176,37],[177,5],[178,38],[179,39],[181,40],[180,41],[182,42],[183,43],[184,44],[185,45],[186,46],[187,47],[188,48],[189,49],[190,50],[191,51],[192,52],[193,53],[194,54],[94,5],[95,55],[96,5],[97,5],[140,56],[141,57],[142,5],[143,42],[195,58],[196,59],[208,60],[199,5],[200,5],[198,61],[203,62],[98,5],[207,63],[88,5],[89,5],[14,5],[15,5],[17,5],[16,5],[2,5],[18,5],[19,5],[20,5],[21,5],[22,5],[23,5],[24,5],[25,5],[3,5],[26,5],[27,5],[4,5],[28,5],[32,5],[29,5],[30,5],[31,5],[33,5],[34,5],[35,5],[5,5],[36,5],[37,5],[38,5],[39,5],[6,5],[43,5],[40,5],[41,5],[42,5],[44,5],[7,5],[45,5],[50,5],[51,5],[46,5],[47,5],[48,5],[49,5],[8,5],[55,5],[52,5],[53,5],[54,5],[56,5],[9,5],[57,5],[58,5],[59,5],[61,5],[60,5],[62,5],[63,5],[10,5],[64,5],[65,5],[66,5],[11,5],[67,5],[68,5],[69,5],[70,5],[71,5],[72,5],[12,5],[73,5],[74,5],[75,5],[76,5],[77,5],[1,5],[78,5],[79,5],[13,5],[80,5],[81,5],[82,5],[83,5],[84,5],[85,5],[86,5],[87,5],[116,64],[128,65],[114,66],[129,63],[138,67],[105,68],[106,69],[104,70],[137,71],[132,72],[136,73],[108,74],[125,75],[107,76],[135,77],[102,78],[103,72],[109,79],[110,5],[115,80],[113,79],[100,81],[139,82],[130,83],[119,84],[118,79],[120,85],[123,86],[117,87],[121,88],[133,71],[111,89],[112,90],[124,91],[101,63],[127,92],[126,79],[122,93],[131,5],[99,5],[134,94],[210,95]],"version":"6.0.3"} \ No newline at end of file diff --git a/test.sh b/test.sh new file mode 100644 index 0000000..d352d31 --- /dev/null +++ b/test.sh @@ -0,0 +1,17 @@ +curl -X POST http://localhost:3000/print \ + -H "Content-Type: application/json" \ + -d '{ + "labelName": "outline" + }' + +curl -X POST http://localhost:3000/print \ + -H "Content-Type: application/json" \ + -d '{ + "labelName": "adres", + "headers": ["Voornaam", "Achternaam", "Straatnaam", "Huisnr", "Toev", "Postcode", "Woonplaats", "Land"], + "data": [ + ["Marieke", "de Vries", "Kerkweg", "5", "", "5678 CD", "Utrecht", "Nederland"], + ["Piet", "Pietersen", "Stationsplein", "101", "b", "9012 EF", "Rotterdam"], + ["Jan", "Jansen", "Dorpsstraat", "12", "a", "1234 AB", "Den Haag", "Nederland"] + ] + }' \ No newline at end of file diff --git a/test_download.sh b/test_download.sh new file mode 100644 index 0000000..098794e --- /dev/null +++ b/test_download.sh @@ -0,0 +1,19 @@ +curl -X POST http://localhost:3000/download \ + -H "Content-Type: application/json" \ + -d '{ + "labelName": "adres", + "headers": ["Voornaam", "Achternaam", "Straatnaam", "Huisnr", "Toev", "Postcode", "Woonplaats", "Land"], + "data": [ + ["Jan", "Jansen", "Dorpsstraat", "12", "a", "1234 AB", "Den Haag", "Nederland"] + ] + }' --output resultaat.pdf + +curl -X POST http://localhost:3000/download \ + -H "Content-Type: application/json" \ + -d '{ + "labelName": "etenopslag", + "headers": ["Product", "Datum"], + "data": [ + ["Aardappelpuree", "15-04-2026"] + ] + }' --output resultaat.pdf \ No newline at end of file