Re: Newbie hat Staroffice+Druckerproblem

From: Peter Much <pmc(at)citylink.dinoex.sub.de>
Date: Fri, 21 Dec 2001 02:48:34 +0100 (CET)

Nachdem ich mich eine Weile damit rumgeaergert hab, und sich
offensichtlich auch andere damit rumplagen:

Hallo Marc Santhoff,
 Du schriebst mit Datum Sun, 09 Dec 2001 19:39:12 +0100
 in m2n.de.fbsd.questions:

Erstens: Diese sogenannte drucker und fontverwaltung in Staroffice
   (hier: 5.2, war aber bei 3.0 schon genauso, es ist also nicht
   anzunehmen, dass es bei 6.0 anders ist), gemeint ist das GUI,
   ist einfach nur hochgradiger Muell. Es empfiehlt sich, statt-
   dessen die Dateien zu edieren, denn abgesehen davon dass das
   GUI Fehler macht, kann es das was man konkret braucht meist eh
   nicht.
   Um die Dateien direkt zu edieren muss man halt wissen wie sie
   funktionieren, das macht Arbeit, scheint mir aber die bessere
   Alternative zum sich aergern. Ich gehe auf beide Varianten ein.

Die Dateien liegen alle im InstDir unter share/xp3. Fuer die
Druckerei wichtig ist eigentlich nur die Xpdefaults.

Voraussetzungen:
----------------
1. du musst deine Druckerqueues zuvor in einen Zustand gebracht haben,
   wo sie tauglich funktionieren. Und
2. deine Druckerqueues muessen Postscript fressen koennen, d.h. du
   brauchst irgendein Kommando, dem du Postscript nach stdin fuetterst,
   und das damit das Gewuenschte auf dem Drucker ausgibt.
Wenn du weisst, wie du zu diesem milestone kommst, ist es gut, wenn
nicht, dann ist z.B. apsfilter ein Port, der dich recht komfortabel
dahin bringen kann (es empfiehlt sich auch, die Seiten ueber Drucker-
queues im Handbuch zu lesen und nachzuvollziehen).

An diesem Punkt hast Du wahrscheinlich ein (oder mehrere) Kommando(s),
das entweder nur "lpr" heisst oder auch meinetwegen "lpr -Plj5p", und
das jedenfalls Postscript drucken kann. Ausserdem solltest du wissen,
ob dein Drucker einen eingebauten Postscript-Interpreter hat oder ob
du Ghostscript installiert hast, um auf irgendeinem einfacheren
Drucker Postscript auszugeben.
Das Folgende bezieht sich vorwiegend auf den letzteren Fall, weil ich
naemlich keinen Drucker mit Postscript-Interpreter hab.

Nun zur Sache: SO verwendet drei Strings fuer jeden konfigurierten
Drucker:
  1. Den Namen des Druckers, wie man ihn beim eigentlichen Drucken
     des Dokuments dann im Menue sieht. Der ist frei waehlbar,
     aber es empfiehlt sich, keinen der vordefinierten Namen zu
     verwenden, die unter dem Tag [other-devices] in der Xpdefaults
     Datei links vom Gleichheitszeichen stehen.
  2. Den Namen der Queue. Das ist ein rein interner Name fuer SO,
     der logisch besehen voellig ueberfluessig ist, aber zur Auswahl
     benutzt wird. (Man kann naemlich nicht mehrere Druckerdefini-
     tionen -mit unterschiedlicher Konfiguration- an dieselbe Queue
     und damit an dasselbe Unix-Kommando haengen.)
  3. Das Unix-Kommando von eben, an das die Daten verfuettert werden.

Das GUI:
--------
Wenn man nun mit dem sogenannten GUI einen Drucker anlegt, dann muss
man ihn einer Queue zuordnen, weil an dieser Queue erst das eigent-
liche Unix-Kommando haengt. Diese Queue muss natuerlich existieren.
Beim ersten aufruf sieht das dann eben so aus:

!> Hier meine Auswahlmöglichkeiten die vorhanden sind im Konfigurationsdialog:
!> default_queue=lpr
!> fax_queue=(FAX)
!> Usage=lpr -P Usage

