Die Hinweise scheinen sich im ersten Link Ihrer Frage zu befinden. Untersuchungen zeigen, dass Backends nur Skripte sind. Sie können also einfach Ihre eigenen schreiben. Es scheint jedoch, dass das gesuchte Skript, das für OpenSuse verfügbar ist, in Ihrem ersten Link beschrieben wird.
Das openSUSE RPM-Paket cups-backends bietet das Bash-Skript / usr / lib / cups / backend / pipe, ein Wrapper-Backend zum Drucken in ein beliebiges Programm.
Das Auffinden dieses Skripts wird durch die Tatsache erschwert, dass OpenSuse jetzt .ymp One-Click-Installer verwendet und Sie etwas tiefer graben müssen, um die tatsächliche RPM zu finden, die das Skript enthält. Hier ist ein Beispiel direkt aus cups-backends-1.1-296.6.noarch.rpm, das hier verfügbar ist.
Das Öffnen des Pakets mit dem Dateiroller und das Navigieren /./usr/lib/cups/backend/
innerhalb des Pakets sowie das Öffnen pipe
zeigt das folgende Skript:
#! /bin/bash
# CUPS wrapper backend "pipe" for printing to any program.
# It forwards the print job data like a pipe into another command.
# Author: Johannes Meixner <[email protected]>, 2009, 2014
# For basic information see "man 7 backend" and "man 7 filter".
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU GENERAL PUBLIC LICENSE Version 2
# as published by the Free Software Foundation.
# Activate the "set -x" line to get debugging info in /var/log/cups/error_log:
#set -x
# Output "Device Discovery" information on stdout:
if test "$#" = "0"
then
echo 'direct pipe "Unknown" "Forward print job data like a pipe to another command"'
exit 0
fi
# Output usage information in case of wrong number of parameters:
if test "$#" != "5" -a "$#" != "6"
then
echo 'Usage: pipe job-id user title copies options [file]' 1>&2
echo 'Queue setup example:' 1>&2
echo 'lpadmin -p queue_name -v "pipe:/path/to/command?option1=value1&-option2&value2" -E' 1>&2
echo 'The command is called with the specified options as:' 1>&2
echo '/path/to/command option1=value1 -option2 value2' 1>&2
echo 'The original command line parameters (... job-id user ...)' 1>&2
echo 'are provided as environment variables PIPE_BACKEND_ARGV[0-6]' 1>&2
exit 1
fi
# Keep the original command line parameters (... job-id user ...)
# in environment variables to make them available for the command:
export PIPE_BACKEND_ARGV0="$0"
export PIPE_BACKEND_ARGV1="$1"
export PIPE_BACKEND_ARGV2="$2"
export PIPE_BACKEND_ARGV3="$3"
export PIPE_BACKEND_ARGV4="$4"
export PIPE_BACKEND_ARGV5="$5"
export PIPE_BACKEND_ARGV6="$6"
# Have the input at fd0 (stdin) in any case:
if test -n "$6"
then
exec <"$6"
fi
# To be on the safe side clip anything after the first space character
# because spaces are excluded characters in a URI (see RFC 2396):
URI=${DEVICE_URI%% *}
# Extract the command to which the job schould be sent from the URI.
# Clip the URI scheme (anything up to the first ':' character) and
# clip anything after the first '?' character
# because anything after the first '?' character are options:
COMMAND=${URI#*:}
COMMAND=${COMMAND%%\?*}
# Extract the options (e.g. from 'pipe:/path/to/command?option1=value1&-option2&value2'
# clip anything up to the first '?' character and
# replace the options separator '&' character by a space:
OPTIONS=${URI#*\?}
if test "$OPTIONS" = "$URI"
then
OPTIONS=""
fi
OPTIONS=$( echo "$OPTIONS" | tr '&' ' ' )
# Options could have been specified in a wrong way
# as addendum to the DeviceURI separated by spaces
# (spaces are excluded characters in a URI, see RFC 2396)
# which works by luck at least for some CUPS versions
# see https://bugzilla.novell.com/show_bug.cgi?id=499735
# like 'pipe:/path/to/command option1=value1 -option2 value2'
# nevertheless use additionally those kind of options too:
MORE_OPTIONS=${DEVICE_URI#* }
if test "$MORE_OPTIONS" = "$DEVICE_URI"
then
MORE_OPTIONS=""
fi
OPTIONS=$( echo "$OPTIONS" "$MORE_OPTIONS" | tr -s ' ' )
# Test if the command is executable:
if ! test -x "$COMMAND"
then
echo "Cannot execute $COMMAND" 1>&2
exit 1
fi
# Replace this wrapper with the actual command
# so that it exits with the exit code of the command
# and that the command gets any signals directly.
exec "$COMMAND" $OPTIONS
Da dies ein Bash-Skript ist, sollten Sie es mit jeder Version von 'nix einschließlich Ubuntu verwenden können, mit einer Bash-Shell, nicht nur mit Suse.
Um Cups ein Backend hinzuzufügen, müssen Sie es kopieren /usr/lib/cups/backend
und die Berechtigungen und den Besitz entsprechend festlegen.
chown root:root /usr/lib/cups/backend/pipe
chmod 755 /usr/lib/cups/backend/pipe
Quellen:
https://www.cups.org/doc/man-backend.html
https://build.opensuse.org/package/view_file/Printing/cups-backends/cups-backends.spec?expand=1
Wie extrahiere ich eine RPM-Datei?
Ich suchte das Gleiche, fand aber nichts Leichtes. Ich werde hier schreiben, wie ich es gelöst habe, vielleicht finden andere die Lösung nützlich.
Mein Treiber ist für den manuellen Duplexdruck vorgesehen, aber anstelle des Duplexdrucks (in der Duplexdruckdatei) können Sie Ihren eigenen Code implementieren. Sie haben dort auch einen Installer ...
Der Quellcode befindet sich auf github: https://github.com/dentys03/manual_duplex_linux
Es sollte auf jedem HP Drucker funktionieren. Leicht für andere Drucker geeignet, denke ich.
quelle