Sent from my iPhone
On 4 Apr 2017, at 9:46 am, Khaled Hosny <khaledhosny@eglug.org> wrote:
On Tue, Apr 04, 2017 at 09:31:55AM +1000, Chris Sherlock wrote:
However, now that CUPS is pretty much standardised on mostly everything - including, it appears,
on an increasing number of *BSD
systems - is psprint still required for systems that are sticking with lpr?
My understanding (and I may pretty much be wrong, the code is convoluted to death) is that most
of psprint deals with printing using PostScript and when printing with PDF most of it is skipped.
PDF printing is the default and not even easy to change in recent versions, but that looks like a
bug. I believe we can kill PostScript printing and most of psprint with it and nothing of value
will be lost.
Regards,
Khaled
Thanks Khaled, appreciate the feedback.
I've started a private branch around Unix printing, see
https://cgit.freedesktop.org/libreoffice/core/log/?h=private/tbsdy/printinfomgr
I've changed over to use the standard template library for locking and condition variables in
CUPSManager.
I also was looking at the way that PrintInfoManager gets created - it's using what I think is an
unnecessary singleton pattern, given the printing system needs to be available all the time it
occurs to me that the only benefit this brings is lazy loading the instance, but is the overhead
really so bad that this shouldn't be created when we instantiate SalData?
I've added the following commit to have it instantiate in SalData and destroy itself when SalData
is destroyed:
https://cgit.freedesktop.org/libreoffice/core/commit/?h=private/tbsdy/printinfomgr&id=3e5bca1893f08b9372c1e0ab96a32aabf989acd4
Basically, this takes the creation out of the hands of the class PrinterInfoManager and puts it the
hands of SalData. In essence, the SalData constructor becomes a factory method and makes
PrinterInfoManager use an RAII idiom.
Another, possibly controversial change I'm proposing is to collapse the PrinterInfo class into the
JobData class - see
https://cgit.freedesktop.org/libreoffice/core/commit/?h=private/tbsdy/printinfomgr&id=d5d67b92282d9b4b28099671d439854981760911
I don't see any real need to have a PrinterInfo class, because that just seems to hold the defaults
of a printer configuration, which is actually just what you set on JobData. I honest don't see how
PrinterInfo added anything to the architecture.
I've jotted down a few notes in Unix printing in VCL, figured I might as well share them here -
feel free to comment if I've got something wrong.
Unix Printing in LibreOffice
Concepts
There are none to many printers available to print to
Print jobs can be sent to many different types of printers
Print jobs can be sent to a class of printers (CUPS), and one of the printers in the class will
print the print job
Each printer is defined by a printer description - a PPD
A user sends a print job to a print queue
A print queue can send jobs to a printer, but can have many printers to choose from (class or group)
Each queue can have multiple jobs which it must send to a printer for printing
Print Manager
add a printer queue
To add a printer queue a printer description must first be provided
If no printer description has ever been provided, then it must be provided to the the print manager
which then adds it to its printers collection (installs the printer description)
remove a printer queue
Spools print jobs to a queue
Cancels print jobs and removes spooled print jobs from queues
Pauses printing
Uninstalls a printer description (is this necessary?)
Allows configuring printer options for that alter the way a job is printed - done either by a
default printer configuration, or changed on a job by job basis
Detects the status of a print queue (e.g. error from printer, etc)
The available printer capabilities and features of a printer are defined in its printer description
(e.g. print quality, how it handles colour, available printer trays, collation, number of copies to
print, etc)
Note: On LibreOffice, if a Unix system does not have CUPS installed then it falls back to a built
in system called psprint.
Chris
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.