PDF - lpadmin

Helge Blischke h.blischke at acm.org
Wed Jul 13 02:24:36 PDT 2011


Seema wrote:

>> Seema wrote:
>>
>> > Installed - cups, poppler and ghostscript from timesys, working on arm
>> > processor.
>> >
>> > I want to create pdf files from QT Application.
>> > I am using simple program
>> >     QPainter painter;
>> >     QString file = "/home/test/test.pdf";
>> >     printer.setOutputFormat(QPrinter::PDFFormat);
>> >     printer.setOutputFileName(file);
>> >     if(painter.begin(&printer))
>> >     {
>> >         QPoint point;
>> >         point.setX(10);
>> >         point.setY(10);
>> >         QString text = "testing";
>> >         painter.drawText(point, text);
>> >         painter.end();
>> >
>> >     }
>> >
>> > Used lpadmin to add printer
>> > lpadmin -p "ghostpdf" -v "ipp://localhost:631/home/test" -D "ghostpdf"
>> > -E -P "/usr/share/cups/model/ghostpdf.ppd"
>> >
>> > I have no physical printer attached. What is wrong here?
>> >
>> > Here is the output of my error_log
>> >
>> > I [12/Jul/2011:10:58:30 +0000] Listening to ::1:631 (IPv6)
>> > I [12/Jul/2011:10:58:30 +0000] Listening to 127.0.0.1:631 (IPv4)
>> > I [12/Jul/2011:10:58:30 +0000] Listening to /var/run/cups/cups.sock
>> > (Domain) I [12/Jul/2011:10:58:30 +0000] Remote access is disabled.
>> > I [12/Jul/2011:10:58:30 +0000] Loaded configuration file
>> > "/etc/cups/cupsd.conf" D [12/Jul/2011:10:58:30 +0000] Repairing
>> > ownership of "/var/cache/cups" D [12/Jul/2011:10:58:30 +0000] Repairing
>> > access permissions of "/var/cache/cups" D [12/Jul/2011:10:58:30 +0000]
>> > Repairing ownership of "/var/cache/cups/rss" D [12/Jul/2011:10:58:30
>> > +0000] Repairing access permissions of "/var/cache/cups/rss" D
>> > [12/Jul/2011:10:58:30 +0000] Repairing ownership of "/var/run/cups" D
>> > [12/Jul/2011:10:58:30 +0000] Repairing access permissions of
>> > "/var/run/cups" D [12/Jul/2011:10:58:30 +0000] Creating missing
>> > directory "/var/run/cups/certs" D [12/Jul/2011:10:58:30 +0000]
>> > Repairing ownership of "/var/run/cups/certs" D [12/Jul/2011:10:58:30
>> > +0000] Repairing access permissions of "/var/run/cups/certs" I
>> > [12/Jul/2011:10:58:30 +0000] Using default TempDir of /home/test/tmp...
>> > I [12/Jul/2011:10:58:30 +0000] Configured for up to 100 clients. I
>> > [12/Jul/2011:10:58:30 +0000] Allowing up to 100 client connections per
>> > host. I [12/Jul/2011:10:58:30 +0000] Using policy "default" as the
>> > default! I [12/Jul/2011:10:58:30 +0000] Full reload is required. I
>> > [12/Jul/2011:10:58:30 +0000] Loaded MIME database from
>> > "/usr/share/cups/mime" and "/etc/c. D [12/Jul/2011:10:58:30 +0000]
>> > Loading printer ghostpdf... D [12/Jul/2011:10:58:30 +0000]
>> > cupsdMarkDirty(P-----) D [12/Jul/2011:10:58:30 +0000]
>> > cupsdSetBusyState: Dirty files D [12/Jul/2011:10:58:30 +0000] load_ppd:
>> > Loading /etc/cups/ppd/ghostpdf.ppd... D [12/Jul/2011:10:58:30 +0000]
>> > load_ppd: Saving /var/cache/cups/ghostpdf.ipp... D
>> > [12/Jul/2011:10:58:30 +0000] cupsdMarkDirty(P-----) E
>> > [12/Jul/2011:10:58:30 +0000] Filter "/usr/lib/cups/filter/commandtops"
>> > for printer "ghost) D
>> > [12/Jul/2011:10:58:30 +0000]
>> > [cupsdRegisterPrinter(p=0x2a06c020(ghostpdf))
>> > D [12/Jul/2011:10:58:30 +0000] Scanning /home/storage/Reports for
>> > jobs... I [12/Jul/2011:10:58:30 +0000] Full reload complete. I
>> > [12/Jul/2011:10:58:30 +0000] Cleaning out old temporary files in
>> > "/home/storage/Reports/t. E [12/Jul/2011:10:58:30 +0000] Unable to open
>> > listen socket for address ::1:631 - Address f. I [12/Jul/2011:10:58:30
>> > +0000] Listening to 127.0.0.1:631 on fd 4... I [12/Jul/2011:10:58:30
>> > +0000] Listening to /var/run/cups/cups.sock on fd 6... I
>> > [12/Jul/2011:10:58:30 +0000] Resuming new connection processing... D
>> > [12/Jul/2011:10:58:30 +0000]
>> > [cupsdRegisterPrinter(p=0x2a06c020(ghostpdf))
>> > D [12/Jul/2011:10:58:30 +0000] Discarding unused server-started
>> > event... D
>> > [12/Jul/2011:10:58:31 +0000] Report: clients=0 D [12/Jul/2011:10:58:31
>> > +0000] Report: jobs=0 D [12/Jul/2011:10:58:31 +0000] Report:
>> > jobs-active=0 D [12/Jul/2011:10:58:31 +0000] Report: printers=1 D
>> > [12/Jul/2011:10:58:31 +0000] Report: printers-implicit=0 D
>> > [12/Jul/2011:10:58:31 +0000] Report: stringpool-string-count=290 D
>> > [12/Jul/2011:10:58:31 +0000] Report: stringpool-alloc-bytes=7320 D
>> > [12/Jul/2011:10:58:31 +0000] Report: stringpool-total-bytes=6760 I
>> > [12/Jul/2011:10:59:01 +0000] Saving printers.conf... D
>> > [12/Jul/2011:10:59:01 +0000] cupsdSetBusyState: Not busy D
>> > [12/Jul/2011:11:01:06 +0000] cupsdAcceptClient: 10 from localhost
>> > (Domain) D [12/Jul/2011:11:01:06 +0000] Report: clients=1 D
>> > [12/Jul/2011:11:01:06 +0000] Report: jobs=0 D [12/Jul/2011:11:01:06
>> > [+0000]
>> > Report: jobs-active=0 D [12/Jul/2011:11:01:06 +0000] Report: printers=1
>> > D [12/Jul/2011:11:01:06 +0000] Report: printers-implicit=0
>> > D [12/Jul/2011:11:01:06 +0000] Report: stringpool-string-count=290
>> > D [12/Jul/2011:11:01:06 +0000] Report: stringpool-alloc-bytes=7320
>> > D [12/Jul/2011:11:01:06 +0000] Report: stringpool-total-bytes=6760
>> > D [12/Jul/2011:11:01:06 +0000] cupsdReadClient: 10 POST / HTTP/1.1
>> > D [12/Jul/2011:11:01:06 +0000] cupsdSetBusyState: Active clients
>> > D [12/Jul/2011:11:01:06 +0000] cupsdAuthorize: No authentication data
>> > provided. D [12/Jul/2011:11:01:06 +0000] cupsdReadClient: 10 1.1
>> > CUPS-Get-Printers 1 D [12/Jul/2011:11:01:06 +0000] CUPS-Get-Printers
>> > D [12/Jul/2011:11:01:06 +0000] Returning IPP successful-ok for
>> > CUPS-Get-Printers (no URI) ft D [12/Jul/2011:11:01:06 +0000]
>> > cupsdSetBusyState: Not busy D [12/Jul/2011:11:01:06 +0000]
>> > cupsdReadClient: 10 POST / HTTP/1.1 D [12/Jul/2011:11:01:06 +0000]
>> > cupsdSetBusyState: Active clients D [12/Jul/2011:11:01:06 +0000]
>> > cupsdAuthorize: No authentication data provided. D
>> > [12/Jul/2011:11:01:06 +0000] cupsdReadClient: 10 1.1 CUPS-Get-Default 1
>> > D [12/Jul/2011:11:01:06 +0000] CUPS-Get-Default D [12/Jul/2011:11:01:06
>> > +0000] Returning IPP successful-ok for CUPS-Get-Default (no URI) frt D
>> > [12/Jul/2011:11:01:06 +0000] cupsdSetBusyState: Not busy D
>> > [12/Jul/2011:11:01:07 +0000] cupsdReadClient: 10 WAITING Closing on EOF
>> > D [12/Jul/2011:11:01:07 +0000] cupsdCloseClient: 10 D
>> > [12/Jul/2011:11:03:33 +0000] cupsdAcceptClient: 10 from localhost
>> > (Domain) D [12/Jul/2011:11:03:33 +0000] Report: clients=1 D
>> > [12/Jul/2011:11:03:33 +0000] Report: jobs=0 D [12/Jul/2011:11:03:33
>> > +0000] Report: jobs-active=0 D [12/Jul/2011:11:03:33 +0000] Report:
>> > printers=1 D [12/Jul/2011:11:03:33 +0000] Report: printers-implicit=0
>> > D [12/Jul/2011:11:03:33 +0000] Report: stringpool-string-count=290
>> > D [12/Jul/2011:11:03:33 +0000] Report: stringpool-alloc-bytes=7320
>> > D [12/Jul/2011:11:03:33 +0000] Report: stringpool-total-bytes=6760
>> > D [12/Jul/2011:11:03:33 +0000] cupsdReadClient: 10 POST / HTTP/1.1
>> > D [12/Jul/2011:11:03:33 +0000] cupsdSetBusyState: Active clients
>> > D [12/Jul/2011:11:03:33 +0000] cupsdAuthorize: No authentication data
>> > provided. D [12/Jul/2011:11:03:33 +0000] cupsdReadClient: 10 1.1
>> > CUPS-Get-Printers 1 D [12/Jul/2011:11:03:33 +0000] CUPS-Get-Printers
>> > D [12/Jul/2011:11:03:33 +0000] Returning IPP successful-ok for
>> > CUPS-Get-Printers (no URI) ft D [12/Jul/2011:11:03:33 +0000]
>> > cupsdSetBusyState: Not busy D [12/Jul/2011:11:03:33 +0000]
>> > cupsdReadClient: 10 POST / HTTP/1.1 D [12/Jul/2011:11:03:33 +0000]
>> > cupsdSetBusyState: Active clients D [12/Jul/2011:11:03:33 +0000]
>> > cupsdAuthorize: No authentication data provided. D
>> > [12/Jul/2011:11:03:33 +0000] cupsdReadClient: 10 1.1 CUPS-Get-Default 1
>> > D [12/Jul/2011:11:03:33 +0000] CUPS-Get-Default D [12/Jul/2011:11:03:33
>> > +0000] Returning IPP successful-ok for CUPS-Get-Default (no URI) frt D
>> > [12/Jul/2011:11:03:33 +0000] cupsdSetBusyState: Not busy D
>> > [12/Jul/2011:11:03:34 +0000] cupsdReadClient: 10 WAITING Closing on EOF
>> > D [12/Jul/2011:11:03:34 +0000] cupsdCloseClient: 10 D
>> > [12/Jul/2011:11:04:32 +0000] cupsdAcceptClient: 10 from localhost
>> > (Domain) D [12/Jul/2011:11:04:32 +0000] cupsdReadClient: 10 POST /
>> > HTTP/1.1 D [12/Jul/2011:11:04:32 +0000] cupsdSetBusyState: Active
>> > clients D [12/Jul/2011:11:04:32 +0000] cupsdAuthorize: No
>> > authentication data provided. D [12/Jul/2011:11:04:32 +0000]
>> > cupsdReadClient: 10 1.1 Get-Jobs 1 D [12/Jul/2011:11:04:32 +0000]
>> > Get-Jobs ipp://localhost/ D [12/Jul/2011:11:04:32 +0000] Returning IPP
>> > successful-ok for Get-Jobs (ipp://localhost/) t D [12/Jul/2011:11:04:32
>> > +0000] cupsdSetBusyState: Not busy D [12/Jul/2011:11:04:32 +0000]
>> > cupsdReadClient: 10 WAITING Closing on EOF D [12/Jul/2011:11:04:32
>> > +0000] cupsdCloseClient: 10 D [12/Jul/2011:11:04:33 +0000] Report:
>> > clients=0 D [12/Jul/2011:11:04:33 +0000] Report: jobs=0 D
>> > [12/Jul/2011:11:04:33 +0000] Report: jobs-active=0 D
>> > [12/Jul/2011:11:04:33 +0000] Report: printers=1 D [12/Jul/2011:11:04:33
>> > +0000] Report: printers-implicit=0 D [12/Jul/2011:11:04:33 +0000]
>> > Report: stringpool-string-count=290 D [12/Jul/2011:11:04:33 +0000]
>> > Report: stringpool-alloc-bytes=7320 D [12/Jul/2011:11:04:33 +0000]
>> > Report: stringpool-total-bytes=6760 D [12/Jul/2011:11:04:35 +0000]
>> > cupsdAcceptClient: 10 from localhost (Domain) D [12/Jul/2011:11:04:35
>> > +0000] cupsdReadClient: 10 POST / HTTP/1.1 D [12/Jul/2011:11:04:35
>> > +0000] cupsdSetBusyState: Active clients D [12/Jul/2011:11:04:35 +0000]
>> > cupsdAu
>>
>> I guess you want to "print" into PDF files. So you need a backend that
>> generates PDF from PostScript and writes it to a (preferably user
>> selectable) file.
>> Such backends are not part of standard CUPS, but there are a lot of open
>> source backends for this purpose around in the internet.
>>
>> Helge
>>
> 
> Thank you Helge,
> 
> I tried this backend from internet -
> 
> and now I think I am missing gs. I could not find gs in installation of
> ghostscript from timesys package.
> 
> I got this error - ps2pdf one one.pdf
> /usr/bin/ps2pdfwr: exec: line 45: gs: not found
> 
> 
> 
> 
> #!/bin/sh
> 
#################################################################################
> #
> #File:			pdf-writer
> #
> #Description: 	A simple PDF Writer for CUPS
> #
> #Copyright:		(c) 2006  Axel Schmidt,  SUSE LINUX GmbH, Nuernberg, Germany
> #(c) 2001  Michael Goffioul (kdeprint <at> swing <dot> be)
> #
> #License:		GPL
> #
> 
#################################################################################
> 
> PS2PDF=`which ps2pdf`
> DATE=`date +%Y-%m-%d-%H:%M.%S`
> 
> # USERMODE="on" changes PDFPATH to "$HOME/<user-name>/PDF"
> #
> USERMODE="off"
> DEFGROUP="users"
> HOME="/home"
> JOB=$1
> PRTUSER=$2
> 
> # Create user based file name
> #
> create_user_fname()
> {
>         if [ "$PRTUSER" != "" ]; then
>                 FILENAME="$PDFPATH/$PRTUSER-$DATE.pdf"
>                 logger "pdf-writer: \"$PRTUSER-$DATE.pdf\" was placed in:
>                 $PDFPATH"
>         else
>                 FILENAME="$PDFPATH/$DATE.pdf"
>                 logger "pdf-writer: \"$DATE.pdf\" was placed in: $PDFPATH"
>         fi
> }
> 
> 
> # Check DEVICE DISCOVERY + test PS2PDF
> #
> if [ "$JOB" = "" ]; then
>         if test -f "$PS2PDF" ; then
>                 echo "network pdf-writer:/export/share/pdf \"unkown\"
>                 \"pdf writer\" " logger "pdf-writer: INFO:
>                 USERMODE=\"$USERMODE\"" if [ "$USERMODE" = "on" ]; then
>                    logger "pdf-writer: CUPS user must be set to root with
>                    USERMODE=\"on\"!"
>                 fi
>                 exit 0
>         else
>                 echo "Error: $0 - ps2pdf is not available!"
>                 logger "pdf-writer: ERROR: ps2pdf is not available!"
>                 exit 1
>         fi
> fi
> 
> logger "pdf-writer started: $1 $2 $3 $4 $5 $6"
> 
> # Check number of command line arguments
> #
> if [ $# -ne 5 -a $# -ne 6 ]; then
>         echo "Usage: $0 job-id user title copies options [file]"
>         logger "pdf-writer: CRITICAL: Printer stopped !"
>         exit 1
> fi
> 
> 
> # get PDF-WRITER directory from device URI
> #
> PDFPATH=${DEVICE_URI#pdf-writer:}
> 
> 
> # Create output filename based on user name and user mode
> #
> if [ "$USERMODE" = "on" -a "$PRTUSER" != "" ]; then
>         mkdir -p $HOME/$PRTUSER/PDF
>         chown $PRTUSER $HOME/$PRTUSER/PDF
> 
> # check if cups run as lp or root
> # user lp may not run chown
> #
>         if [ $? -eq 1 ]; then
> #!/bin/sh
> 
#################################################################################
> #
> #File:			pdf-writer
> #
> #Description: 	A simple PDF Writer for CUPS
> #
> #Copyright:		(c) 2006  Axel Schmidt,  SUSE LINUX GmbH, Nuernberg, Germany
> #(c) 2001  Michael Goffioul (kdeprint <at> swing <dot> be)
> #
> #License:		GPL
> #
> 
#################################################################################
> 
> PS2PDF=`which ps2pdf`
> DATE=`date +%Y-%m-%d-%H:%M.%S`
> 
> # USERMODE="on" changes PDFPATH to "$HOME/<user-name>/PDF"
> #
> USERMODE="off"
> DEFGROUP="users"
> HOME="/home"
> JOB=$1
> PRTUSER=$2
> 
> # Create user based file name
> #
> create_user_fname()
> {
>         if [ "$PRTUSER" != "" ]; then
>                 FILENAME="$PDFPATH/$PRTUSER-$DATE.pdf"
>                 logger "pdf-writer: \"$PRTUSER-$DATE.pdf\" was placed in:
>                 $PDFPATH"
>         else
>                 FILENAME="$PDFPATH/$DATE.pdf"
>                 logger "pdf-writer: \"$DATE.pdf\" was placed in: $PDFPATH"
>         fi
> }
> 
> 
> # Check DEVICE DISCOVERY + test PS2PDF
> #
> if [ "$JOB" = "" ]; then
>         if test -f "$PS2PDF" ; then
>                 echo "network pdf-writer:/export/share/pdf \"unkown\"
>                 \"pdf writer\" " logger "pdf-writer: INFO:
>                 USERMODE=\"$USERMODE\"" if [ "$USERMODE" = "on" ]; then
>                    logger "pdf-writer: CUPS user must be set to root with
>                    USERMODE=\"on\"!"
>                 fi
>                 exit 0
>         else
>                 echo "Error: $0 - ps2pdf is not available!"
>                 logger "pdf-writer: ERROR: ps2pdf is not available!"
>                 exit 1
>         fi
> fi
> 
> logger "pdf-writer started: $1 $2 $3 $4 $5 $6"
> 
> # Check number of command line arguments
> #
> if [ $# -ne 5 -a $# -ne 6 ]; then
>         echo "Usage: $0 job-id user title copies options [file]"
>         logger "pdf-writer: CRITICAL: Printer stopped !"
>         exit 1
> fi
> 
> 
> # get PDF-WRITER directory from device URI
> #
> PDFPATH=${DEVICE_URI#pdf-writer:}
> 
> 
> # Create output filename based on user name and user mode
> #
> if [ "$USERMODE" = "on" -a "$PRTUSER" != "" ]; then
>         mkdir -p $HOME/$PRTUSER/PDF
>         chown $PRTUSER $HOME/$PRTUSER/PDF
> 
> # check if cups run as lp or root
> # user lp may not run chown
> #
>         if [ $? -eq 1 ]; then
>                 create_user_fname
>         else
>                 chgrp $DEFGROUP /home/$PRTUSER/PDF
>                 PDFPATH=$HOME/$PRTUSER/PDF
>                 FILENAME="$PDFPATH/$DATE.pdf"
>                 logger "pdf-writer: \"$DATE.pdf\" was placed in: $PDFPATH"
>         fi
> else
>         create_user_fname
> fi
> 
> # Check write status
> #
> if [ ! -d "$PDFPATH" -o ! -w "$PDFPATH" ]; then
>         logger "pdf-writer: ERROR: directory $PDFPATH not writeable"
>         exit 1
> fi
> 
> # Run ps2pdf (ghostscript)
> if [ $# -eq 6 ]; then
>         $PS2PDF $6 $FILENAME >& /dev/null
> else
>         $PS2PDF - $FILENAME >& /dev/null
> fi
> 
> # Chown + set permissions for the user
> # Note: this will no work if CUPS runs as lp
> if [ "$PRTUSER" != "" ]; then
>         chmod 644 $FILENAME
>         chown $PRTUSER:$DEFGROUP $FILENAME
> fi
> exit 0
> 
> #
> #########################  CUPS pdf-writer ends here 
> #########################  ########################
> #
>                 create_user_fname
>         else
>                 chgrp $DEFGROUP /home/$PRTUSER/PDF
>                 PDFPATH=$HOME/$PRTUSER/PDF
>                 FILENAME="$PDFPATH/$DATE.pdf"
>                 logger "pdf-writer: \"$DATE.pdf\" was placed in: $PDFPATH"
>         fi
> else
>         create_user_fname
> fi
> 
> # Check write status
> #
> if [ ! -d "$PDFPATH" -o ! -w "$PDFPATH" ]; then
>         logger "pdf-writer: ERROR: directory $PDFPATH not writeable"
>         exit 1
> fi
> 
> # Run ps2pdf (ghostscript)
> if [ $# -eq 6 ]; then
>         $PS2PDF $6 $FILENAME >& /dev/null
> else
>         $PS2PDF - $FILENAME >& /dev/null
> fi
> 
> # Chown + set permissions for the user
> # Note: this will no work if CUPS runs as lp
> if [ "$PRTUSER" != "" ]; then
>         chmod 644 $FILENAME
>         chown $PRTUSER:$DEFGROUP $FILENAME
> fi
> exit 0
> 
> #
> #########################  CUPS pdf-writer ends here 
> #########################  ########################
> #

Obviously your Ghostscript installation is broken or incomplete, as it seems 
that you have the ps2pdf script (part of the Ghostscript distribution) but 
the Ghostscript executable is either not installed or not installed in the 
path where expected (/usr/bin/gs).

Helge





More information about the cups mailing list