All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [Printing-architecture] Issue list from HP
       [not found] <46089FAF7804194C8AD6458E272B07182174584144@GVW0676EXC.americas.hpqcorp.net>
@ 2009-04-14 23:22 ` Till Kamppeter
       [not found]   ` <200904150120.n3F1Kg95023375@dsl092-065-009.bos1.dsl.speakeasy.net>
                     ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Till Kamppeter @ 2009-04-14 23:22 UTC (permalink / raw)
  To: Yie, Shiyun
  Cc: Tim Waugh, Suffield, David,
	'printing-summit@lists.linux-foundation.org',
	Johannes Meixner, Martin Pitt,
	printing-architecture@lists.linux-foundation.org

Yie, Shiyun wrote:
> Hi Till,
> 
> We have assembled a list of issues we would like to bring up during the printing summit.  Most of the topics can fit into one of the existing sessions.  Just want to give you a heads up.  Please see the list of issues in the attachment.
> 
> Thanks,
> Shiyun

Unfortunately, we did not find the time to talk about all these points 
on the Summit, but I will give some comments here. Everyone is invited 
to give his comments, too.

 > CUPS driver issues:
 > 1. GPL Ghostscript duplex support is missing. For Inkjets the backpage
 > needs x and y inversion. CUPS attributes cupsFlipDuplex and
 > cupsBackSide may have worked for ESP Ghostscript, but not in the
 > current GPL Ghostscript 8.63. What does pdftoraster do?

This needs to be fixed in the CUPS Raster output device of Ghostscript 
or in the pdftoraster CUPS filter. Both are part of Ghostscript. So 
please report a bug on http://bugs.ghostscript.com/ and post the link to 
your bug report here.

 > 2. CUPS filter pstoraster does not allow duplicate papersizes with
 > different printable regions. For example Letter and LetterDuplex use
 > the same paper size, but have different printable regions. When
 > LetterDuplex is selected only the printable region for Letter is
 > passed to CUPS driver. What does pdftoraster do?

The pstoraster filter only calls Ghostscript expecting that the pstops 
CUPS filter has inserted all option settings into the PostScript data 
stream. The inserted PostScript code contains only the width and height 
of the paper in points, neither margin info nor the paper size name, so 
Ghostscript has no information about the selected paper size in active 
PostScript code. I think in pdftoraster the paper size name gets into 
the process, but I am not sure how the CUPS Raster output device makes 
use of it. Please try out whether pdftoraster does the right thing. In 
general, report a bug on http://bugs.ghostscript.com/, as also 
pstoraster should work correctly.

 > 3. Static PPDs or dynamic? Older versions of CUPSDDK ppdc create
 > corrupt PPDs (ie: Ubuntu 8.04).

Let ./configure check the version number of the cupsddk in use. If it is 
too old (with the bug) default to static PPDs otherwise to dynamic PPDs.

 > General issues:
 > 4. The new DeviceKit (Fedora 11) will replace HAL fdi device
 > permission or ACL policies. Is there more information about this? Are
 > all distros going to support it (ie: Suse). What does LSB support?

Here we need comments from the distro people. Johannes, Tim, pitti? Can 
you comment here?

 > 5. System-config-printer is used by Fedora/Red Had and Ubuntu. It
 > would be nice if every Distro used the same solution for
 > auto-discovery, printer setup and systray applet.

Mandriva uses system-config-printer, too. Johannes, what about switching 
from YaST's printer tool to system-config-printer (and hal-cups-utils 
and Jockey)?

 > 6. The system-config-printer systray applet handles in-band printer
 > messages, but what about out-of-band printer messages. Is there a
 > specification for sending notifier messages the systray applet? This
 > would be helpful for informing the user when a proprietary plugin may
 > be needed for a printer at hotplug time.

