# Fehlende Zeichen beim Drucken mit PDFBox



## master099 (4. Jul 2012)

Hallo zusammen,

ich habe ein Problem beim Drucken mit PDFBox.

Meine Vorgehensweise bis zum Druckauftrag:

- Druckauftrag per Redmon entgegenehmen und an meine Java-Anwendung weitergeben
- In der Anwendung wird die entgegengenomme Postscript-Datei mittels Ghostscript (GSWin32c.exe) in eine PDF umgewandelt
- Zusätzlich wird per IText ein Template (Briefpapier) mit der erstellten PDF gemergt

Bis hierhin funktioniert alles. Diese Datei soll nun über den Java-Printdialog (oder Windows-Printdialog) ausgedruckt werden. Hierfür setze ich PDFBox ein. Das Problem ist nun, dass bestimmte Buchstaben fehlen.

Folgendes tritt beim Drucken auf:

- Beim den Inhalten aus dem Template (Briefpapier) fehlen die Umlaute, alle anderen Buchstaben werden korrekt gedruckt
- Beim den Inhalten, die aus der Anwendung kommen, fehlen die Buchstaben c, k und o ... alle anderen Buchstaben (auch Umlaute) werden korrekt gedruckt

ABER:

Wenn man die PDF als Datei ablegt und diese dann z. B. per Acrobat Reader druckt, funktioniert es fehlerfrei! Es muss daher vermutlich mit eingebetetten Schriften o. ä. zusammenhängen, aber ich finde keine Lösung.

Habe alternativ auch schonmal PDF-Renderer statt PDFBox probiert. Die Ausgabe war jedoch noch fehlerhafter oder es kommt die Fehlermeldung "Don´t know how to handle MMType1-Font". Das Ganze als Bild zu drucken geht nicht, da sich das Template dann mit der generierten PDF überlagert.

Hat jemand eine Idee? Beispiel-Code kann ich noch posten, falls nötig. Vielen Dank im Voraus...


----------



## HoaX (4. Jul 2012)

Jaja, solch komische Sachen mit PDFs kenne ich. Bei mir war die Lösung das ganze nochmal durch Ghostscript zu jagen und als PDF 1.3 oder so schreiben zu lassen.


----------



## master099 (5. Jul 2012)

Vielen Dank für deine Rückmeldung.



> Bei mir war die Lösung das ganze nochmal durch Ghostscript zu jagen und als PDF 1.3 oder so schreiben zu lassen.


Leider kann ich dir da nicht folgen, könntest du dein Vorgehen bzgl. des Problems etwas genauer schildern, oder vielleicht sogar das Command posten. Mir ist nämlich nicht klar, wie ich eine PDF Datei erneut mit Ghostscript "bearbeiten" kann und somit als Input = PDF und als Output = PDF angeben kann.

Danke schon mal für deine Mühe,
Gruß master099


----------



## HoaX (5. Jul 2012)

Einfach dem Ghostscript das PDF zum Lesen geben, ganz einfach:

```
$ cat shrinkpdf.sh 
#!/bin/sh

gs	-q -dNOPAUSE -dBATCH -dSAFER \
	-sDEVICE=pdfwrite \
	-dCompatibilityLevel=1.3 \
	-dPDFSETTINGS=/screen \
	-dEmbedAllFonts=true \
	-dSubsetFonts=true \
	-dColorImageDownsampleType=/Bicubic \
	-dColorImageResolution=100 \
	-dGrayImageDownsampleType=/Bicubic \
	-dGrayImageResolution=100 \
	-dMonoImageDownsampleType=/Bicubic \
	-dMonoImageResolution=100 \
	-dColorConversionStrategy=/LeaveColorUnchanged \
	-sOutputFile=out.pdf \
	 $@
```


----------



## master099 (7. Jul 2012)

Hi,

also ich habe deinen Tip ausprobiert aber leider ohne Erfolg. In dem Erzeugten PDF fehlen weiterhin Zeichen. 

Hat vielleicht jemand anderes eine Idee?

