# PDF Drucker mit einer Java API



## hansmaiser (22. Mrz 2011)

Hallo,

ich weiß nicht, ob ich im richtigen Forum gelandet bin. 
Ich suche nämlich einen PDF Drucker für Windows mit einer Java API, wer kennt so ein Tool?

Hintergrund:
Ich will aus einer Spezialapplikation PDFs automatisiert generieren.

Diese Spezialapplikation, bietet die Möglichkeit Macros zu erstellen (in Java und Javascript) um automatisierte Aktionen durchzuführen.

Meine Idee:
1. Ich installiere einen PDF-Drucker mit Java-API, so dass ich auf den Druckerspool im Macro zugreifen kann
2. Ich lasse mir die gewünschten Inhalte per Macro auf den PDF-Drucker drucken, dazu gibt es eine Funktion "print()" in der Macro-API des Tools.
3. Über den Zugriff auf den Druckerspool stelle ich die Parameter für Speicherort und Name der PDF-Datei ein.

Somit bekomme ich die PDFs automatisiert aus der Applikation.

Mit dem PDF-Creator hatte ich das auch umgesetzt, jedoch hat der nur eine COM-Schnittstelle. Gibt es soetwas auch mit einer Java-Schnittstelle?

Gruß
Hans


----------



## Andi_CH (22. Mrz 2011)

Wie wärs mit google ???


----------



## hansmaiser (22. Mrz 2011)

Super Idee, ich googele seite ein paar Tagen.

Hat denn jemand einen konkreten Tipp für einen PDF-Drucker (der auch als Drucker im Windows installiert wird), der von Java Programmen angesprochen werden kann?


----------



## Guybrush Threepwood (22. Mrz 2011)

Anders als bei Apple gibt es das bei Windows nicht standardmäßig. Du wirst einen PDF-Export in Dein Programm einbauen müssen.


----------



## Andi_CH (22. Mrz 2011)

hansmaiser hat gesagt.:


> Super Idee, ich googele seite ein paar Tagen.
> 
> Hat denn jemand einen konkreten Tipp für einen PDF-Drucker (der auch als Drucker im Windows installiert wird), der von Java Programmen angesprochen werden kann?



Auch davon gibt es diverse 

Hier bei mir ist cute PDF Writer installiert ....



Guybrush Threepwood hat gesagt.:


> Anders als bei Apple gibt es das bei Windows nicht standardmäßig. Du wirst einen PDF-Export in Dein Programm einbauen müssen.


Genau aus diesem Grund wird gerne das Drucker API benutzt ....


----------



## hansmaiser (22. Mrz 2011)

Danke für den Hinweis mit CutePDF. Hab ich mir angeschaut, jedoch hat der Writer eine Java API? Wo ist die denn dokumentiert, bisher habe ich nur was VB/C++ gelesen...

Vielleicht bin ich ja zu blöd um die zu finden :autsch:


----------



## antrox (23. Mrz 2011)

wuerde mich auch mal interessieren wie ich eine pdf mit java mache


----------



## asdas23233 (23. Mrz 2011)

iText ® - Free / Open Source PDF Library for Java and C#


----------



## Andi_CH (23. Mrz 2011)

hansmaiser hat gesagt.:


> Danke für den Hinweis mit CutePDF. Hab ich mir angeschaut, jedoch hat der Writer eine Java API? Wo ist die denn dokumentiert, bisher habe ich nur was VB/C++ gelesen...
> 
> Vielleicht bin ich ja zu blöd um die zu finden :autsch:



Das braucht keine spezifische Java-API. Es ist ja ein Drucker!
Es gibt hier sicher schon x Threads zum Thema wie man aus Java heraus ausdruckt.

Einfach Drucker auswählen und drucken.

Wenn du etwas direkt ansprechen willst, dann nimm KEINEN Drucker.

Also wenn sogar ich bei google nach 0.5 Sekunden etwas finde - schau mal hier oder hier oder hier

PDF generieren dürfte definitv mehr als ein einzelner Java-Befehl sein.


----------



## hansmaiser (23. Mrz 2011)

Hallo Andi,

genau das ist ja das Problem, ich brauche einen PDF-Drucker, der über Java angesprochen werden kann. 

Ich brauche keine reine Java Bibliothek mit der man PDFs erstellt. (Ich will nicht irgendein Word-Dokument in ein PDF umwandeln, klar geht das mit den vorgeschlagenen Bibliotheken, aber das war auch nicht meine Frage...) 

Ich will auf den in Windows installierten PDF-Drucker aus Java zugreifen. 

Beim PDFCreator konnte ich in VisualBasic auf den "PritnerSpooler" zugreifen, d.h. wenn ich aus der Spezial-Applikation heraus auf dem PDFCreator drucke, konnte ich diesen Druckauftrag in einem Macro abgreifen und entsprechend verarbeiten.

Gibt es dafür eine Lösung?


----------



## Dit_ (23. Mrz 2011)

