# Impression PDF sur serveur de fichiers .doc et .ppt

**URL:** <https://www.debian-fr.org/t/impression-pdf-sur-serveur-de-fichiers-doc-et-ppt/21154>\
**Category:** Support Debian\
**Created:** [Février 20, 2016, 8:23 UTC](https://www.debian-fr.org/t/impression-pdf-sur-serveur-de-fichiers-doc-et-ppt/21154 "2016-02-20T20:23:57Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Lemon](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lemon/32/3682_2.png) [@Lemon](https://www.debian-fr.org/u/Lemon)\
**Post date:** [Février 20, 2016, 8:23 UTC](https://www.debian-fr.org/t/impression-pdf-sur-serveur-de-fichiers-doc-et-ppt/21154/1 "2016-02-20T20:23:57Z")

</div>

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](http://www.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.

---

<div class="post-metadata">

**Author:** ![thomas.leclerc](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/59ef9b/32.png) [@thomas.leclerc](https://www.debian-fr.org/u/thomas.leclerc)\
**Post date:** [Février 20, 2016, 8:29 UTC](https://www.debian-fr.org/t/impression-pdf-sur-serveur-de-fichiers-doc-et-ppt/21154/2 "2016-02-20T20:29:02Z")

</div>

pas avec cups ou cup-pdf mais le Paquet unoconv. cet outil sait manipuler tous les formats gérés par openoffice et via la ligne de commande donc il sait transformer un .doc en .pdf.

[i]This package provides a commandline utility which can convert from any document format that OpenOffice can import to any document format it can export. It uses OpenOffice’s UNO bindings for non-interactive conversion of documents.

Supported document formats include Open Document format, MS Word, MS Office Open/MS OOXML, PDF, HTML, XHTML, RTF, Docbook, and more. [/i]

en fait il est possible dans ton script que selon les extension de tes fichiers sources tu soit amené à utiliser differents outils pour les transformer en pdf.

---

<div class="post-metadata">

**Author:** ![Lemon](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lemon/32/3682_2.png) [@Lemon](https://www.debian-fr.org/u/Lemon)\
**Post date:** [Février 20, 2016, 8:32 UTC](https://www.debian-fr.org/t/impression-pdf-sur-serveur-de-fichiers-doc-et-ppt/21154/3 "2016-02-20T20:32:19Z")

</div>

Je ne suis pas en mesure de tester avant une semaine, mais merci beaucoup du tuyau, je regarderai ça.

A très bientôt donc, merci encore !

---

<div class="post-metadata">

**Author:** ![Lemon](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lemon/32/3682_2.png) [@Lemon](https://www.debian-fr.org/u/Lemon)\
**Post date:** [Février 20, 2016, 8:36 UTC](https://www.debian-fr.org/t/impression-pdf-sur-serveur-de-fichiers-doc-et-ppt/21154/4 "2016-02-20T20:36:23Z")

</div>

Merci Thomas, ta solution était la bonne.

Pour ceux que ça peut aider, voici comment j’ai fait sur mon serveur Debian Lenny :  
Utilisation de unoconv avec Open Office : paquets  
[ul][openoffice.org](http://openoffice.org)  
openoffice.org-headless pour se passer d’interface X  
openoffice.org-calc pour les tableurs  
openoffice.org-writer pour les documents textes  
openoffice.org-writer pour les présentations  
openoffice.org-draw pour les images  
openoffice.org-math pour les formules mathématiques  
unoconv  
python-uno pour lier OOo et unoconv[/ul]

Et pour la commande, un simple `unoconv /chemin/du/fichier` transforme ce que vous voulez en PDF (par défaut). On peut aussi transformer en n’importe quel autre format supporté. Plus de détails sur unoconv ici : [dag.wieers.com/home-made/unoconv/](http://dag.wieers.com/home-made/unoconv/).