Alternativ habe ich die Möglichkeit aus dem PDF ein PNG zu generieren per Ghostscript und dieses Bild dann in ein neues iText Document einbinden und wiederum als PDF speichern. Mir fällt dabei nur auf, dass das Bild einfach nicht so sauber aussieht(verwaschen) wie einfacher Text. 

Für jeden weiteren Tip bin ich dankbar.

Gruß,
master099


----------



## master099 (23. Jul 2012)

Hi nochmal,

ich habe jetzt noch weiter probiert und bekomme noch keine saubere Lösung hin. Habe es jetzt so gelöst, dass ich per Ghostscript aus der PDF ein JPG in höchstmöglicher Qualität generiere. Dies binde ich dann in ein IText Document ein und generiere die finale PDF. Folgende Probleme treten auf:

- Die Druckqualität ist nicht 100%tig.
- Wenn es sich im mehrere Seiten handelt, werden natürlich mehrere JPGs generiert. Die daraus am Ende resultierende PDF wird dann aber mitunter sehr groß, so dass man sie z. B. nicht mehr per Mail verschicken kann.

Könnte jetzt noch probieren statt JPG das Ganze als EPS zu generieren und damit evtl. den Qualitätsverlust zu beseitigen. Hab jedoch noch nicht raus, wie das so richtig funktioniert. Die Dateigröße wird am Ende vermutlich aber immer noch zu groß sein.

Das Problem mit der Textcodierung muss doch zu lösen sein, so dass ich gar nicht erst ein Bild aus der PDF machen muss ((( hast du - oder jemand anders - evtl. noch einen Tip?

DANKE

Gruß, 
Daniel


----------



## HoaX (23. Jul 2012)

Kannst du ein paar PDFs (vorher & nachher) + KSKB anhängen?


----------



## Empire Phoenix (24. Jul 2012)

Wie siehts mit Desktop.getInstance().print() aus? das sollte über den acrobat dann printen und doch eigentlich ausreichen oder?


----------



## HoaX (24. Jul 2012)

Empire Phoenix hat gesagt.:


> Wie siehts mit Desktop.getInstance().print() aus? das sollte über den acrobat dann printen und doch eigentlich ausreichen oder?



Da wird sicherlich das Problem sein, dass danach der Acrobat Reader offen bleibt und sich nicht beendet (so hab ich das zumindest in Erinnerung).


----------



## master099 (25. Jul 2012)

Hallo, sorry dass ich mich jetzt erst melde. Habe solange noch selbst probiert. Danke für die Antworten...

Ich benötige einen Druckerdialog. Habe es mittlerweile scheinbar hinbekommen. Zumindest gingen nun alle Tests sauber durch. Es lag scheinbar an einer exklusiven Schrift (Frutiger). Nun funktioniert es mit allen Zeichen - auch ohne die Formatierung als Bild - und die PDF´s werden natürlich auch nicht zu groß.

Teste jetzt nochmal ausführlich und melde mich ggf. nochmal. MERCI...

PS: Echt nicht ohne das PDF-Thema...

Gruß, 
Daniel


----------



## master099 (27. Jul 2012)

Leider ist das Thema nach meinen letzten Tests doch noch nicht ganz erledigt. Aber habe das Problem nun eingekreist.

Ich habe Briefpapier dabei, wo die Schriftart "Frutiger" als Typo1-Schrift eingebettet ist. Bei diesem Briefpapier werden die Umlaute nicht mitgedruckt. Verwende ich ein PDF-Template (Briefpapier), wo "Frutiger" als TrueTypeFont eingebunden ist, druckt er alle Umlaute korrekt mit.

Wie ich es hinbekomme, dass auch Type1-Schriften funktionieren, weiß ich noch nicht. Jemand da vll noch ne Idee?

Ansonsten frage ich beim Kollegen, der das Briefpapier erstellt mal nach, warum er Frutiger ab und an als Type1-Schrift eingebunden hat und manchmal als TrueTypeFont. Vermute, dass ein paar PDF-Templates, sprich das Briefpapier evtl. mit Openoffice erzeugt wurden. Wobei, wenn ich mit Openoffice eine PDF erzeuge und die Schrift "Frutiger" nehme, habe ich sie immer als TrueType drin. Damit funktioniert es dann auch...


----------