Ueber den Button connect/verbinden kann man den Drucker einer dieser
Queues zuordnen. Man kann aber ueber eben diesem Button auch neue
Queues definieren, weil man dort nicht nur auswaehlen, sondern auch
fuer die ausgewaehlte Queue vorher noch beide(!) Seiten des Gleich-
heitszeichens edieren kann. (Der Button rechts wechselt dann auto-
matisch von Aendern auf Zufuegen, wenn man die linke Seite, also den
Queue-Namen, aendert.)
Die "Usage" Queue ist natuerlich voelliger Muell und gehoert
geloescht. Die FAX Queue kann man an dieser Stelle nicht aendern,
und das wird einem auch gesagt. Also klickt man auf die
default_queue und aendert das ganze in etwas sinnvolles, z.B.:
lj5p_queue=lpr -Plj5p
("lpr -Plj5p" ist hier das Unix-Kommando, mit dem wir normalerweise
Postscript drucken) und klickt dann auf Zufuegen. Jetzt kann man
diese neue Queue als Verbindung anklicken und das Fenster schliessen.

Jetzt sollte das ganze eigentlich schon funktionieren. Tut es aber
meistens nicht. Denn auf der ersten Seite hat man unter "installier-
te Druckertreiber" natuerlich seinen Drucker gefunden und ausge-
waehlt, und unter Einrichten hat man dann -wie von Windows gewohnt-
alle moeglichen Features ausgewaehlt. Nur kann Ghostscript mit der
art und weise, wie SO diese Features dann im Postscript-Code for-
muliert, oft nix anfangen und auf dem Drucker wird dann nur
"configurationerror in -setpagedevice-" ausgegeben.

Die schnelle Abhilfe ist, fuer Ghostscript grundsaetzlich keinen
konkreten Drucker, sondern "Generic Printer" auszuwaehlen, und dann
eben nur die gewuenschte Aufloesung (dpi) einzustellen. Man kann
dann halt keine Papierschaechte und dgl. von SO aus waehlen.

Die saubere Loesung waere, tiefer in den SO-Druckertreiber (liegt
unter share/xp3/ppds), in den erzeugten Postscript Code und in die
Ghostscript-Funktionsweise einzusteigen und zu schauen, wie man
die gewuenschten Features da durchgereicht kriegt.

Die Xpdefaults Datei:
---------------------
Die ist ja ganz brauchbar inline dokumentiert.
In der ersten Sektion [windows] wird nur derjenige Eintrag aus der
zweiten Sektion [devices] nochmal angegeben, der der Defaultdrucker
sein soll.
In der zweiten Sektion [devices] werden jetzt alle Drucker definiert,
die im Druckmenue waehlbar sein sollen:

HP LaserJet 5P=SGENPRT PostScript,lj5p_queue

Vor dem Gleichheitszeichen steht der Name, wie er dann im Druckmenue
zur Auswahl angeboten wird.

Hinter dem Gleichheitszeichen steht der Dateiname des
Geraetetreibers, der unter share/xp3/ppds rumliegt, nur dass anstelle
des Suffix .PS das PostScript hier ausgeschrieben wird. Hier
im Beispiel ist das der "Generic Printer" - wenn man einen der
dezidierten Drucker auswaehlt, dann steht da natuerlich der
entsprechende Name.
Vorsicht: Weiter unten in der Datei (unter [other-devices]) sind die
vorhandenen Geraetetreiber aufgelistet und die entsprechenden
Druckernamen angegeben. Man kann keinen der dort vereinbarten
Druckernamen hier mit dem generischen Treiber verknuepfen (denn
dann kommt das SO durcheinander), sondern muss den Namen aendern!
(Deswegen heisst das hier auch nur 5P und nicht 5P/MP wie unten.)

Hinter dem Komma schliesslich folgt der Name der SO-internen Queue:
Ich habe die default_queue umbenannt in etwas, das mir taugt.

In der dritten Sektion [ports] wird dann diese Queue mit dem
gewuenschten Unix-Kommando verbunden:

lj5p_queue=lpr -Plj5p

Man kann da auch nuetzliche Dinge mit anstellen, z.B sich einen
"Drucker" einrichten zur visuellen Kontrolle, ob Ghostscript das
Zeug auch versteht (das hier geht nur fuer eine Seite, man kann
es mit einen Shellscript auch schoener machen):

preview_queue=gv -

Dann folgen Sektionen mit den eigentlichen Parametern des Druckers,
diese werden zugeordnet, indem sie mit dem Namen des Druckertrei-
bers und der SO-internen Queue eingeleitet werden (und deswgen
kann man eine dieser Queues eben nicht fuer mehrere Konfigurationen
verwenden):

