.. /* * This file is part of the SavaPage project . * Copyright (c) 2026 Datraverse B.V. * Author: Rijk Ravestein. * * SPDX-FileCopyrightText: (c) 2020 Datraverse B.V. * SPDX-License-Identifier: CC-BY-SA-4.0 * * For more information, please contact Datraverse B.V. at this * address: info@datraverse.com */ .. _app-papercut: .. figure:: ../images/manual/savapage-logo-no-text-100px.png :width: 75px PaperCut Integration ==================== .. admonition:: |ADMONITION_TABLE_OF_CONTENTS| - :numref:`{number}. {name} ` - :numref:`{number}. {name} ` - :numref:`{number}. {name} ` - :numref:`{number}. {name} ` - :numref:`{number}. {name} ` - :numref:`{number}. {name} ` - :numref:`{number}. {name} ` PaperCut is a popular print and copy management software product developed by `PaperCut Software `__ based in Melbourne, Australia. Some functions that are not present in PaperCut can be implemented with SavaPage as pre-processor and integrator. .. note:: See :ref:`PaperCut Integration ` on how to set the PaperCut Connectivity options. .. _app-papercut-delegated-print: |DELEGATEDPRINT| to PaperCut ---------------------------- .. contents:: :depth: 1 :local: :ref:`Delegated Print ` is integrated with PaperCut when the following conditions are met: - PaperCut Integration is enabled: see :ref:`PaperCut Integration `. - |DELEGATEDPRINT| and |DELEGATEDPRINT| integration with PaperCut are enabled. See: - :ref:`Proxy Print Delegation ` - :ref:`Admin Web App: Options - PaperCut Delegated Print Integration ` The |PROXYPRINTER| must meet the following requirements: - The |PROXYPRINTER| is managed by PaperCut. - The |PROXYPRINTER| is configured as non-secure. See :ref:`Proxy Print `. If secure printing is required it must be configured in PaperCut and not in |PRODUCT_NAME|. .. warning:: *A Delegated Print job is denied when the delegate or any of the delegators does not exist in PaperCut.* This limitation can easily be solved when both systems synchronize from the same user source. See :ref:`User Source `. Tips for further reading: - :ref:`Delegated Print - PaperCut Scenario ` - :ref:`Delegated Print - Job Ticket - PaperCut Scenario ` .. _app-papercut-delegated-print-configuration: PaperCut Configuration ~~~~~~~~~~~~~~~~~~~~~~ .. contents:: :depth: 1 :local: .. _app-papercut-delegated-print-configuration-shared-account: Step 1 - Create shared account ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Create a shared parent account called ``SavaPage``. This top-level account *must* be present, since several sub-accounts will be lazy created by SavaPage. In addition, any printer used for DELEGATEDPRINT must be configured to charge to this account. See :ref:`Step 3 - Configure Printers `. .. note:: The PaperCut shared account name is known by the |PRODUCT_NAME| configuration key: |br| ``proxy-print.delegate.papercut.account.shared.parent`` The value defaults to ``SavaPage``. See |RST_LINK_CONFIG_EDITOR| on how to change this value. .. _app-papercut-delegated-print-configuration-personal-account: Step 2 - Enable Multiple Personal Accounts ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Enable the PaperCut “Multiple Personal Accounts” option and add the personal account ``SavaPage``. This account *must* be present for it is used by SavaPage to charge printing costs to individual persons. .. important:: The PaperCut personal account name is known by the |PRODUCT_NAME| configuration key: |br| ``proxy-print.delegate.papercut.account.personal`` The value defaults to ``SavaPage``. The account type for this account as determined by PaperCut in its own configuration key ``multi-personal-accounts.definitions`` (with values like ``USER-001``, ``USER-002``) can be set with this key: ``proxy-print.delegate.papercut.account.personal-type`` When a value is specified it is used to filter personal account transactions in JDBC queries (CSV downloads) for the Delegated Print context. See |RST_LINK_CONFIG_EDITOR| on how to change these values. .. _app-papercut-delegated-print-configuration-printers: Step 3 - Configure Printers ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Take a moment to consider how you want the PaperCut printers that are used for SavaPage |DELEGATEDPRINT| to act. A likely scenario is that you want these printers to be virtual hold/release queues so users can enjoy follow-me printing, and release print jobs at a series of physical printers. Or, may be you want these jobs to be released by administrators only. Consult the PaperCut User Manual on how implement the desired scenario. There is one crucial printer configuration property though that must be addressed. Make sure that |RST_GUILABEL_OVERRIDE_USER_LEVEL_SETTINGS| is set, and activate |RST_GUILABEL_DO_NOT_SHOW_ACCOUNT_POPUPS_AND_ALLOCATE_JOBS_TO| |RST_BUTTON_A_SINGLE_SHARED_ACCOUNT|. Use the Shared Account ``SavaPage`` (as created in Step 1) and select the |RST_BUTTON_CHARGE_SHARED_ACCOUNT| option. Now, when a |DELEGATEDPRINT| job is successfully printed by PaperCut, the cost will be automatically charged to the shared ``SavaPage`` account. PaperCut |DELEGATEDPRINT| Processing ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SavaPage monitors the print job status in PaperCut and, when printing is successful, charges the costs, as reported by PaperCut, to the proper PaperCut accounts, as explained in the section below. .. important:: In addition to PaperCut Account processing, account transactions are still added to SavaPage as explained in :ref:`Delegated Print Edit `. However, the printing costs reported by PaperCut overrule any costs defined in SavaPage for regular printing. *For Job Tickets, SavaPage cost is leading.* .. _app-papercut-delegated-print-accounting: PaperCut |DELEGATEDPRINT| Accounting ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. contents:: :depth: 1 :local: SavaPage uses the PaperCut cost total of the |DELEGATEDPRINT| job to add extra PaperCut account transactions. The *comment* of each account transaction holds a combination of pipe-separated (``|``) job parameter fields, with the following meaning: - *delegate* : the user (delegate) who printed the job on behalf of the target users (delegators). - *class* : the “class” a target user belongs to. A value of “``-``” (minus) means the user does not belong to a class. A class can be of type: - *shared* : a SavaPage :ref:`Shared Account `. - *group* : a SavaPage :ref:`Group Account `. - *copies* : the number of document copies printed (a *negative* number for a :ref:`Refund `). - *pages* : number of pages within the document. - *size* : the page size of the document (A4, A3). - *duplex* : D for duplex, S for simplex. - *color* : C for color, G for grayscale. - *id* : :ref:`CUPS job ID `, optionally preceded by Job Ticket Number or Tag. - *document* : the document name. - *comment* : any comment entered by the delegate (CR+LF, CR, LF and TAB are replaced by one space). As a rule SavaPage charges target users individually for print copies. As an extra, solely for reporting purposes, dedicated PaperCut shared accounts are used to accumulate cost and job information globally (the ``SavaPage\Jobs`` account) and per User Class. .. important:: No transaction appears in any PaperCut account when the cost of a print job is *zero*. For transactions to appear you need to specify page cost at the PaperCut printer configuration. .. _app-papercut-delegated-print-accounting-users: PaperCut User Accounting ^^^^^^^^^^^^^^^^^^^^^^^^ SavaPage proportionally splits the cost total of the printed |DELEGATEDPRINT| job over individual users (delegators), directly or indirectly by group membership. Costs are charged to their *personal* user account named ``SavaPage``. The comment format of the transaction is: ``group | delegate | copies | pages | size | duplex | color | id | document | comment`` Copies for users not belonging to a group have dummy group “``-``” (minus). .. _app-papercut-delegated-print-accounting-classes: PaperCut User Class Accounting ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SavaPage proportionally splits the cost total of the printed |DELEGATEDPRINT| job over “classes”. Class cost is proportional to the sum of the print copies for users belonging to the class. This cost is charged to a shared child account of the ``SavaPage`` parent account, with format: ``savapage.[class].[name]`` The ``[class]`` placeholder stands for the class *type* and can have value ``group`` or ``shared``. The ``[name]`` is placeholder for the class *name*. The *name* of a ``shared`` child account is prefixed with the name of its parent, separated by a dot character (as ``parent.child``). PaperCut shared child accounts are *ad-hoc* created by SavaPage on first use. The comment format of the transaction is: ``delegate | copies | pages | size | duplex | color | id | document | comment`` .. _app-papercut-delegated-print-accounting-jobs: PaperCut Job Accounting ^^^^^^^^^^^^^^^^^^^^^^^ As an extra, for each |DELEGATEDPRINT| job, SavaPage adds a transaction to the shared child account ``Jobs`` of the |PRODUCT_NAME| parent account. The comment format of the transaction is: ``delegate | copies | pages | size | duplex | color | id | delegate@class-1 | copies-1 | ... | delegate@class-n | copies-n | document | comment`` The ``delegate@class | copies`` field group shows the printed copies per class and is repeated for each class that was printed for. Copies for users not belonging to a class are accumulated in dummy class ``-`` (minus). .. note:: The PaperCut shared child account name is known by the SavaPage configuration key: ``proxy-print.delegate.papercut.account.shared.child.jobs`` The value defaults to ``Jobs``. See |RST_LINK_CONFIG_EDITOR| on how to change this value. .. _app-papercut-delegated-print-queries-reports: PaperCut Queries and Reports ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. contents:: :depth: 1 :local: Use the on-line queries and run the reports in the PaperCut Admin Web App to answer questions about |DELEGATEDPRINT| jobs and transactions from the following perspectives. .. _app-papercut-delegated-print-queries-reports-user-prints: User Prints ^^^^^^^^^^^ *SavaPage documents printed for a user.* *"Users > User List > User Details > Transactions"* gives a quick on-line view of personal account transactions. Sort and filter to find the SavaPage transactions. Use *"Reports > Transaction Reports > Transaction logs"* to generate a SavaPage transaction report for a user or user group over a period of time. The report shows the individual transaction details and the total amount charged. .. important:: PaperCut does *not* have a Transaction Report to accumulate transaction totals per user over a period of time. Please use the :ref:`Delegator Invoicing from PaperCut ` export function in SavaPage for that purpose. .. _app-papercut-delegated-print-queries-reports-class-prints: Class Prints ^^^^^^^^^^^^ *SavaPage documents printed for a class.* Select *"Accounts > Shared Account List > Account Details > Transaction"* for a SavaPage class account to get a quick on-line view of account transactions. Sort and filter to find transactions. The *"Reports > Shared Account Reports"* section contains many reports that summarize printing activity charged to shared accounts. Select the SavaPage class account to get a transaction summary report for a period of time. .. _app-papercut-delegated-print-queries-reports-delegate-prints: Delegate Prints ^^^^^^^^^^^^^^^ *SavaPage documents printed by a delegate.* *"Users > User List > User Details > Job Log"* gives a quick on-line view of the documents printed by a delegate user. Sort and filter to find the print jobs charged to the shared SavaPage account. .. _app-papercut-delegated-print-queries-reports-delegate-class-prints: Delegate Class Prints ^^^^^^^^^^^^^^^^^^^^^ *SavaPage documents printed by a delegate for a class.* Select *"Accounts > Shared Account List > Account Details > Transaction"* for the SavaPage Jobs account to get a quick on-line view of account transactions. Since the comment contains formatted information about classes, you can select transactions with the “Comment containing” filter. Likewise you can use *"Reports > Transaction Reports > Transaction logs"* to generate a SavaPage\\Jobs transaction report for over a period of time. The report shows the individual transaction details and the total amount charged.