The tray applet of system-config-printer already takes both in-band 
messages (from cupsd) and out-of-band messages (from hal_lpadmin, from 
the hal-cups-utils package). Perhaps you could make your messages in a 
way that they fit into the schemes how the tray applet of s-c-p receives 
messages. Perhaps you can do away with HPLIP's tray applet then. Any 
improvements of the s-c-p tray applet are welcome.

 > 7. Different distros have packaged HPLIP differently. Maybe LSB will
 > solve this, but can we have a common set of packages for HPLIP? This
 > will help backporting new packages for "Big Deals" on different
 > distros.

I am packaging for Ubuntu, and Debian uses it more or less identically. 
Packlaging for LSB is more complex, as many libraries are needed which 
LSB does not provide. This wouild require statically linking these libs 
(D-Bus, Python bindings, ...). On also needs to take into account that 
an LSB package must work with all distros which are certified compliant 
with the LSB version under consideration. This includes also enterprise 
distros which are released a longer time ago. So if you statically link 
D-Bus it is perhaps not compatible with these distros. You should need 
to fail gracefully in such a case (and only offer the features which 
work without D-Bus) or bring your own D-Bus stack (including daemon and 
all being able to run in parallel with a distro-installed D-Bus without 
interfering). Similar applies to UDEV. SANE should be sane as it did not 
change for long time.

 > 8. Cupstestppd is used by our customers for PPD validation.
 > Unfortunately using cupstesteppd for PPD validation is a moving
 > target. For example PPDs that pasted cupstestppd 1.1.23 will not pass
 > cupstestppd 1.3.7. This does not mean the PPDs are bad, but this is
 > hard to explain to the customer. Backporting PPDs is expensive, time
 > consuming and not always practical to re-test. Printer may no longer
 > be available. Can we add a compatibility command option to cupstestppd
 > so that we can show that PPDs are compatible with a specific version
 > of cupstestppd? See the following example.
 >  cupstestppd -R 1.1.23 *.ppd
 >  cupstestppd -R 1.2 *.ppd
 >  cupstestppd -R 1.3 *.ppd

cupstestppd got stricter with the newer CUPS versions. So if you make 
PPDs which pass the newest cupstestppd (1.4.x from SVN) your PPDs will 
pass any older version of cupstestppd. If this is not the case for a 
PPD, report a CUPS bug and attach the PPD.

 > 9. Need to integrate the distro’s auto installer with HP devices that
 > requires a plugin. With HP printers that require the binary plugin to
 > work, most of the distros’s auto installer will try to find a PPD that
 > partially matches the device’s name and install a queue for the
 > device. This is not acceptable because it gives the customer an
 > illusion that their device will work when it doesn’t.   Recommend
 > distro installers to call hp-plugin.

This is fixed in Ubuntu Jaunty (and every distro with the same or a 
newer system-config-printer). First, I have modified hal-cups-utils to 
not create print queues on partial matches of model names. Only exact 
matches lead to a non-interactive setup of a print queue. In addition, 
hal-cups-utils checks whether a printer needs firmware/plugins and if 
the plugin is not installed, there will also no queue be created. 
system-config-printer is automatically called in such cases for creating 
a queue interactively with the wizard. The wizard calls hp-plugin if 
needed. All this is implemented upstream in hal-cups-utils and 
system-config-printer, so it is only a question of time when it appears 
in Fedora and Mandriva. Johannes, what about SUSE?

 > 10. Common Printing Dialog
 >        a. What is the current state of common printing dialog
 >           architecture

The design was slightly updated. See Printing Summit and Peter Sikking's 
  blog (should appear soon). Two Google Summer of Code students will 
complete the implementation of the dialog this summer.

 >        b. Do we have the consensus from application vendor, distros,
 >           and system print dialog to adopt this architecture?

We need to complete the dialogs and also the application patches (A 
third Google Summer of Code Student) to offer this to desktop and 
application projects. Distros will take what comes from these projects.

 >        c. What is the timeline for including this in distros?