```
try {
			Desktop.getDesktop().print(new File("c:\\test.txt"));
		} catch (IOException e) {
			e.printStackTrace();
		}
```

Es wird der StandardDrucker verwendet.


----------



## ice-breaker (23. Mrz 2011)

hansmaiser hat gesagt.:


> Ich will auf den in Windows installierten PDF-Drucker aus Java zugreifen.



Java arbeitet nicht Betriebssystemnah, von daher ist das Problem nicht lösbar.
Zumal Windows keinen PDF-Drucker hat? ???:L


Die COM-Schnittstelle deines genannten PDF Druckers könntest du vielleicht mit Java RXTX ansprechen.


----------



## Andi_CH (23. Mrz 2011)

ice-breaker hat gesagt.:


> Java arbeitet nicht Betriebssystemnah, von daher ist das Problem nicht lösbar.
> Zumal Windows keinen PDF-Drucker hat? ???:L



Sorry, aber ist jetzt zweimal echte Scheisse was du erzählst.
1. Oben steht wie du zu einem pdf Drucker kommst und du behauptest es gäbe keinen.
2. Java hat sehr wohl die Möglichkeit einen Drucker des Betriebssystemes anzusteuern!
Durchsuch die Threads hier, ich bin 100% sicher das wurde vor wenigen Monaten diskutiert.

EDIT:
Eigentlich ist es sogar dreimal Scheisse - einen Drucker spricht man ganz sicher nicht über einen Parallel- oder sonstigen Port an, sondern über den Druckertreiber - dazu ist der da.


----------



## ice-breaker (23. Mrz 2011)

Andi_CH hat gesagt.:


> 1. Oben steht wie du zu einem pdf Drucker kommst und du behauptest es gäbe keinen.


Windows hat standardmäßig keinen, deswegen kann er auch nicht "den Windows PDF-Drucker" ansprechen, sondern nur einen eigens installierten PDF-Drucker



Andi_CH hat gesagt.:


> 2. Java hat sehr wohl die Möglichkeit einen Drucker des Betriebssystemes anzusteuern!


korrekt, er will aber nicht einfach nur drucken sondern das Gedruckte auch gleich wieder mit seinem Java-Programm abfangen und dazu müsste er direkt mit dem Druckertreiber kommunizieren können, falls es diese Option überhaupt gibt und da Java keine Operationen so tief im Betriebssystem machen kann, ist dies eben nicht möglich.



Andi_CH hat gesagt.:


> Eigentlich ist es sogar dreimal Scheisse - einen Drucker spricht man ganz sicher nicht über einen Parallel- oder sonstigen Port an, sondern über den Druckertreiber - dazu ist der da.


natürlich nicht :noe:
Er schreibt aber in seinem 1. Post, dass er mit der Software "PDF Creator" über die COM-Schnittstelle kommunizieren kann, ergo könnte er mit Java RXTX über die serielle Schnittstelle mit dem Druckertreiber kommunizieren.


----------



## Guybrush Threepwood (23. Mrz 2011)

Andi_CH hat gesagt.:


> EDIT:
> Eigentlich ist es sogar dreimal Scheisse



Was geht denn hier ab? Nur weil ice-breaker anderer Meinung ist (und nebenbei bemerkt recht hat) muss man ja nicht gleich mit Stoffwechselendprodukten um sich werfen. Schlechten Tag gehabt?


----------



## antrox (23. Mrz 2011)

wie waere es mit einem beispiel was funktioniert? waere doch die beste antworte oder nicht ^^ ?


----------



## Guybrush Threepwood (23. Mrz 2011)

antrox hat gesagt.:


> wie waere es mit einem beispiel was funktioniert? waere doch die beste antworte oder nicht ^^ ?



PDF RTFJava


----------



## tuxedo (24. Mrz 2011)

ice-breaker hat gesagt.:


> Er schreibt aber in seinem 1. Post, dass er mit der Software "PDF Creator" über die COM-Schnittstelle kommunizieren kann, ergo könnte er mit Java RXTX über die serielle Schnittstelle mit dem Druckertreiber kommunizieren.



YMMD ... Super LOL. :lol:

COM (Component Object Model ? Wikipedia) != COM (RS-232 ? Wikipedia)

Quizfrage: Wenn es um einen PDF Drucker geht... Welches COM wird's dann sein?
Oder hast du einfach das Ironie-Smiley vergessen?

Aber gut, genug "gelästert".. *back to topic*


----------



## ice-breaker (24. Mrz 2011)

tuxedo hat gesagt.:


> COM (Component Object Model ? Wikipedia) != COM (RS-232 ? Wikipedia)



ich bin davon ausgegangenen dass der Drucker eine RS-232-Schnittstelle simuliert (virtual com) wie es bei wirklich alten Druckern war


----------



## tuxedo (24. Mrz 2011)

Sowenig wie du auf meine Idee gekommen bist, so wenig bin ich auf deine Idee gekommen. :autsch:


----------

