PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Duplexdruck mit HP Laserjet 5M geht nicht



talpa
09.01.10, 21:52
Hallo allerseits!

Für meinen HP Laserjet 5M habe ich mir kürzlich über Ebay eine gebrauchte Duplex-Einheit gekauft. Ich habe diese unter Windows erfolgreich getestet, kann also ausschließen, dass sie beschädigt ist.

Unter Ubuntu 8.10 habe ich es bisher nicht geschafft, beidseitig zu drucken:

Duplexdruck ist im Treiber aktiviert und wird auch in den Drucker-Einstellungen der Applikationen angeboten
Nachdem ich auf der HP Homepage nach einem (eventuell besseren) Treiber gesucht habe, habe ich die Info gefunden, dass Ubuntu 8.10 bereits die HP Druckertreiber Datenbank hplip implementiert hat
Es wird über die Papierfächer gedruckt – ich habe gelesen, dass Duplexdruck über den Einzelblatt-Einzug nicht funktionieren soll
Anfangs habe ich es nur mit OO probiert. Nachdem ich auf Beiträge zu OO Problemen mit Duplexdruck gestoßen bin, habe ich es mit einem 2-seitigen Pdf im Adobe Reader versucht – leider auch ohne Erfolg. Es wurden zwei Seiten gedruckt, an der Applikation scheint es demnach auch nicht zu liegen
Nach dem Lesen eines anderen Beitrags zu einem ähnlichen Problem habe ich den Befehl unten in der Konsole probiert. Es wurden aber wieder zwei Seiten gedruckt.


lpr -o sides=two-sided-long-edge -o page-ranges=1-2 seite-1-2.pdf

Hat jemand einen Tipp, was ich noch probieren kann?

Gruß, talpa

HBtux
09.01.10, 22:05
Vielleicht kannst Du dem Druckjob noch eine Escape-Sequenz davor hängen.

Gefunden bei....
http://h71000.www7.hp.com/wizard/wiz_6820.html
http://www.harsch.net/Ghostscript/PCL_Befehle/pcl_befehle.html
http://www.google.de/#hl=de&num=30&newwindow=1&q=pcl+sequenz+HP+pcl+duplex&meta=&aq=&oq=pcl+sequenz+HP+pcl+duplex&fp=f6ac4f2ff50ba745


PCL Command Summary

Table 1: Commands listed by function
Command strings are shown separated by spaces for ease in reading.
__________________________________________________ ___________________
Duplex and Tray Selection
__________________________________________________ ___________________
<esc>& l Ps S Simplex/duplex mode
Ps = 0 Simplex
Ps = 1 Duplex, long edge binding
Ps = 2 Duplex, short edge binding
<esc>& a Ps G Duplex Page Side Selection
Ps = 0 Select the next side
Ps = 1 Select the front side
Ps = 2 Select the back side
<esc>& l Ps H Paper Source
Ps = 0 Print the current page
Ps = 1 Upper tray
Ps = 2 Manual Input paper
Ps = 3 Manual input envelope
Ps = 4 Lower tray

talpa
09.01.10, 22:09
Mmmh, hier (http://foo2zjs.rkkda.com/forum/read.php?53,2273) hat jemand das gleiche Problem mit einem OKI Drucker unter Ubuntu.

Ziemlich am Ende steht dann das Folgende:


From the Changelog:

2009-12-03 Rick Richardson <rick.richardson@comcast.net>
* foo2hiperc.c: Set Duplex like this:
if (Duplex == DMDUPLEX_OFF)
rec[6] = be32(0);
else
rec[6] = be32( (PageNum & 1) ? 0x100 : 0x200);

Please download, make, make install and then:

$ foo2hiperc-wrapper -d2 2pages.ps > xxx
$ nc 192.168.x.y 9100 <xxx


Das hat das Problem gelöst. Kann jemand damit etwas anfangen?

Gruß, talpa

talpa
09.01.10, 22:28
Hallo HBtux und danke für Deine Antwort!


Vielleicht kannst Du dem Druckjob noch eine Escape-Sequenz davor hängen.
Wie kann ich das denn machen?

Beim googeln auf die Schnelle habe ich bisher nur gelernt, dass die Printer Command Language (PCL) eine von Hewlett-Packard entwickelte Befehlssprache zum Steuern von Laserdruckern ist. Wo ich diese Befehle anhängen muss, ist mir aber noch nicht klar.

Gruß, talpa

talpa
09.01.10, 22:47
CUPS bringt eine eigene Weboberfläche mit, die unter http://127.0.0.1:631/ zu erreichen ist. Unter "Drucker verwalten" wählt man den entsprechenden Druckernamen und kann diverse Einstellungen ändern.

Dort habe ich die folgende Meldung gefunden:

Error: Die folgenden Parameter stehen im Konflikt zueinander:

* Total Memory
* Duplex

Bitte ändern Sie einen oder mehrere Parameter um die Konflikte zu beheben.


Die Duplex-Einheit wird als "installed" angezeigt
"Total Memory" zeigt mir 4-11MB (der tatsächliche Speicher beträgt 8MB)

Soll das jetzt heißen, es wäre zu wenig Speicher für Duplex-Druck verfügbar? :confused:
Wie oben erwähnt ist Duplexdruck unter Windows kein Problem.

talpa
09.01.10, 23:54
Ich habe mir eine 30-Tage-Testversion von TurboPrint runtergeladen und der Duplexdruck funktioniert einwandfrei. Somit konnte ich das Problem auf Cups eingrenzen.

Ich würde mir die 30 Euro für TurboPrint aber gerne sparen und mit Cups weitermachen. Vielleicht hat von euch noch jemand einen Tipp, ansonsten werde ich mal den Support von Cups anschreiben.

Jetzt gehe ich erst mal schlafen. Gute Nacht! :)

HBtux
10.01.10, 16:21
Poste mal die ersten paar Zeilen eines Druckjobs, den das System an diesen Drucker schickt.
Ich würde gerne wissen, ob Deine Druckerqueue mit PCL oder PS auf den Drucker druckt.