If distros patch the desktops and apps, a common dialog (not the one of 
OpenUsability but at least the GTK dialog under GNOME also with KDE apps 
(and vice-versa for KDE) can appear in the fall editions this year. If 
distros wait for upstream projects implementing it will take longer 
(spring 2010 editions). The OpenUsability dialog will come later.

But do not hesitate to implement the PPD extensions already now. They 
are also useful for other things. And if the dialog comes, your software 
is ready for it.

 > 11. Binary Package – offline question
 >        a. Where are we with the common binary packages

Technically it works. On the Summit we did some last agreements and the 
main agreement on the technical side is that you will not build the LSB 
RPMs. This will be done by our server, to assure that they fulfill all 
quality and security standards. You will have to supply a tarball with 
the binary files.

 >        b. Will the distro sign up to provide mechanism to support
 >           this? If so, when will it be available?

Yes, but only if the manufacturers take responsability on their software 
and the packages are built by the OpenPrinting database server.

A Google Summer of Code student will work on the upload web app and on 
the scripts for building the packages and putting them into the archive.

    Till


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Printing-architecture] [Printing-summit] Issue list from HP
       [not found]       ` <200904151139.n3FBdmZJ030596@dsl092-065-009.bos1.dsl.speakeasy.net>
@ 2009-04-15 11:47         ` Till Kamppeter
       [not found]           ` <200904151206.n3FC6n7j030700@dsl092-065-009.bos1.dsl.speakeasy.net>
  0 siblings, 1 reply; 5+ messages in thread
From: Till Kamppeter @ 2009-04-15 11:47 UTC (permalink / raw)
  To: Robert Krawitz
  Cc: printing-architecture, printing-summit, martin.pitt,
	Michael R Sweet

Robert Krawitz wrote:
>    Date: Tue, 14 Apr 2009 21:03:24 -0700
>    From: Michael R Sweet <msweet@apple.com>
> 
>    Robert Krawitz wrote:
>    > ...
>    > There is a CUPS API call named ppdPageSize that should get the
>    > *actual* named paper size.  We had this kind of issue with Gutenprint
>    > a while back; that turned out to be the solution.
> 
>    There is also a cupsPageSizeName attribute that can be set by
>    drivers that need to know which version of a size was selected.
> 
> Is that just
> 
> *cupsPageSizeName: True
> 
> in the top section of the file?
>

No, there is a special PostScript expression:

<</cupsPageSizeName (A4.Full)>>setpagedevice

So the PostScript code of each paper size must be

<</PageSize[595 842] /cupsPageSizeName (A4.Full)>>setpagedevice

pdftoraster supports this, too.

>    > I think we've had one or two cases of something that was accepted in
>    > an older version of CUPS (and not getting flagged by cupstestppd)
>    > being rejected by a newer version.  It was either resolution names or
>    > option names or values greater than 40 bytes or so.
> 
>    Resolution names and the PCFileName stuff come to mind.  There have
>    been issues with the lengths of translation strings, too.
> 
> PCFileName is a *real* crock these days.
>

Is it really needed in real life?

    Till


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Printing-architecture] [Printing-summit] Issue list from HP
       [not found]           ` <200904151206.n3FC6n7j030700@dsl092-065-009.bos1.dsl.speakeasy.net>
@ 2009-04-15 14:28             ` Till Kamppeter
  0 siblings, 0 replies; 5+ messages in thread
From: Till Kamppeter @ 2009-04-15 14:28 UTC (permalink / raw)
  To: Robert Krawitz
  Cc: printing-architecture, printing-summit, martin.pitt, msweet

Robert Krawitz wrote:
>    Date: Wed, 15 Apr 2009 13:47:39 +0200
>    From: Till Kamppeter <till.kamppeter@gmail.com>
> 
>    No, there is a special PostScript expression:
> 
>    <</cupsPageSizeName (A4.Full)>>setpagedevice
> 
>    So the PostScript code of each paper size must be
> 
>    <</PageSize[595 842] /cupsPageSizeName (A4.Full)>>setpagedevice
> 
> Like this?
> 
> *PageSize Letter.Full/Letter:	"<</PageSize[612 792]/cupsPageSizeName (Letter.Full)/ImagingBBox null>>setpagedevice"
>

Yes, exactly this way.

If a PDF workflow is used or an image is directly sent to CUPS there is 
no PostScript data stream involved. In these cases the pdftoraster and 
imagetoraster filters parse the PostScript code in the PPD file via a 
CUPS library function and so alo in this case both the paper size in 
numbers and the paper size name get made use of.

>    > PCFileName is a *real* crock these days.
> 
>    Is it really needed in real life?
> 
> Seems to me that everything newer than Windows 3.1 supports long file
> names.  We just generate names like STP00001.PPD, which aren't stable
> from release to release (when we add new printers).
> 

Here we only need to satisfy the specs somehow. This is one method.

    Till

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Printing-architecture] Issue list from HP
       [not found]     ` <49E5D2AB.7000000@redhat.com>