[SGENPRT,PostScript,lj5p_queue]
MarginLeft=458
MarginRight=458
MarginTop=423
MarginBottom=423
Comment=
Scale=1.
Copies=1
BitmapCompression=1
BitmapColor=0
Orientation=PORTRAIT
Level=2
PageSize=A4
PPD_PageSize=A4
PPD_Resolution=600dpi

Hier stellt man zweckmaessigerweise die Aufloesung, das Papierformat,
die Margins und dergleichen ein. Diese Werte entstammen dem
Einrichten-Dialog aus dem GUI, und sie wirken als Overrides zu den
Werten in der Druckertreiber-Konfiguration unter share/xp3/ppds
(die dort allerdings in ganz anderer Syntax formuliert sind).

Nadeldrucker:
-------------
Wenn man noch einen Nadeldrucker im EPSON Standard hat, dann
muss man die Aufloesung hier einstellen. Denn der braucht 240dpi,
das funktioniert dann auch prima, nur im Menue des GUI ist es
nicht vorgesehen.

Die Fonts:
----------
Das ist nochmal ein Spass fuer sich. Allerdings findet sich dazu
so einiges im WEB, u.a. die empfehlenswerte Seite
http://homepages.enterprise.net/scruss/SolarisStarOfficenewfonts.html

Im Endeffekt laeuft es darauf hinaus, dass eine *.pfb Datei
aller Fonts im share/xp3/pssoftfonts liegen muss (physisch oder als
Symlink), eine *.afm Datei im share/xp3/fontmetrics/afm (physisch
oder als symlinks) und dass die Fonts in der Datei psstd.fonts
eingetragen werden muessen (mit dem Namen, unter dem sie der X
Server kennt), wozu man am besten die vorhandene fonts.dir Datei
(ohne die erste Zeile) einkopiert und dann die beiden in der
Webpage beschriebenen Aenderungen an den Zeilen vornimmt
(ersetze ".pfb" durch "," und "-0-0-0-0-" durch "-%d-%d-%d-%d-").

Keinesfalls sollte man das mit dem spadmin GUI machen, denn ausser
"kill -9"-Haengern, Coredumps und zerschossenen Dateien kommt dabei
nichts brauchbares heraus.

Dass die Fonts, wie in der Webpage beschrieben, auch in
share/fonts/type1 liegen muessen, ist zumindest fuer 5.2 nicht
erforderlich. Ebenfalls scheint die PSres.upr Datei, die das GUI
in jedem Fontdirectory anlegt, keinen praktischen Zweck zu haben.

Die auf verschiedenen Webpages beschriebenen Probleme bei der Ver-
wendung von TrueType Fonts konnte ich auch nicht nachvollziehen.
Wenn der X Server TrueType unterstuetzt, die Fonts dem X Server
bekannt sind, und die obigen Bedingungen (also *.pfb und *.afm
Versionen davon in den entsprechenden SO-Verzeichnissen und Ein-
trag der Namen, unter denen der X-Server die Fonts kennt, in der
psstd.fonts) erfuellt sind, dann funktioniert das.

!Kann mal jemand anderes was zu apsfilter verlauten lassen?

No ja. Legt halt Drucker an.
Ist ein monstermaessiges Shellscript, das per sophisticated
exploitation des "file" kommandos u.ae. ermittelt, was da gedruckt
werden soll und das dann mit den geeigneten Tools (die installiert
sein muessen) meistens in Postscript konvertiert, dieses ggfs. an
ghostscript weiterreicht und dann zum Drucker.
Das ganze konfiguriert sich als Druckerfilter in die /etc/printcap
hinein, sodass es von aussen als ganz normale Druckerqueue
erscheint, die mit lpr (oder lpr -Pwasweissich) beschickt wird.
Hat den Nachteil, dass man mit lpq nur die Laenge der Input-
Daten sieht und nicht, was da tatsaechlich an Volumen bearbeitet
wird.

Gruessli
PMc

-- 
Write to: Peter Much * Fichtenstr. 28 * D-65527 Niedernhausen * +49-6127-967111
  EMail: p.much(at)citylink.dinoex.sub.org * Fax: +49-6127-967112 (nur manchmal)
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 21 Dec 2001 - 19:10:00 CET

search this site