Um den Druckjob abzufangen kannst Du wie folgt vor gehen.
- Drucken in eine Datei auswählen und einen Dateinamen als Ziel angeben.
- oder Du schaltest den Drucker aus und druckst darauf.
In diesem Fall findest Du das Druckfile im Verzeichnis /var/spool/cups. (eine Datei mit dem Namen ähnlich wie d00001-001

HBtux
10.01.10, 18:22
Hallo talpa,

ich habe noch mal eine interesante Info für Dich gefunden. (für den Fall, dass es ein PS-Druckfile ist.)
http://www.mathematik.uni-ulm.de/m5/sk/howtos/howto-tex.html

Wobei es bei einem PCL-Druckfile ähnlich funktioniert.
Du fügst einfach in den "fertigen" Druckjob eine Steuersequenz ein.
Bei PCL ist es die sogenannte Escape-Sequenz (<esc>&l1S) und bei PS diese Feature-Sequenz (%%BeginFeature: <</Duplex true.....)

Zum testen kannst Du wie folgt vorgehen.

Du legst eine neue Druckerqueue an.
- bei dieser Test-Queue wählst Du statt dem HP-Treiber RAW aus. (also kein Treiber - kein Filter)
- das Backend ist dann wieder gleich (z.B. Drucken auf TCP-Port o.ä.)
Du fängst ein Druckfile ab, kopierst Dir diese Datei weg und veränderst sie von Hand. (testweise die Steuersequenzen einfügen)
Um dieses fertige Druckfile dann zu testen, kannst Du es wieder mit dem lpr Befehl auf die Queue mit dem RAW-Treiber schicken.


Wenn Du die richtige Drucksequenz für Duplex gefunden hast, kannst Du Dir ein eingenes Script schreiben, über das Du den Druckjob schickst (eigenes Backend).....
In diesem Script kannst Du dann den Druckjob z.B. mit sed oder awk verändern und gleich an den Drucker schicken.

Um das eigene Backend anzusprechen, wählst Du bei Druckertype "über Pipe drucken" aus.
Als Programm gibst Du Dein eigenes Programm an und als Parameter den Druckername z.B. Programm: /tmp/drucker_backend.sh hp-laser-5m

Dein Backend könnte dann z.B. so aussehen.
Script: drucker_backend.sh


cat - | sed -e 's/@PJL SET DUPLEX=OFF/@PJL SET DUPLEX=ON/g' | lpr -P$1

talpa
10.01.10, 23:13
Hallo Hbtux,

erst mal vielen Dank für Deine Mühe und Deine Tipps!

Nachdem ich gestern Nacht der Meinung war, das Problem liegt bei CUPS, ist mir heute Morgen nach dem Aufwachen aufgefallen, dass das nicht stimmt. Durch Turboprint habe ich einen neuen Treiber für meinen Drucker bekommen, gedruckt wird aber immer noch über CUPS.

So ähnlich war auch die Antwort vom CUPS Support, dem ich heute Nacht noch etwas vorschnell einen Bug-Report geschickt hatte. Die Fehlermeldung auf dem CUPS Webfrontend (Total memory und Duplex stehen im Konflikt miteinander) liegt laut dem CUPS Support an einem sogenannten „constraint“ im Treiber.

Tatsächlich habe ich in der PPD-Datei, welche ich momentan nutze, den folgenden Eintrag gefunden:


*UIConstraints: *HPOption_Memory 4Meg *Duplex


Ich verstehe das so, dass Duplex Druck nur mit einem Speicher von höher 4MB funktioniert. Mein Drucker hat 8MB, allerdings kann ich im Treiber aber nur zwischen den Optionen 4-11MB oder >11MB wählen kann.


*OpenUI *HPOption_Memory/Total Memory: PickOne
*DefaultHPOption_Memory: 12Meg
*HPOption_Memory 4Meg/4-11 MB: ""
*HPOption_Memory 12Meg/> 11 MB: ""



Um die Fehlermeldung im CUPS Frontend zu umgehen, habe ich dem Treiber einfach gesagt, ich hätte größer 11MB. Die Fehlermeldung war daraufhin zwar verschwunden, mein Problem mit dem Duplex Druck aber nicht gelöst.

Jetzt habe ich, wie von Dir vorgeschlagen, den Ausdruck in eine Datei umleiten lassen. Dabei habe ich einmal den HP Treiber gewählt und beim zweiten Druck den Treiber von Turboprint. Beim Speichern der Datei wird automatisch das Dateiformat *.ps vorgegeben. Ich nehme an, das bedeutet, dass meine Druckerqueue mit PS druckt, richtig? Anbei das Ergebnis:

Ausdruck mit HP Treiber:


%!PS-Adobe-3.0
%%BoundingBox: (atend)
%%Creator: (OpenOffice.org 2.4)
%%For: (tobias)
%%CreationDate: (Sun Jan 10 23:24:00 2010)
%%Title: (seite-1-2)
%%LanguageLevel: 2
%%DocumentData: Clean7Bit
%%Pages: (atend)
%%PageOrder: Ascend
%%EndComments
%%BeginProlog
%%BeginResource: procset PSPrint-Prolog 1.0 0
/ISO1252Encoding [
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
/zero /one /two /three /four /five /six /seven
/eight /nine /colon /semicolon /less /equal /greater /question
/at /A /B /C /D /E /F /G
/H /I /J /K /L /M /N /O
/P /Q /R /S /T /U /V /W
/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
/grave /a /b /c /d /e /f /g
/h /i /j /k /l /m /n /o
/p /q /r /s /t /u /v /w
/x /y /z /braceleft /bar /braceright /asciitilde /unused
/Euro /unused /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl
/circumflex /perthousand /Scaron /guilsinglleft /OE /unused /Zcaron /unused
/unused /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash
/tilde /trademark /scaron /guilsinglright /oe /unused /zcaron /Ydieresis
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section
/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered
/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] def

/psp_definefont { exch dup findfont dup length dict begin { 1 index /FID ne
{ def } { pop pop } ifelse } forall /Encoding 3 -1 roll def
currentdict end exch pop definefont pop } def

/pathdict dup 8 dict def load begin
/rcmd { { currentfile 1 string readstring pop 0 get dup 32 gt { exit }
{ pop } ifelse } loop dup 126 eq { pop exit } if 65 sub dup 16#3 and 1
add exch dup 16#C and -2 bitshift 16#3 and 1 add exch 16#10 and 16#10
eq 3 1 roll exch } def
/rhex { dup 1 sub exch currentfile exch string readhexstring pop dup 0
get dup 16#80 and 16#80 eq dup 3 1 roll { 16#7f and } if 2 index 0 3
-1 roll put 3 1 roll 0 0 1 5 -1 roll { 2 index exch get add 256 mul }
for 256 div exch pop exch { neg } if } def
/xcmd { rcmd exch rhex exch rhex exch 5 -1 roll add exch 4 -1 roll add
1 index 1 index 5 -1 roll { moveto } { lineto } ifelse } def end
/readpath { 0 0 pathdict begin { xcmd } loop end pop pop } def

systemdict /languagelevel known not {
/xshow { exch dup length 0 1 3 -1 roll 1 sub { dup 3 index exch get
exch 2 index exch get 1 string dup 0 4 -1 roll put currentpoint 3 -1
roll show moveto 0 rmoveto } for pop pop } def
/rectangle { 4 -2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0
rlineto closepath } def
/rectfill { rectangle fill } def
/rectstroke { rectangle stroke } def } if
/bshow { currentlinewidth 3 1 roll currentpoint 3 index show moveto
setlinewidth false charpath stroke setlinewidth } def
/bxshow { currentlinewidth 4 1 roll setlinewidth exch dup length 1 sub
0 1 3 -1 roll { 1 string 2 index 2 index get 1 index exch 0 exch put dup
currentpoint 3 -1 roll show moveto currentpoint 3 -1 roll false charpath
stroke moveto 2 index exch get 0 rmoveto } for pop pop setlinewidth } def

/psp_lzwfilter { currentfile /ASCII85Decode filter /LZWDecode filter } def
/psp_ascii85filter { currentfile /ASCII85Decode filter } def
/psp_lzwstring { psp_lzwfilter 1024 string readstring } def
/psp_ascii85string { psp_ascii85filter 1024 string readstring } def
/psp_imagedict {
/psp_bitspercomponent { 3 eq { 1 }{ 8 } ifelse } def
/psp_decodearray { [ [0 1 0 1 0 1] [0 255] [0 1] [0 255] ] exch get }
def 7 dict dup
/ImageType 1 put dup
/Width 7 -1 roll put dup
/Height 5 index put dup
/BitsPerComponent 4 index psp_bitspercomponent put dup
/Decode 5 -1 roll psp_decodearray put dup
/ImageMatrix [1 0 0 1 0 0] dup 5 8 -1 roll put put dup
/DataSource 4 -1 roll 1 eq { psp_lzwfilter } { psp_ascii85filter } ifelse put
} def
%%EndResource
%%EndProlog
%%BeginSetup
%
%%BeginResource: font FreeSansFID17HGSet1
%!PS-TrueTypeFont-1.0-1.8912
%%Creator: SunTypeTools-TT 1.0 gelf
%- Font subset generated from a source font file: '/usr/share/fonts/truetype/freefont/FreeSans.ttf'
%- Original font name: FreeSans
%- Original font family: FreeSans
%- Original font sub-family: Medium
11 dict begin
/FontName (FreeSansFID17HGSet1) cvn def
/PaintType 0 def
/FontMatrix [1 0 0 1 0 0] def
/FontBBox [-701 -462 1632 1141] def
/FontType 42 def
/Encoding 256 array def
0 1 255 {Encoding exch /.notdef put} for
Encoding 32 /glyph1 put
Encoding 49 /glyph2 put
Encoding 50 /glyph3 put
Encoding 69 /glyph4 put
Encoding 73 /glyph5 put
Encoding 83 /glyph6 put
Encoding 84 /glyph7 put
/XUID [103 0 1 16#F1AB33F5 8 16#41F94946 16#90495C21] def
/sfnts [<
747275650009008000030010637674208A0652020000009C00 0000246670676D
51818AF8000000C0000000C6676C79665FC7E6B50000018800 0001A468656164
3248CB270000032C0000003668686561DDFEDF030000036400 000024686D7478
CE03110D00000388000000206C6F63616C01B600000003A800 0000126D617870
2B001901000003BC0000002070726570B55F8B03000003DC00 0000F40000020C
02AE02D9004E000200040045004A0053005300550002000300 550055005E005E
B0002CB000134BB02A5058B04A7659B000233F18B0062B583D 594BB02A50587D
5920D4B001132E182DB0012C2020DA2FB0072B5C5820204723 46616A20582064
62381B2121591B21592DB0022C4B5258452359212DB0032C69 1820B040505821
B040592DB0042CB0062B582123217A58DD1BCD591B4B525858 FD1BED591B21B0
052B58B046765958DD1BCD595959182DB0052C0D5C5A2DB006 2CB12201885058
B020885C5C1BB000592DB0072CB12401885058B040885C5C1B B000592DB0082C
121120392F2D000000020043000001D403D100030007000001 11211105211121
01D4FE6F014EFEF5010B03D1FC2F03D143FCB5000001006600 00015B02C50008
00000123353E013733112301039D663E173A5801F93F0D2E52 FD3B0000010022
000001FF02C500190000133633321615140F010E0107211521 3E013F01363534
262322073207E3657E96644138070175FE2806526F5C60503C 850A01CFF6745C
84523623422D57757F3F343755394CA90001005A0000026502 D9000B00001315
21152111211521152115B701AEFDF501F9FE64018D014CFA52 02D952E9520000
00010064000000C202D90003000013112311C25E02D9FD2702 D9000000010030
FFE9026D02E50030000025323E0235342F0126353436333216 17232E01232206
1514161F011E0115140E0323222E03273315141E020156384E 250F86B58F8B78
7E8C0158015E574A593642B74A510F283E6741294B4E382501 58132B553B1A2A
291753233025856373776B474D44372A3012311460431D393D 2E1E0D23375C3C
051F36341F000000000100150000025102D900070000011123 11233521150162
5DF0023C0287FD790287525200010000000122D0887F8B485F 0F3CF5020B03E8
00000000C441E5C100000000000000000000FFE9026D03D100 00000800000000
00000000000100000384FED4005A0000000000000000000100 00000000000000
000000000000000801F4004301160000022C0066022C002202 9B005A01160064
029B003002630015000000160016002A0054006C007A00C000 D2000000010000
0008003100020000000000020001000000090000010000F400 040004B801FF85
004BB0085058B101018E59B146062B5821B010594BB0145258 21B080591DB006
2B5C5800B0042045B0032B44B0082045B20487022BB0032B44 B0072045B2083A
022BB0032B44B0062045B20714022BB0032B44B0052045BA00 06017600022BB0
032B44B0092045B20479022BB0032B44B00A2045BA00097FFF 00022BB0032B44
01B00B2045B0032B44B00D2045B20B12022BB10346762B44B0 0C2045BA000D03
9300022BB10346762B44B00E2045BA000B7FFF00022BB10346 762B44B00F2045
BA000E7FFF00022BB10346762B44B0102045B20F40022BB103 46762B44B01120
45BA00107FFF00022BB10346762B445900
>
] def
/CharStrings 8 dict dup begin
/.notdef 0 def
/glyph1 1 def
/glyph2 2 def
/glyph3 3 def
/glyph4 4 def
/glyph5 5 def
/glyph6 6 def
/glyph7 7 def
end readonly def
FontName currentdict end definefont pop
%%EndResource
%%DocumentSuppliedResources: font FreeSansFID17HGSet1
[{
%%IncludeFeature: *InputSlot Lower
} stopped cleartomark
[{
%%IncludeFeature: *PageSize A4
} stopped cleartomark
%%EndSetup
%%Page: 1 1
%%PageBoundingBox: 13 12 582 830
%%BeginPageSetup
%
%%EndPageSetup
gsave
[0.12 0 0 -0.12 13 830] concat
gsave
365 1033 moveto
0 setgray
(FreeSansFID17HGSet1) cvn findfont 667 -667 matrix scale makefont setfont
<53454954452031>
[445 445 184 408 445 185 0]
xshow
grestore grestore
showpage
%%PageTrailer

%%Page: 2 2
%%PageBoundingBox: 13 12 582 830
%%BeginPageSetup
%
%%EndPageSetup
gsave
[0.12 0 0 -0.12 13 830] concat
gsave
365 1033 moveto
0 setgray
(FreeSansFID17HGSet1) cvn findfont 667 -667 matrix scale makefont setfont
<53454954452032>
[445 445 184 408 445 185 0]
xshow
grestore grestore
showpage
%%PageTrailer

%%Trailer
%%BoundingBox: 0 0 595 842
%%Pages: 2
%%EOF


Ausdruck mit Turboprint Treiber:


%!PS-Adobe-3.0
%%BoundingBox: (atend)
%%Creator: (OpenOffice.org 2.4)
%%For: (tobias)
%%CreationDate: (Sun Jan 10 23:24:29 2010)
%%Title: (seite-1-2)
%%LanguageLevel: 2
%%DocumentData: Clean7Bit
%%Pages: (atend)
%%PageOrder: Ascend
%%EndComments
%%BeginProlog
%%BeginResource: procset PSPrint-Prolog 1.0 0
/ISO1252Encoding [
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
/zero /one /two /three /four /five /six /seven
/eight /nine /colon /semicolon /less /equal /greater /question
/at /A /B /C /D /E /F /G
/H /I /J /K /L /M /N /O
/P /Q /R /S /T /U /V /W
/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
/grave /a /b /c /d /e /f /g
/h /i /j /k /l /m /n /o
/p /q /r /s /t /u /v /w
/x /y /z /braceleft /bar /braceright /asciitilde /unused
/Euro /unused /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl
/circumflex /perthousand /Scaron /guilsinglleft /OE /unused /Zcaron /unused
/unused /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash
/tilde /trademark /scaron /guilsinglright /oe /unused /zcaron /Ydieresis
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section
/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered
/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] def

/psp_definefont { exch dup findfont dup length dict begin { 1 index /FID ne
{ def } { pop pop } ifelse } forall /Encoding 3 -1 roll def
currentdict end exch pop definefont pop } def

/pathdict dup 8 dict def load begin
/rcmd { { currentfile 1 string readstring pop 0 get dup 32 gt { exit }
{ pop } ifelse } loop dup 126 eq { pop exit } if 65 sub dup 16#3 and 1
add exch dup 16#C and -2 bitshift 16#3 and 1 add exch 16#10 and 16#10
eq 3 1 roll exch } def
/rhex { dup 1 sub exch currentfile exch string readhexstring pop dup 0
get dup 16#80 and 16#80 eq dup 3 1 roll { 16#7f and } if 2 index 0 3
-1 roll put 3 1 roll 0 0 1 5 -1 roll { 2 index exch get add 256 mul }
for 256 div exch pop exch { neg } if } def
/xcmd { rcmd exch rhex exch rhex exch 5 -1 roll add exch 4 -1 roll add
1 index 1 index 5 -1 roll { moveto } { lineto } ifelse } def end
/readpath { 0 0 pathdict begin { xcmd } loop end pop pop } def

systemdict /languagelevel known not {
/xshow { exch dup length 0 1 3 -1 roll 1 sub { dup 3 index exch get
exch 2 index exch get 1 string dup 0 4 -1 roll put currentpoint 3 -1
roll show moveto 0 rmoveto } for pop pop } def
/rectangle { 4 -2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0
rlineto closepath } def
/rectfill { rectangle fill } def
/rectstroke { rectangle stroke } def } if
/bshow { currentlinewidth 3 1 roll currentpoint 3 index show moveto
setlinewidth false charpath stroke setlinewidth } def
/bxshow { currentlinewidth 4 1 roll setlinewidth exch dup length 1 sub
0 1 3 -1 roll { 1 string 2 index 2 index get 1 index exch 0 exch put dup
currentpoint 3 -1 roll show moveto currentpoint 3 -1 roll false charpath
stroke moveto 2 index exch get 0 rmoveto } for pop pop setlinewidth } def

/psp_lzwfilter { currentfile /ASCII85Decode filter /LZWDecode filter } def
/psp_ascii85filter { currentfile /ASCII85Decode filter } def
/psp_lzwstring { psp_lzwfilter 1024 string readstring } def
/psp_ascii85string { psp_ascii85filter 1024 string readstring } def
/psp_imagedict {
/psp_bitspercomponent { 3 eq { 1 }{ 8 } ifelse } def
/psp_decodearray { [ [0 1 0 1 0 1] [0 255] [0 1] [0 255] ] exch get }
def 7 dict dup
/ImageType 1 put dup
/Width 7 -1 roll put dup
/Height 5 index put dup
/BitsPerComponent 4 index psp_bitspercomponent put dup
/Decode 5 -1 roll psp_decodearray put dup
/ImageMatrix [1 0 0 1 0 0] dup 5 8 -1 roll put put dup
/DataSource 4 -1 roll 1 eq { psp_lzwfilter } { psp_ascii85filter } ifelse put
} def
%%EndResource
%%EndProlog
%%BeginSetup
%
%%BeginResource: font FreeSansFID17HGSet1
%!PS-TrueTypeFont-1.0-1.8912
%%Creator: SunTypeTools-TT 1.0 gelf
%- Font subset generated from a source font file: '/usr/share/fonts/truetype/freefont/FreeSans.ttf'
%- Original font name: FreeSans
%- Original font family: FreeSans
%- Original font sub-family: Medium
11 dict begin
/FontName (FreeSansFID17HGSet1) cvn def
/PaintType 0 def
/FontMatrix [1 0 0 1 0 0] def
/FontBBox [-701 -462 1632 1141] def
/FontType 42 def
/Encoding 256 array def
0 1 255 {Encoding exch /.notdef put} for
Encoding 32 /glyph1 put
Encoding 49 /glyph2 put
Encoding 50 /glyph3 put
Encoding 69 /glyph4 put
Encoding 73 /glyph5 put
Encoding 83 /glyph6 put
Encoding 84 /glyph7 put
/XUID [103 0 1 16#F1AB33F5 8 16#41F94946 16#90495C21] def
/sfnts [<
747275650009008000030010637674208A0652020000009C00 0000246670676D
51818AF8000000C0000000C6676C79665FC7E6B50000018800 0001A468656164
3248CB270000032C0000003668686561DDFEDF030000036400 000024686D7478
CE03110D00000388000000206C6F63616C01B600000003A800 0000126D617870
2B001901000003BC0000002070726570B55F8B03000003DC00 0000F40000020C
02AE02D9004E000200040045004A0053005300550002000300 550055005E005E
B0002CB000134BB02A5058B04A7659B000233F18B0062B583D 594BB02A50587D
5920D4B001132E182DB0012C2020DA2FB0072B5C5820204723 46616A20582064
62381B2121591B21592DB0022C4B5258452359212DB0032C69 1820B040505821
B040592DB0042CB0062B582123217A58DD1BCD591B4B525858 FD1BED591B21B0
052B58B046765958DD1BCD595959182DB0052C0D5C5A2DB006 2CB12201885058
B020885C5C1BB000592DB0072CB12401885058B040885C5C1B B000592DB0082C
121120392F2D000000020043000001D403D100030007000001 11211105211121
01D4FE6F014EFEF5010B03D1FC2F03D143FCB5000001006600 00015B02C50008
00000123353E013733112301039D663E173A5801F93F0D2E52 FD3B0000010022
000001FF02C500190000133633321615140F010E0107211521 3E013F01363534
262322073207E3657E96644138070175FE2806526F5C60503C 850A01CFF6745C
84523623422D57757F3F343755394CA90001005A0000026502 D9000B00001315
21152111211521152115B701AEFDF501F9FE64018D014CFA52 02D952E9520000
00010064000000C202D90003000013112311C25E02D9FD2702 D9000000010030
FFE9026D02E50030000025323E0235342F0126353436333216 17232E01232206
1514161F011E0115140E0323222E03273315141E020156384E 250F86B58F8B78
7E8C0158015E574A593642B74A510F283E6741294B4E382501 58132B553B1A2A
291753233025856373776B474D44372A3012311460431D393D 2E1E0D23375C3C
051F36341F000000000100150000025102D900070000011123 11233521150162
5DF0023C0287FD790287525200010000000122D0887F8B485F 0F3CF5020B03E8
00000000C441E5C100000000000000000000FFE9026D03D100 00000800000000
00000000000100000384FED4005A0000000000000000000100 00000000000000
000000000000000801F4004301160000022C0066022C002202 9B005A01160064
029B003002630015000000160016002A0054006C007A00C000 D2000000010000
0008003100020000000000020001000000090000010000F400 040004B801FF85
004BB0085058B101018E59B146062B5821B010594BB0145258 21B080591DB006
2B5C5800B0042045B0032B44B0082045B20487022BB0032B44 B0072045B2083A
022BB0032B44B0062045B20714022BB0032B44B0052045BA00 06017600022BB0
032B44B0092045B20479022BB0032B44B00A2045BA00097FFF 00022BB0032B44
01B00B2045B0032B44B00D2045B20B12022BB10346762B44B0 0C2045BA000D03
9300022BB10346762B44B00E2045BA000B7FFF00022BB10346 762B44B00F2045
BA000E7FFF00022BB10346762B44B0102045B20F40022BB103 46762B44B01120
45BA00107FFF00022BB10346762B445900
>
] def
/CharStrings 8 dict dup begin
/.notdef 0 def
/glyph1 1 def
/glyph2 2 def
/glyph3 3 def
/glyph4 4 def
/glyph5 5 def
/glyph6 6 def
/glyph7 7 def
end readonly def
FontName currentdict end definefont pop
%%EndResource
%%DocumentSuppliedResources: font FreeSansFID17HGSet1
[{
%%IncludeFeature: *PageSize A4
} stopped cleartomark
[{
%%IncludeFeature: *InputSlot Automatic
} stopped cleartomark
[{
%%IncludeFeature: *Duplex DuplexNoTumble
} stopped cleartomark
%%EndSetup
%%Page: 1 1
%%PageBoundingBox: 18 12 577 830
%%BeginPageSetup
%
%%EndPageSetup
gsave
[0.12 0 0 -0.12 18 830] concat
gsave
323 1033 moveto
0 setgray
(FreeSansFID17HGSet1) cvn findfont 667 -667 matrix scale makefont setfont
<53454954452031>
[445 445 184 408 445 185 0]
xshow
grestore grestore
showpage
%%PageTrailer

%%Page: 2 2
%%PageBoundingBox: 18 12 577 830
%%BeginPageSetup
%
%%EndPageSetup
gsave
[0.12 0 0 -0.12 18 830] concat
gsave
323 1033 moveto
0 setgray
(FreeSansFID17HGSet1) cvn findfont 667 -667 matrix scale makefont setfont
<53454954452032>
[445 445 184 408 445 185 0]
xshow
grestore grestore
showpage
%%PageTrailer

%%Trailer
%%BoundingBox: 0 0 595 842
%%Pages: 2
%%EOF


Ich habe beide Dateien mit diff verglichen. Die Unterschiede sagen mir nicht viel, aber es fällt auf, dass es in der Turboprint Datei den folgenden zusätzlichen Eintrag gibt:


! %%IncludeFeature: *Duplex DuplexNoTumble


Überhaupt gibt es in der HP Datei keinen einzigen Eintrag mit Duplex (mit grep -i gesucht).

Ich werde mich mehr mit Deinem zweiten Beitrag beschäftigen müssen, allerdings ist es schon wieder spät und ich habe morgen nach drei Wochen Urlaub meinen ersten Arbeitstag. Ich melde mich morgen Abend wieder.

Gute Nacht... :)
talpa

pferdefreund
11.01.10, 06:17
Ändere doch mal in der ppd die Memory-Zeilen von 4-11 auf 8-11.
Dann geht die Kiste hoffentlich von mind. 8 M aus und duplex sollte vieleicht sogar
funktionieren - Versuch macht Klug. Ich hab auch schon ne PPD für nen HP-Drucker -
hier Postscript mit der Duplex-Option von nem anderen Drucker versehen, damit es
funktioniert. (Aber .ppd vorher sichern !!!!!!!). Keine Ahnung, ob man CUPS dann neu
starten muß - aber schaden kanns wohl nix.

HBtux
11.01.10, 12:41
Beim Speichern der Datei wird automatisch das Dateiformat *.ps vorgegeben. Ich nehme an, das bedeutet, dass meine Druckerqueue mit PS druckt, richtig?

Über die Endung des Dateinamen lässt sich nur bedingt das Druckformat erkennen. (bzw. nicht verlässlich)
Vielemehr erkennt man den Dateityp in der Regel über den Header der Datei.
In diesem Fall steht dort was von %!PS-Adobe-3.0.

Alternativ kannst Du auch den Befehl file dafür nehmen.


HBtux:/ # file test.ps
test.ps: PostScript document text conforming at level 3.0



Zum Test von Duplex-Druck kannst Du folgende Befehl mit Deiner Test-Druckdatei probieren.
Ich habe das mal mit Deinem Druckfile auf einem Lexmark-Drucker probiert und es funktioniert einwandfrei.... :)
test.ps gibt Deine PS-Druckdatei an
druckername solltest Du durch den Namen Deines Druckers ersetzen (Drucker mit RAW-Treiber)


cat test.ps | sed -e 's/%%EndSetup/%%BeginFeature:\n \<\<\/Duplex true \/Tumble false\>\> setpagedevice\n%%EndFeature\n%%PageSetup/g' | lpr -Pdruckername

Der Befehl setzt vor der Zeile "%%PageSetup" die Sequenz für den Duplexdruck ein.
Ich hoffe das es auch mit einem Druckjob mit mehr als 2 Seiten funktioniert.
Ich kann Dir auch nicht 100%ig sagen, ob das ganze PostScript Konform ist.

Zum Vergleich nachfolgend Dein Druckfile und die Änderung von mir.

Ausschnitt aus Deinem Original Druckfile.


/glyph7 7 def
end readonly def
FontName currentdict end definefont pop
%%EndResource
%%DocumentSuppliedResources: font FreeSansFID17HGSet1
[{
%%IncludeFeature: *InputSlot Lower
} stopped cleartomark
[{
%%IncludeFeature: *PageSize A4
} stopped cleartomark
%%PageSetup


Ausschnitt aus dem veränderten Druckfile.


/glyph7 7 def
end readonly def
FontName currentdict end definefont pop
%%EndResource
%%DocumentSuppliedResources: font FreeSansFID17HGSet1
[{
%%IncludeFeature: *InputSlot Lower
} stopped cleartomark
[{
%%IncludeFeature: *PageSize A4
} stopped cleartomark
%%BeginFeature:
<</Duplex true /Tumble false>> setpagedevice
%%EndFeature
%%PageSetup

talpa
11.01.10, 23:54
Hallo Pferdefreund,

ich habe die PPD editiert und den Speicher raufgesetzt:

*OpenUI *HPOption_Memory/Total Memory: PickOne
*DefaultHPOption_Memory: 8Meg
*HPOption_Memory 8Meg/8-11 MB: ""
*HPOption_Memory 12Meg/> 11 MB: ""
*?HPOption_Memory: "
currentsystemparams /RamSize get
524288 div ceiling cvi 2 div
/size exch def
size 12 ge
{(12Meg)} {(4Meg)} ifelse = flush

Damit kann ich zwar die Fehlermeldung umgehen, Duplex Druck funktioniert mit diesem Treiber aber leider trotzdem nicht. Wie bereits oben erwähnt, enthalten in eine Datei umgeleitete Druckaufträge mit diesem Treiber nicht einmal das Wort "duplex".


Hallo HBtux,

mit der folgenden Anleitung habe ich einen Raw-Drucker-Treiber erstellt:

Raw Drucker hinzufügen¶

Ein Raw-Drucker im Sinne von CUPS ist ein Drucker dessen Daten von CUPS nicht bearbeitet werden. Das heißt die Daten die vom Client ankommen werden 1:1 an den Drucker weitergeleitet. Einsetzen kann man einen Raw-Drucker z.B. wenn man die Treiber auf einem Windows Client benutzen möchte/muss. Es bedeutet aber auch das der Treiber auf jedem Client installiert werden muss.

Vorraussetzung für die Einrichtung eines Raw-Druckers ist, dass in den beiden Dateien:
/etc/cups/mime.types (bei Ubuntu 9.10 "Karmic": /etc/cups/raw.types )
/etc/cups/mime.convs (bei Ubuntu 9.10 "Karmic": /etc/cups/raw.convs )
die Zeilen am Ende der Dateien mit octet-stream nicht auskommentiert sind[2].

# /etc/cups/mime.types
application/octet-stream

# /etc/cups/mime.convs
application/octet-stream application/vnd.cups-raw 0 -

Der Drucker sollte nicht mit dem CUPS-Server verbunden sein, da sonst der Schritt "Marke/Hersteller" übersprungen wird wenn CUPS den Drucker erkennt.

Nun gelangt man durch die Eingabe von http://localhost:631/admin bzw. https://<servername.oder.IP>:631/admin auf die Verwaltungsseite von CUPS und kann einen Drucker hinzufügen:

"Name/Ort/Beschreibung" - Der Name sollte keine Leer- oder Sonderzeichen beinhalten.
"Gerät" - Hier ist der Anschluss auszuwählen an dem der Drucker hängt. Sollte meistens LPT #1, sein.
"Marke/Hersteller" - Hier muss "Raw" ausgewählt werden.
"Modell/Treiber" - Hier ist "Raw Queue (en)" auszuwählen.


Danach habe ich Deine Befehlszeile kopiert und durch die korrekten Namen für Datei und Drucker ersetzt:

cat lj5m-original.ps | sed -e 's/%%EndSetup/%%BeginFeature:\n \<\<\/Duplex true \/Tumble false\>\> setpagedevice\n%%EndFeature\n%%PageSetup/g' | lpr -Plj5m-raw2
Der Duplex Druck hat leider NICHT funktioniert. :(

Ich habe mittlerweile einen weiteren Treiber installiert, diesmal von Gutenprint. Mit diesem Treiber funktioniert Duplex Druck. Eigentlich könnte ich den Punkt also für mich abhaken, aber ich würde schon gerne verstehen, warum ich trotz eurer Tipps Duplex mit dem HP Treiber nicht zum Laufen bringe. :confused:

Da es jetzt schon wieder spät geworden ist, werde ich morgen Abend weitermachen.

Gruß, talpa

HBtux
12.01.10, 11:34
Ich habe mittlerweile einen weiteren Treiber installiert, diesmal von Gutenprint. Mit diesem Treiber funktioniert Duplex Druck. Eigentlich könnte ich den Punkt also für mich abhaken, aber ich würde schon gerne verstehen, warum ich trotz eurer Tipps Duplex mit dem HP Treiber nicht zum Laufen bringe.


Na dann kannst Du ja mal die beiden Druckfiles "*.ps" miteinander vergleichen.
In dem einen Druckfile muss ja dann der richtige Parameter für Duplex-Druck enthalten sein....

Druckt der Gutenprint Treiber auch als PostScript?
Oder Poste doch mal beide Druckfiles, einmal mit dem orginal Treiber und einmal mit dem Gutenprint-Treiber gedruckt.




Danach habe ich Deine Befehlszeile kopiert und durch die korrekten Namen für Datei und Drucker ersetzt:


cat lj5m-original.ps | sed -e 's/%%EndSetup/%%BeginFeature:\n \<\<\/Duplex true \/Tumble false\>\> setpagedevice\n%%EndFeature\n%%PageSetup/g' | lpr -Plj5m-raw2

Der Duplex Druck hat leider NICHT funktioniert.

Du könntest das Ergebnis auch erst in eine Datei umleiten und dann nachschauen, ob der Befehl auch richtig arbeitet.
mit diesem Befehl....

cat lj5m-original.ps | sed -e 's/%%EndSetup/%%BeginFeature:\n \<\<\/Duplex true \/Tumble false\>\> setpagedevice\n%%EndFeature\n%%PageSetup/g' > lj5m-modifiziert.ps

talpa
12.01.10, 21:56
Hallo HBtux,

es wird immer mysteriöser. Wenn ich mit Gutenprint in eine Datei drucke, so enthält diese Datei nicht eine Zeile mit "duplex" oder "tumble". Trotzdem funktioniert der Duplexdruck mit diesem Treiber bestens. Er druckt übrigens auch mit PS:

tobias@tobias:~/Desktop$ file lj5m-gutenprint.ps
lj5m-gutenprint.ps: PostScript document text conforming DSC level 3.0, Level 3

Ich poste mal die drei Treiber, auf welche ich mich konzentriere:

1) Von Ubuntu gewählter Treiber (wahrscheinlich hplib) - Duplexdruck geht nicht

tobias@tobias:~/Desktop$ cat lj5m-original.ps
%!PS-Adobe-3.0
%%BoundingBox: (atend)
%%Creator: (OpenOffice.org 2.4)
%%For: (tobias)
%%CreationDate: (Sun Jan 10 23:24:00 2010)
%%Title: (seite-1-2)
%%LanguageLevel: 2
%%DocumentData: Clean7Bit
%%Pages: (atend)
%%PageOrder: Ascend
%%EndComments
%%BeginProlog
%%BeginResource: procset PSPrint-Prolog 1.0 0
/ISO1252Encoding [
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
/zero /one /two /three /four /five /six /seven
/eight /nine /colon /semicolon /less /equal /greater /question
/at /A /B /C /D /E /F /G
/H /I /J /K /L /M /N /O
/P /Q /R /S /T /U /V /W
/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
/grave /a /b /c /d /e /f /g
/h /i /j /k /l /m /n /o
/p /q /r /s /t /u /v /w
/x /y /z /braceleft /bar /braceright /asciitilde /unused
/Euro /unused /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl
/circumflex /perthousand /Scaron /guilsinglleft /OE /unused /Zcaron /unused
/unused /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash
/tilde /trademark /scaron /guilsinglright /oe /unused /zcaron /Ydieresis
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section
/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered
/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] def

/psp_definefont { exch dup findfont dup length dict begin { 1 index /FID ne
{ def } { pop pop } ifelse } forall /Encoding 3 -1 roll def
currentdict end exch pop definefont pop } def

/pathdict dup 8 dict def load begin
/rcmd { { currentfile 1 string readstring pop 0 get dup 32 gt { exit }
{ pop } ifelse } loop dup 126 eq { pop exit } if 65 sub dup 16#3 and 1
add exch dup 16#C and -2 bitshift 16#3 and 1 add exch 16#10 and 16#10
eq 3 1 roll exch } def
/rhex { dup 1 sub exch currentfile exch string readhexstring pop dup 0
get dup 16#80 and 16#80 eq dup 3 1 roll { 16#7f and } if 2 index 0 3
-1 roll put 3 1 roll 0 0 1 5 -1 roll { 2 index exch get add 256 mul }
for 256 div exch pop exch { neg } if } def
/xcmd { rcmd exch rhex exch rhex exch 5 -1 roll add exch 4 -1 roll add
1 index 1 index 5 -1 roll { moveto } { lineto } ifelse } def end
/readpath { 0 0 pathdict begin { xcmd } loop end pop pop } def

systemdict /languagelevel known not {
/xshow { exch dup length 0 1 3 -1 roll 1 sub { dup 3 index exch get
exch 2 index exch get 1 string dup 0 4 -1 roll put currentpoint 3 -1
roll show moveto 0 rmoveto } for pop pop } def
/rectangle { 4 -2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0
rlineto closepath } def
/rectfill { rectangle fill } def
/rectstroke { rectangle stroke } def } if
/bshow { currentlinewidth 3 1 roll currentpoint 3 index show moveto
setlinewidth false charpath stroke setlinewidth } def
/bxshow { currentlinewidth 4 1 roll setlinewidth exch dup length 1 sub
0 1 3 -1 roll { 1 string 2 index 2 index get 1 index exch 0 exch put dup
currentpoint 3 -1 roll show moveto currentpoint 3 -1 roll false charpath
stroke moveto 2 index exch get 0 rmoveto } for pop pop setlinewidth } def

/psp_lzwfilter { currentfile /ASCII85Decode filter /LZWDecode filter } def
/psp_ascii85filter { currentfile /ASCII85Decode filter } def
/psp_lzwstring { psp_lzwfilter 1024 string readstring } def
/psp_ascii85string { psp_ascii85filter 1024 string readstring } def
/psp_imagedict {
/psp_bitspercomponent { 3 eq { 1 }{ 8 } ifelse } def
/psp_decodearray { [ [0 1 0 1 0 1] [0 255] [0 1] [0 255] ] exch get }
def 7 dict dup
/ImageType 1 put dup
/Width 7 -1 roll put dup
/Height 5 index put dup
/BitsPerComponent 4 index psp_bitspercomponent put dup
/Decode 5 -1 roll psp_decodearray put dup
/ImageMatrix [1 0 0 1 0 0] dup 5 8 -1 roll put put dup
/DataSource 4 -1 roll 1 eq { psp_lzwfilter } { psp_ascii85filter } ifelse put
} def
%%EndResource
%%EndProlog
%%BeginSetup
%
%%BeginResource: font FreeSansFID17HGSet1
%!PS-TrueTypeFont-1.0-1.8912
%%Creator: SunTypeTools-TT 1.0 gelf
%- Font subset generated from a source font file: '/usr/share/fonts/truetype/freefont/FreeSans.ttf'
%- Original font name: FreeSans
%- Original font family: FreeSans
%- Original font sub-family: Medium
11 dict begin
/FontName (FreeSansFID17HGSet1) cvn def
/PaintType 0 def
/FontMatrix [1 0 0 1 0 0] def
/FontBBox [-701 -462 1632 1141] def
/FontType 42 def
/Encoding 256 array def
0 1 255 {Encoding exch /.notdef put} for
Encoding 32 /glyph1 put
Encoding 49 /glyph2 put
Encoding 50 /glyph3 put
Encoding 69 /glyph4 put
Encoding 73 /glyph5 put
Encoding 83 /glyph6 put
Encoding 84 /glyph7 put
/XUID [103 0 1 16#F1AB33F5 8 16#41F94946 16#90495C21] def
/sfnts [<
747275650009008000030010637674208A0652020000009C00 0000246670676D
51818AF8000000C0000000C6676C79665FC7E6B50000018800 0001A468656164
3248CB270000032C0000003668686561DDFEDF030000036400 000024686D7478
CE03110D00000388000000206C6F63616C01B600000003A800 0000126D617870
2B001901000003BC0000002070726570B55F8B03000003DC00 0000F40000020C
02AE02D9004E000200040045004A0053005300550002000300 550055005E005E
B0002CB000134BB02A5058B04A7659B000233F18B0062B583D 594BB02A50587D
5920D4B001132E182DB0012C2020DA2FB0072B5C5820204723 46616A20582064
62381B2121591B21592DB0022C4B5258452359212DB0032C69 1820B040505821
B040592DB0042CB0062B582123217A58DD1BCD591B4B525858 FD1BED591B21B0
052B58B046765958DD1BCD595959182DB0052C0D5C5A2DB006 2CB12201885058
B020885C5C1BB000592DB0072CB12401885058B040885C5C1B B000592DB0082C
121120392F2D000000020043000001D403D100030007000001 11211105211121
01D4FE6F014EFEF5010B03D1FC2F03D143FCB5000001006600 00015B02C50008
00000123353E013733112301039D663E173A5801F93F0D2E52 FD3B0000010022
000001FF02C500190000133633321615140F010E0107211521 3E013F01363534
262322073207E3657E96644138070175FE2806526F5C60503C 850A01CFF6745C
84523623422D57757F3F343755394CA90001005A0000026502 D9000B00001315
21152111211521152115B701AEFDF501F9FE64018D014CFA52 02D952E9520000
00010064000000C202D90003000013112311C25E02D9FD2702 D9000000010030
FFE9026D02E50030000025323E0235342F0126353436333216 17232E01232206
1514161F011E0115140E0323222E03273315141E020156384E 250F86B58F8B78
7E8C0158015E574A593642B74A510F283E6741294B4E382501 58132B553B1A2A
291753233025856373776B474D44372A3012311460431D393D 2E1E0D23375C3C
051F36341F000000000100150000025102D900070000011123 11233521150162
5DF0023C0287FD790287525200010000000122D0887F8B485F 0F3CF5020B03E8
00000000C441E5C100000000000000000000FFE9026D03D100 00000800000000
00000000000100000384FED4005A0000000000000000000100 00000000000000
000000000000000801F4004301160000022C0066022C002202 9B005A01160064
029B003002630015000000160016002A0054006C007A00C000 D2000000010000
0008003100020000000000020001000000090000010000F400 040004B801FF85
004BB0085058B101018E59B146062B5821B010594BB0145258 21B080591DB006
2B5C5800B0042045B0032B44B0082045B20487022BB0032B44 B0072045B2083A
022BB0032B44B0062045B20714022BB0032B44B0052045BA00 06017600022BB0
032B44B0092045B20479022BB0032B44B00A2045BA00097FFF 00022BB0032B44
01B00B2045B0032B44B00D2045B20B12022BB10346762B44B0 0C2045BA000D03
9300022BB10346762B44B00E2045BA000B7FFF00022BB10346 762B44B00F2045
BA000E7FFF00022BB10346762B44B0102045B20F40022BB103 46762B44B01120
45BA00107FFF00022BB10346762B445900
>
] def
/CharStrings 8 dict dup begin
/.notdef 0 def
/glyph1 1 def
/glyph2 2 def
/glyph3 3 def
/glyph4 4 def
/glyph5 5 def
/glyph6 6 def
/glyph7 7 def
end readonly def
FontName currentdict end definefont pop
%%EndResource
%%DocumentSuppliedResources: font FreeSansFID17HGSet1
[{
%%IncludeFeature: *InputSlot Lower
} stopped cleartomark
[{
%%IncludeFeature: *PageSize A4
} stopped cleartomark
%%EndSetup
%%Page: 1 1
%%PageBoundingBox: 13 12 582 830
%%BeginPageSetup
%
%%EndPageSetup
gsave
[0.12 0 0 -0.12 13 830] concat
gsave
365 1033 moveto
0 setgray
(FreeSansFID17HGSet1) cvn findfont 667 -667 matrix scale makefont setfont
<53454954452031>
[445 445 184 408 445 185 0]
xshow
grestore grestore
showpage
%%PageTrailer

%%Page: 2 2
%%PageBoundingBox: 13 12 582 830
%%BeginPageSetup
%
%%EndPageSetup
gsave
[0.12 0 0 -0.12 13 830] concat
gsave
365 1033 moveto
0 setgray
(FreeSansFID17HGSet1) cvn findfont 667 -667 matrix scale makefont setfont
<53454954452032>
[445 445 184 408 445 185 0]
xshow
grestore grestore
showpage
%%PageTrailer

%%Trailer
%%BoundingBox: 0 0 595 842
%%Pages: 2
%%EOF


2) Turboprint Treiber - Duplexdruck geht

tobias@tobias:~/Desktop$ cat lj5m-turboprint.ps
%!PS-Adobe-3.0
%%BoundingBox: (atend)
%%Creator: (OpenOffice.org 2.4)
%%For: (tobias)
%%CreationDate: (Sun Jan 10 23:24:29 2010)
%%Title: (seite-1-2)
%%LanguageLevel: 2
%%DocumentData: Clean7Bit
%%Pages: (atend)
%%PageOrder: Ascend
%%EndComments
%%BeginProlog
%%BeginResource: procset PSPrint-Prolog 1.0 0
/ISO1252Encoding [
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
/zero /one /two /three /four /five /six /seven
/eight /nine /colon /semicolon /less /equal /greater /question
/at /A /B /C /D /E /F /G
/H /I /J /K /L /M /N /O
/P /Q /R /S /T /U /V /W
/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
/grave /a /b /c /d /e /f /g
/h /i /j /k /l /m /n /o
/p /q /r /s /t /u /v /w
/x /y /z /braceleft /bar /braceright /asciitilde /unused
/Euro /unused /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl
/circumflex /perthousand /Scaron /guilsinglleft /OE /unused /Zcaron /unused
/unused /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash
/tilde /trademark /scaron /guilsinglright /oe /unused /zcaron /Ydieresis
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section
/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered
/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] def

/psp_definefont { exch dup findfont dup length dict begin { 1 index /FID ne
{ def } { pop pop } ifelse } forall /Encoding 3 -1 roll def
currentdict end exch pop definefont pop } def

/pathdict dup 8 dict def load begin
/rcmd { { currentfile 1 string readstring pop 0 get dup 32 gt { exit }
{ pop } ifelse } loop dup 126 eq { pop exit } if 65 sub dup 16#3 and 1
add exch dup 16#C and -2 bitshift 16#3 and 1 add exch 16#10 and 16#10
eq 3 1 roll exch } def
/rhex { dup 1 sub exch currentfile exch string readhexstring pop dup 0
get dup 16#80 and 16#80 eq dup 3 1 roll { 16#7f and } if 2 index 0 3
-1 roll put 3 1 roll 0 0 1 5 -1 roll { 2 index exch get add 256 mul }
for 256 div exch pop exch { neg } if } def
/xcmd { rcmd exch rhex exch rhex exch 5 -1 roll add exch 4 -1 roll add
1 index 1 index 5 -1 roll { moveto } { lineto } ifelse } def end
/readpath { 0 0 pathdict begin { xcmd } loop end pop pop } def

systemdict /languagelevel known not {
/xshow { exch dup length 0 1 3 -1 roll 1 sub { dup 3 index exch get
exch 2 index exch get 1 string dup 0 4 -1 roll put currentpoint 3 -1
roll show moveto 0 rmoveto } for pop pop } def
/rectangle { 4 -2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0
rlineto closepath } def
/rectfill { rectangle fill } def
/rectstroke { rectangle stroke } def } if
/bshow { currentlinewidth 3 1 roll currentpoint 3 index show moveto
setlinewidth false charpath stroke setlinewidth } def
/bxshow { currentlinewidth 4 1 roll setlinewidth exch dup length 1 sub
0 1 3 -1 roll { 1 string 2 index 2 index get 1 index exch 0 exch put dup
currentpoint 3 -1 roll show moveto currentpoint 3 -1 roll false charpath
stroke moveto 2 index exch get 0 rmoveto } for pop pop setlinewidth } def

/psp_lzwfilter { currentfile /ASCII85Decode filter /LZWDecode filter } def
/psp_ascii85filter { currentfile /ASCII85Decode filter } def
/psp_lzwstring { psp_lzwfilter 1024 string readstring } def
/psp_ascii85string { psp_ascii85filter 1024 string readstring } def
/psp_imagedict {
/psp_bitspercomponent { 3 eq { 1 }{ 8 } ifelse } def
/psp_decodearray { [ [0 1 0 1 0 1] [0 255] [0 1] [0 255] ] exch get }
def 7 dict dup
/ImageType 1 put dup
/Width 7 -1 roll put dup
/Height 5 index put dup
/BitsPerComponent 4 index psp_bitspercomponent put dup
/Decode 5 -1 roll psp_decodearray put dup
/ImageMatrix [1 0 0 1 0 0] dup 5 8 -1 roll put put dup
/DataSource 4 -1 roll 1 eq { psp_lzwfilter } { psp_ascii85filter } ifelse put
} def
%%EndResource
%%EndProlog
%%BeginSetup
%
%%BeginResource: font FreeSansFID17HGSet1
%!PS-TrueTypeFont-1.0-1.8912
%%Creator: SunTypeTools-TT 1.0 gelf
%- Font subset generated from a source font file: '/usr/share/fonts/truetype/freefont/FreeSans.ttf'
%- Original font name: FreeSans
%- Original font family: FreeSans
%- Original font sub-family: Medium
11 dict begin
/FontName (FreeSansFID17HGSet1) cvn def
/PaintType 0 def
/FontMatrix [1 0 0 1 0 0] def
/FontBBox [-701 -462 1632 1141] def
/FontType 42 def
/Encoding 256 array def
0 1 255 {Encoding exch /.notdef put} for
Encoding 32 /glyph1 put
Encoding 49 /glyph2 put
Encoding 50 /glyph3 put
Encoding 69 /glyph4 put
Encoding 73 /glyph5 put
Encoding 83 /glyph6 put
Encoding 84 /glyph7 put
/XUID [103 0 1 16#F1AB33F5 8 16#41F94946 16#90495C21] def
/sfnts [<
747275650009008000030010637674208A0652020000009C00 0000246670676D
51818AF8000000C0000000C6676C79665FC7E6B50000018800 0001A468656164
3248CB270000032C0000003668686561DDFEDF030000036400 000024686D7478
CE03110D00000388000000206C6F63616C01B600000003A800 0000126D617870
2B001901000003BC0000002070726570B55F8B03000003DC00 0000F40000020C
02AE02D9004E000200040045004A0053005300550002000300 550055005E005E
B0002CB000134BB02A5058B04A7659B000233F18B0062B583D 594BB02A50587D
5920D4B001132E182DB0012C2020DA2FB0072B5C5820204723 46616A20582064
62381B2121591B21592DB0022C4B5258452359212DB0032C69 1820B040505821
B040592DB0042CB0062B582123217A58DD1BCD591B4B525858 FD1BED591B21B0
052B58B046765958DD1BCD595959182DB0052C0D5C5A2DB006 2CB12201885058
B020885C5C1BB000592DB0072CB12401885058B040885C5C1B B000592DB0082C
121120392F2D000000020043000001D403D100030007000001 11211105211121
01D4FE6F014EFEF5010B03D1FC2F03D143FCB5000001006600 00015B02C50008
00000123353E013733112301039D663E173A5801F93F0D2E52 FD3B0000010022
000001FF02C500190000133633321615140F010E0107211521 3E013F01363534
262322073207E3657E96644138070175FE2806526F5C60503C 850A01CFF6745C
84523623422D57757F3F343755394CA90001005A0000026502 D9000B00001315
21152111211521152115B701AEFDF501F9FE64018D014CFA52 02D952E9520000
00010064000000C202D90003000013112311C25E02D9FD2702 D9000000010030
FFE9026D02E50030000025323E0235342F0126353436333216 17232E01232206
1514161F011E0115140E0323222E03273315141E020156384E 250F86B58F8B78
7E8C0158015E574A593642B74A510F283E6741294B4E382501 58132B553B1A2A
291753233025856373776B474D44372A3012311460431D393D 2E1E0D23375C3C
051F36341F000000000100150000025102D900070000011123 11233521150162
5DF0023C0287FD790287525200010000000122D0887F8B485F 0F3CF5020B03E8
00000000C441E5C100000000000000000000FFE9026D03D100 00000800000000
00000000000100000384FED4005A0000000000000000000100 00000000000000
000000000000000801F4004301160000022C0066022C002202 9B005A01160064
029B003002630015000000160016002A0054006C007A00C000 D2000000010000
0008003100020000000000020001000000090000010000F400 040004B801FF85
004BB0085058B101018E59B146062B5821B010594BB0145258 21B080591DB006
2B5C5800B0042045B0032B44B0082045B20487022BB0032B44 B0072045B2083A
022BB0032B44B0062045B20714022BB0032B44B0052045BA00 06017600022BB0
032B44B0092045B20479022BB0032B44B00A2045BA00097FFF 00022BB0032B44
01B00B2045B0032B44B00D2045B20B12022BB10346762B44B0 0C2045BA000D03
9300022BB10346762B44B00E2045BA000B7FFF00022BB10346 762B44B00F2045
BA000E7FFF00022BB10346762B44B0102045B20F40022BB103 46762B44B01120
45BA00107FFF00022BB10346762B445900
>
] def
/CharStrings 8 dict dup begin
/.notdef 0 def
/glyph1 1 def
/glyph2 2 def
/glyph3 3 def
/glyph4 4 def
/glyph5 5 def
/glyph6 6 def
/glyph7 7 def
end readonly def
FontName currentdict end definefont pop
%%EndResource
%%DocumentSuppliedResources: font FreeSansFID17HGSet1
[{
%%IncludeFeature: *PageSize A4
} stopped cleartomark
[{
%%IncludeFeature: *InputSlot Automatic
} stopped cleartomark
[{
%%IncludeFeature: *Duplex DuplexNoTumble
} stopped cleartomark
%%EndSetup
%%Page: 1 1
%%PageBoundingBox: 18 12 577 830
%%BeginPageSetup
%
%%EndPageSetup
gsave
[0.12 0 0 -0.12 18 830] concat
gsave
323 1033 moveto
0 setgray
(FreeSansFID17HGSet1) cvn findfont 667 -667 matrix scale makefont setfont
<53454954452031>
[445 445 184 408 445 185 0]
xshow
grestore grestore
showpage
%%PageTrailer

%%Page: 2 2
%%PageBoundingBox: 18 12 577 830
%%BeginPageSetup
%
%%EndPageSetup
gsave
[0.12 0 0 -0.12 18 830] concat
gsave
323 1033 moveto
0 setgray
(FreeSansFID17HGSet1) cvn findfont 667 -667 matrix scale makefont setfont
<53454954452032>
[445 445 184 408 445 185 0]
xshow
grestore grestore
showpage
%%PageTrailer

%%Trailer
%%BoundingBox: 0 0 595 842
%%Pages: 2
%%EOF


3) Gutenprint Treiber - Duplexdruck geht

tobias@tobias:~/Desktop$ cat lj5m-gutenprint.ps
%!PS-Adobe-3.0
%%BoundingBox: (atend)
%%Creator: (OpenOffice.org 2.4)
%%For: (tobias)
%%CreationDate: (Tue Jan 12 21:25:01 2010)
%%Title: (seite-1-2)
%%LanguageLevel: 3
%%DocumentData: Clean7Bit
%%Pages: (atend)
%%PageOrder: Ascend
%%EndComments
%%BeginProlog
%%BeginResource: procset PSPrint-Prolog 1.0 0
/ISO1252Encoding [
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
/zero /one /two /three /four /five /six /seven
/eight /nine /colon /semicolon /less /equal /greater /question
/at /A /B /C /D /E /F /G
/H /I /J /K /L /M /N /O
/P /Q /R /S /T /U /V /W
/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
/grave /a /b /c /d /e /f /g
/h /i /j /k /l /m /n /o
/p /q /r /s /t /u /v /w
/x /y /z /braceleft /bar /braceright /asciitilde /unused
/Euro /unused /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl
/circumflex /perthousand /Scaron /guilsinglleft /OE /unused /Zcaron /unused
/unused /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash
/tilde /trademark /scaron /guilsinglright /oe /unused /zcaron /Ydieresis
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section
/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered
/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] def

/psp_definefont { exch dup findfont dup length dict begin { 1 index /FID ne
{ def } { pop pop } ifelse } forall /Encoding 3 -1 roll def
currentdict end exch pop definefont pop } def

/pathdict dup 8 dict def load begin
/rcmd { { currentfile 1 string readstring pop 0 get dup 32 gt { exit }
{ pop } ifelse } loop dup 126 eq { pop exit } if 65 sub dup 16#3 and 1
add exch dup 16#C and -2 bitshift 16#3 and 1 add exch 16#10 and 16#10
eq 3 1 roll exch } def
/rhex { dup 1 sub exch currentfile exch string readhexstring pop dup 0
get dup 16#80 and 16#80 eq dup 3 1 roll { 16#7f and } if 2 index 0 3
-1 roll put 3 1 roll 0 0 1 5 -1 roll { 2 index exch get add 256 mul }
for 256 div exch pop exch { neg } if } def
/xcmd { rcmd exch rhex exch rhex exch 5 -1 roll add exch 4 -1 roll add
1 index 1 index 5 -1 roll { moveto } { lineto } ifelse } def end
/readpath { 0 0 pathdict begin { xcmd } loop end pop pop } def

systemdict /languagelevel known not {
/xshow { exch dup length 0 1 3 -1 roll 1 sub { dup 3 index exch get
exch 2 index exch get 1 string dup 0 4 -1 roll put currentpoint 3 -1
roll show moveto 0 rmoveto } for pop pop } def
/rectangle { 4 -2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0
rlineto closepath } def
/rectfill { rectangle fill } def
/rectstroke { rectangle stroke } def } if
/bshow { currentlinewidth 3 1 roll currentpoint 3 index show moveto
setlinewidth false charpath stroke setlinewidth } def
/bxshow { currentlinewidth 4 1 roll setlinewidth exch dup length 1 sub
0 1 3 -1 roll { 1 string 2 index 2 index get 1 index exch 0 exch put dup
currentpoint 3 -1 roll show moveto currentpoint 3 -1 roll false charpath
stroke moveto 2 index exch get 0 rmoveto } for pop pop setlinewidth } def

/psp_lzwfilter { currentfile /ASCII85Decode filter /LZWDecode filter } def
/psp_ascii85filter { currentfile /ASCII85Decode filter } def
/psp_lzwstring { psp_lzwfilter 1024 string readstring } def
/psp_ascii85string { psp_ascii85filter 1024 string readstring } def
/psp_imagedict {
/psp_bitspercomponent { 3 eq { 1 }{ 8 } ifelse } def
/psp_decodearray { [ [0 1 0 1 0 1] [0 255] [0 1] [0 255] ] exch get }
def 7 dict dup
/ImageType 1 put dup
/Width 7 -1 roll put dup
/Height 5 index put dup
/BitsPerComponent 4 index psp_bitspercomponent put dup
/Decode 5 -1 roll psp_decodearray put dup
/ImageMatrix [1 0 0 1 0 0] dup 5 8 -1 roll put put dup
/DataSource 4 -1 roll 1 eq { psp_lzwfilter } { psp_ascii85filter } ifelse put
} def
%%EndResource
%%EndProlog
%%BeginSetup
%
%%BeginResource: font FreeSansFID17HGSet1
%!PS-TrueTypeFont-1.0-1.8912
%%Creator: SunTypeTools-TT 1.0 gelf
%- Font subset generated from a source font file: '/usr/share/fonts/truetype/freefont/FreeSans.ttf'
%- Original font name: FreeSans
%- Original font family: FreeSans
%- Original font sub-family: Medium
11 dict begin
/FontName (FreeSansFID17HGSet1) cvn def
/PaintType 0 def
/FontMatrix [1 0 0 1 0 0] def
/FontBBox [-701 -462 1632 1141] def
/FontType 42 def
/Encoding 256 array def
0 1 255 {Encoding exch /.notdef put} for
Encoding 32 /glyph1 put
Encoding 49 /glyph2 put
Encoding 50 /glyph3 put
Encoding 69 /glyph4 put
Encoding 73 /glyph5 put
Encoding 83 /glyph6 put
Encoding 84 /glyph7 put
/XUID [103 0 1 16#F1AB33F5 8 16#41F94946 16#90495C21] def
/sfnts [<
747275650009008000030010637674208A0652020000009C00 0000246670676D
51818AF8000000C0000000C6676C79665FC7E6B50000018800 0001A468656164
3248CB270000032C0000003668686561DDFEDF030000036400 000024686D7478
CE03110D00000388000000206C6F63616C01B600000003A800 0000126D617870
2B001901000003BC0000002070726570B55F8B03000003DC00 0000F40000020C
02AE02D9004E000200040045004A0053005300550002000300 550055005E005E
B0002CB000134BB02A5058B04A7659B000233F18B0062B583D 594BB02A50587D
5920D4B001132E182DB0012C2020DA2FB0072B5C5820204723 46616A20582064
62381B2121591B21592DB0022C4B5258452359212DB0032C69 1820B040505821
B040592DB0042CB0062B582123217A58DD1BCD591B4B525858 FD1BED591B21B0
052B58B046765958DD1BCD595959182DB0052C0D5C5A2DB006 2CB12201885058
B020885C5C1BB000592DB0072CB12401885058B040885C5C1B B000592DB0082C
121120392F2D000000020043000001D403D100030007000001 11211105211121
01D4FE6F014EFEF5010B03D1FC2F03D143FCB5000001006600 00015B02C50008
00000123353E013733112301039D663E173A5801F93F0D2E52 FD3B0000010022
000001FF02C500190000133633321615140F010E0107211521 3E013F01363534
262322073207E3657E96644138070175FE2806526F5C60503C 850A01CFF6745C
84523623422D57757F3F343755394CA90001005A0000026502 D9000B00001315
21152111211521152115B701AEFDF501F9FE64018D014CFA52 02D952E9520000
00010064000000C202D90003000013112311C25E02D9FD2702 D9000000010030
FFE9026D02E50030000025323E0235342F0126353436333216 17232E01232206
1514161F011E0115140E0323222E03273315141E020156384E 250F86B58F8B78
7E8C0158015E574A593642B74A510F283E6741294B4E382501 58132B553B1A2A
291753233025856373776B474D44372A3012311460431D393D 2E1E0D23375C3C
051F36341F000000000100150000025102D900070000011123 11233521150162
5DF0023C0287FD790287525200010000000122D0887F8B485F 0F3CF5020B03E8
00000000C441E5C100000000000000000000FFE9026D03D100 00000800000000
00000000000100000384FED4005A0000000000000000000100 00000000000000
000000000000000801F4004301160000022C0066022C002202 9B005A01160064
029B003002630015000000160016002A0054006C007A00C000 D2000000010000
0008003100020000000000020001000000090000010000F400 040004B801FF85
004BB0085058B101018E59B146062B5821B010594BB0145258 21B080591DB006
2B5C5800B0042045B0032B44B0082045B20487022BB0032B44 B0072045B2083A
022BB0032B44B0062045B20714022BB0032B44B0052045BA00 06017600022BB0
032B44B0092045B20479022BB0032B44B00A2045BA00097FFF 00022BB0032B44
01B00B2045B0032B44B00D2045B20B12022BB10346762B44B0 0C2045BA000D03
9300022BB10346762B44B00E2045BA000B7FFF00022BB10346 762B44B00F2045
BA000E7FFF00022BB10346762B44B0102045B20F40022BB103 46762B44B01120
45BA00107FFF00022BB10346762B445900
>
] def
/CharStrings 8 dict dup begin
/.notdef 0 def
/glyph1 1 def
/glyph2 2 def
/glyph3 3 def
/glyph4 4 def
/glyph5 5 def
/glyph6 6 def
/glyph7 7 def
end readonly def
FontName currentdict end definefont pop
%%EndResource
%%DocumentSuppliedResources: font FreeSansFID17HGSet1
[{
%%IncludeFeature: *PageSize A4
} stopped cleartomark
[{
%%IncludeFeature: *InputSlot LowerAdj
} stopped cleartomark
%%EndSetup
%%Page: 1 1
%%PageBoundingBox: 10 12 585 830
%%BeginPageSetup
%
%%EndPageSetup
gsave
[0.2392 0 0 -0.2392 10 830] concat
gsave
197 518 moveto
0 setgray
(FreeSansFID17HGSet1) cvn findfont 334 -334 matrix scale makefont setfont
<53454954452031>
[223 223 93 204 223 93 0]
xshow
grestore grestore
showpage
%%PageTrailer

%%Page: 2 2
%%PageBoundingBox: 10 12 585 830
%%BeginPageSetup
%
%%EndPageSetup
gsave
[0.2392 0 0 -0.2392 10 830] concat
gsave
197 518 moveto
0 setgray
(FreeSansFID17HGSet1) cvn findfont 334 -334 matrix scale makefont setfont
<53454954452032>
[223 223 93 204 223 93 0]
xshow
grestore grestore
showpage
%%PageTrailer

%%Trailer
%%BoundingBox: 0 0 595 842
%%Pages: 2
%%EOF


Zum Schluß habe ich jetzt noch mal den Weg über die Shell versucht:

tobias@tobias:~/Desktop$ cat lj5m-original.ps | sed -e 's/%%EndSetup/%%BeginFeature:\n \<\<\/Duplex true \/Tumble false\>\> setpagedevice\n%%EndFeature\n%%PageSetup/g' > lj5m-modifiziert.ps
tobias@tobias:~/Desktop$ grep -i duplex lj5m-modifiziert.ps
<</Duplex true /Tumble false>> setpagedevice
tobias@tobias:~/Desktop$ lpr -Plj5m-raw2 lj5m-modifiziert.ps
Obwohl der Text in die PS-Datei übernommen wird, gibt der Drucker das Dokument auf zwei Seiten aus. :(

Hast Du noch eine Idee?

Gruß, talpa

HBtux
12.01.10, 23:02
Sorry. Ich habe gerade gesehen, dass ich im Thread #11 und #13 einen Tippfehler im Befehl hatte.....
PS: ich hatte nach %%EndSetup gesucht und dies nachher durch %%PageSetup ersetzt.
Es muss natürlich beides Mal %%EndSetup heißen..... :(

Hier noch mal die korregierte Version.
Wenn Du noch die Geduld hast, einfach noch mal probieren.

cat lj5m-original.ps | sed -e 's/%%EndSetup/%%BeginFeature:\n \<\<\/Duplex true \/Tumble false\>\> setpagedevice\n%%EndFeature\n%%EndSetup/g' > lj5m-modifiziert.ps





Wenn ich mit Gutenprint in eine Datei drucke, so enthält diese Datei nicht eine Zeile mit "duplex" oder "tumble".


Und was ist das?


2) Turboprint Treiber - Duplexdruck geht

tobias@tobias:~/Desktop$ cat lj5m-turboprint.ps
%!PS-Adobe-3.0
------- SCHNIPP ------
[{
%%IncludeFeature: *Duplex DuplexNoTumble
} stopped cleartomark
%%EndSetup
------- SCHNIPP ------


Dies habe ich im Beispiel 2) "Turboprint Treiber" gefunden.

Die Drucksequenz für den Duplex-Druck heißt hier allerdings etwas anderst, wie wir bisher vermutet haben.

Du kannst also auf der Shell dann noch mal mit dem folgenden Befehl testen....


cat lj5m-original.ps | sed -e 's/%%EndSetup/\[\{\n%%IncludeFeature: *Duplex DuplexNoTumble\n\}stopped cleartomark\n%%EndSetup/g' > lj5m-modifiziert.ps


Den Unterschied der beiden Dateien kannst Du Dir mit dem folgenden Befehl anzeigen lassen.....


HBtux:/tmp # diff lj5m-original.ps lj5m-modifiziert.ps
183a184,186
> [{
> %%IncludeFeature: *Duplex DuplexNoTumble
> }stopped cleartomark



Warum Beispiel 3) "Gutenprint Treiber" geht, obwohl nichts von Duplex drinnen steht, weiß ich nicht genau.
Der einzige gravierende Unterschied, der meines erachtens eine Rolle spielen könnte, im Beispiel 3) steht "%%LanguageLevel: 3".
Im Beispiel 1) hingegen "%%LanguageLevel: 2".
Dies ist aber nur ein Vermutung von mir.

talpa
12.01.10, 23:42
Auch mit der korrigierten Version wird das Dokument auf zwei separaten Seiten ausgedruckt. :(


Lies Dir mein Zitat nochmal durch:

Hallo HBtux,

es wird immer mysteriöser. Wenn ich mit Gutenprint in eine Datei drucke, so enthält diese Datei nicht eine Zeile mit "duplex" oder "tumble". Trotzdem funktioniert der Duplexdruck mit diesem Treiber bestens. Er druckt übrigens auch mit PS:

tobias@tobias:~/Desktop$ file lj5m-gutenprint.ps
lj5m-gutenprint.ps: PostScript document text conforming DSC level 3.0, Level 3

Ich habe mich nur auf den Gutenprint Treiber bezogen. Dass der Turboprint Treiber "Duplex" enthält, wusste ich schon. Darum habe ich mich ja so über den Gutenprint Treiber gewundert.



Deine Variante mit dem Duplex-Befehl aus dem Turboprint Treiber habe ich auch noch probiert - leider wieder ohne Erfolg. :(



Ich habe eine Zusammenfassung von diesem Beitrag auf der HP Hilfeseite (https://answers.launchpad.net/hplip/+question/97201) gepostet. Wenn ich dort eine Lösung auf mein Problem finde, werde ich diese hier mitteilen. Ansonsten werde ich mit dem Gutenprint Treiber glücklich bis in alle Ewigkeit Duplex drucken. :)


Gruß, talpa