@ 2009-04-15 14:41       ` Till Kamppeter
  0 siblings, 0 replies; 5+ messages in thread
From: Till Kamppeter @ 2009-04-15 14:41 UTC (permalink / raw)
  To: Tim Waugh
  Cc: Suffield, David,
	'printing-summit@lists.linux-foundation.org',
	Johannes Meixner, Martin Pitt,
	printing-architecture@lists.linux-foundation.org

Tim Waugh wrote:
> Johannes Meixner wrote:
>> How is this implemented?
>> Via hardcoded stuff or is there a reliable working generic way?
> 
> Via hardcoded stuff that Till wrote, which depends on all sorts of HPLIP 
> internals, and which I will probably remove soon.
> 
> Tim.
> */
> 

It calls "hp-info -i -dURI". If the output contains "plugin = 1" the 
plugin is needed. system-config-printer also checks for "plugin = 2" to 
offer the plugin if it has optional enhancements. It uses the 
"plugin-reason" to tell the user which enhancements the plugin supplies. 
And it neverv creates a queue for a printer requiring the plugin if the 
plugin is rejected by the user. So non-working queues are generally not 
set up.

    Till

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Printing-architecture] Issue list from HP
  2009-04-14 23:22 ` [Printing-architecture] Issue list from HP Till Kamppeter
       [not found]   ` <200904150120.n3F1Kg95023375@dsl092-065-009.bos1.dsl.speakeasy.net>
       [not found]   ` <alpine.LNX.2.00.0904151216120.10560@nelson.suse.de>
