Bonjour tout le monde,
Après quelques semaines de tests et de recherches je viens vous demander votre aide pour un problème d’impression PDF.
J’ai un serveur avec une Debian Lenny, cups et cups-pdf installés. Après pas mal d’essais j’ai réussi à imprimer correctement dans un fichier PDF des documents .txt et .jpg (par une simple commande lp, et une configuration ad hoc), mais impossible de faire fonctionner le système avec d’autres fichiers (notamment .doc et .ppt) ; je me retrouve toujours avec des pdf vides de 2kb, sans qu’aucune erreur n’ait été affichée.
J’ai essayé pas mal de choses : cups-pdf, des backends customisés, ps2pdf (mais je ne crois pas avoir compris comment le faire fonctionner correctement…), et toutes ces méthodes me donnent le même fichier vide.
J’ai même essayé a2ps puis une impression, mais si mes .txt passent bien, mes .doc et .ppt en revanche ressortent comme des pdfs énormes remplis de caractère incompréhensibles, et ce quel que soit l’encodage que je tente d’utiliser.
Je fonctionne en ce moment avec un tuto que j’ai trouvé ici novell.com/coolsolutions/feature/17636.html, donc un fichier backend, et idem, aucun .doc ni .ppt ne passent.
Voici mon /etc/cups/cupsd.conf :
[code]LogLevel warning
SystemGroup lpadmin
Allow remote access
Port 631
Listen /var/run/cups/cups.sock
Show shared printers on the local network.
Browsing On
BrowseOrder allow,deny
BrowseAllow all
DefaultAuthType Basic
Allow From All
Allow remote administration…
Order allow,deny
Allow all
<Location /admin>
Allow From All
Allow remote administration…
Order allow,deny
Allow all
<Location /admin/conf>
Allow From All
AuthType Default
Require user @SYSTEM
Allow remote access to the configuration files…
Order allow,deny
Allow all
Require user @OWNER @SYSTEM
Order deny,allow
AuthType Default
Require user @SYSTEM
Order deny,allow
AuthType Default
Require user @SYSTEM
Order deny,allow
Require user @OWNER @SYSTEM
Order deny,allow
Order deny,allow
[/code]
Et le fichier backend que j’utilise, /usr/lib/cups/backend/pdf-writer :
[code]#!/bin/sh
################################################################################
File: pdf-writer
Description: A simple PDF Writer for CUPS
Copyright: © 2006 Axel Schmidt, SUSE LINUX GmbH, Nuernberg, Germany
© 2001 Michael Goffioul (kdeprint swing be)
License: GPL
################################################################################
PS2PDF=which ps2pdf
DATE=date +%Y-%m-%d-%H:%M.%S
USERMODE=“on” changes PDFPATH to “$HOME//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 ########################
#[/code]
Merci d’avance de votre aide et/ou de vos conseils, et désolé s’ils manquent des éléments pour la bonne compréhension du problème, n’hésitez pas à demander des détails.