@ 2009-04-27 16:16   ` Till Kamppeter
  2 siblings, 0 replies; 5+ messages in thread
From: Till Kamppeter @ 2009-04-27 16:16 UTC (permalink / raw)
  To: Yie, Shiyun, Suffield, David
  Cc: printing-architecture@lists.linux-foundation.org, Tim Waugh,
	Martin Pitt, 'printing-summit@lists.linux-foundation.org',
	Johannes Meixner

[-- Attachment #1: Type: text/plain, Size: 2767 bytes --]

Till Kamppeter wrote:
>  > CUPS driver issues:
>  > 1. GPL Ghostscript duplex support is missing. For Inkjets the backpage
>  > needs x and y inversion. CUPS attributes cupsFlipDuplex and
>  > cupsBackSide may have worked for ESP Ghostscript, but not in the
>  > current GPL Ghostscript 8.63. What does pdftoraster do?
> 
> This needs to be fixed in the CUPS Raster output device of Ghostscript 
> or in the pdftoraster CUPS filter. Both are part of Ghostscript. So 
> please report a bug on http://bugs.ghostscript.com/ and post the link to 
> your bug report here.
>

pdftoraster or pstoraster do not need to get fixed here, as the "cups" 
output device of Ghostscript reads the PPD directly. So all the static 
printer features in the PPD which are not to be set by the user or the 
admin are not needed to be treated in the wrapper filters pdftoraster or 
pstoraster.

The CUPS library does the PPD reading for Ghostscript's "cups" device. 
In contrary to what one expects from the documentation it does not 
support the cupsBackSide keyword but only the deprecated cupsFlipDuplex 
keyword. The same is valid for the "cups" output device. It only 
supports "cupsFlipDuplex". I have already reported a bug to CUPS:

http://www.cups.org/str.php?L3170

So currently, you can only add the deprecated

*cupsFlipDuplex: True

to the PPDs of the duplexing inkjets.

>  > 2. CUPS filter pstoraster does not allow duplicate papersizes with
>  > different printable regions. For example Letter and LetterDuplex use
>  > the same paper size, but have different printable regions. When
>  > LetterDuplex is selected only the printable region for Letter is
>  > passed to CUPS driver. What does pdftoraster do?
> 
> The pstoraster filter only calls Ghostscript expecting that the pstops 
> CUPS filter has inserted all option settings into the PostScript data 
> stream. The inserted PostScript code contains only the width and height 
> of the paper in points, neither margin info nor the paper size name, so 
> Ghostscript has no information about the selected paper size in active 
> PostScript code. I think in pdftoraster the paper size name gets into 
> the process, but I am not sure how the CUPS Raster output device makes 
> use of it. Please try out whether pdftoraster does the right thing. In 
> general, report a bug on http://bugs.ghostscript.com/, as also 
> pstoraster should work correctly.
>

The page size name problem was not a problem of pstoraster and 
pdftoraster but of the "cups" output device of Ghostscript. I have fixed 
this now in the Subversion repository of Ghostscript, so that different 
page size entries which differ only in the margins and not in the size 
are supported from Ghostscript 8.65 on. I have also attached the patch.

    Till

[-- Attachment #2: cups-device-select-pagesize-margins-by-pagesize-name.patch --]
[-- Type: text/x-patch, Size: 1097 bytes --]

Index: cups/gdevcups.c
===================================================================
--- cups/gdevcups.c	(revision 9663)
+++ cups/gdevcups.c	(working copy)
@@ -2948,6 +2948,10 @@
            i --, size ++)
 	if (fabs(cups->MediaSize[1] - size->length) < 5.0 &&
             fabs(cups->MediaSize[0] - size->width) < 5.0 &&
+#ifdef CUPS_RASTER_SYNCv1
+	    ((strlen(cups->header.cupsPageSizeName) == 0) ||
+	     (strcasecmp(cups->header.cupsPageSizeName, size->name) == 0)) &&
+#endif
 	    (!margins_set ||
 	     (fabs(cups->HWMargins[0] - size->left) < 1.0 &&
 	      fabs(cups->HWMargins[1] - size->bottom) < 1.0)))
@@ -2980,6 +2984,10 @@
              i --, size ++)
 	  if (fabs(cups->MediaSize[0] - size->length) < 5.0 &&
               fabs(cups->MediaSize[1] - size->width) < 5.0 &&
+#ifdef CUPS_RASTER_SYNCv1
+	      ((strlen(cups->header.cupsPageSizeName) == 0) ||
+	       (strcasecmp(cups->header.cupsPageSizeName, size->name) == 0)) &&
+#endif
 	      (!margins_set ||
 	       (fabs(cups->HWMargins[0] - size->left) < 1.0 &&
 		fabs(cups->HWMargins[1] - size->bottom) < 1.0)))

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2009-04-27 16:16 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <46089FAF7804194C8AD6458E272B07182174584144@GVW0676EXC.americas.hpqcorp.net>
2009-04-14 23:22 ` [Printing-architecture] Issue list from HP Till Kamppeter
     [not found]   ` <200904150120.n3F1Kg95023375@dsl092-065-009.bos1.dsl.speakeasy.net>
     [not found]     ` <49E55C8C.2010500@apple.com>
     [not found]       ` <200904151139.n3FBdmZJ030596@dsl092-065-009.bos1.dsl.speakeasy.net>
2009-04-15 11:47         ` [Printing-architecture] [Printing-summit] " Till Kamppeter
     [not found]           ` <200904151206.n3FC6n7j030700@dsl092-065-009.bos1.dsl.speakeasy.net>
2009-04-15 14:28             ` Till Kamppeter
     [not found]   ` <alpine.LNX.2.00.0904151216120.10560@nelson.suse.de>
     [not found]     ` <49E5D2AB.7000000@redhat.com>
2009-04-15 14:41       ` [Printing-architecture] " Till Kamppeter
2009-04-27 16:16   ` Till Kamppeter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.