Newsgroup: it.comp.java
Titolo: Stampa PDF su win

Ciao a tutti.
CDO provengo da un epico scontro con l'amato/odiato figlio di Redmond.
La situazione: ho appena terminato la realizzazione di un piccolo 
software di fatturazione, il quale sfrutta per il rendering dei 
documenti le ottime POF di Jakarta. Una volta ottenuto il PDF si tratta 
(auspicabilmente) di stamparlo. Su Linux (il mio ambiente di sviluppo) 
no problem: setto il flavor su AUTOSENSE (ma anche POSTSCRIPT ca alla 
grande), invio lo stream alla stampante (una comunissima epson c62) ed 
ecco saltar fuori il mio bell'A4 egregiamente formattato :)
Prova del nove: STESSA STAMPANTE, stessa versione JRE, ...windows! 
Risultati:
1) Prova con flavor POSTSCRIPT: Eccezione "unsopported flavor".
2) Prova con flavor AUTOSENSE: Nessuna eccezione; in stampa ecco venir 
fuori il codice postscript (!)
Unica soluzione, per ora, quella "sporca": da codice invito gentilmente 
l'amico AcroRead32.exe ad occuparsi della stampa del file di sua conoscenza.
In attesa di una soluzione migliore, nel frattempo ho preso in prestito 
il pattern strategy e ho tirato fuori una classettina 
MultiStrategyPDFPrinter (il nome è ancora provvisorio :P), che mi 
permette di configurare al volo la strategia di stampa in base alle 
condizioni del sistema sottostante (la stampa con acrobat è l'"ultima 
spiaggia" :)).
Nel frattempo mi sono un po' doumentato e ho capito il perché del 
differente comportamento linux/windows: a quanto pare cups, fungendo da 
server di stampa vero e proprio, capisce postscript ed è in grado di 
dare le giuste direttive alla stampante; su windows pare invece che 
tutto il lavoro sia delegato al driver e alla stampante stessa, e in 
questo caso il risultato è che il postscript non è supportato.
Tutto questo lungo post per chiedere se qualcuno di voi, già incappato 
in questo problema, abbia trovato un soluzione migliore rispetto al mio 
"accrocchio". Se invece dovesse trattarsi di un problema comune potrei 
rendere opensource la mia MultiStrategy etc. etc. nel caso potesse 
risparmiare qualche mal di testa a qualcun altro :)
Attendo i vs commenti e mi scuso per la lunghezza
Buon lunedì a tutti
pole
-- 
ammentos - a lightweight persistence framework for JDK5
http://ammentos.biobytes.it
Flash tutorial: 
http://ammentos.biobytes.it/quickstart/quickstart.htm

In wizozz per stampare su pdf esistono diverse strategie.
Alcuni dei tools di reportistica includono nativa la possibilità di
dirottare la stampa su pdf. In alternativa, se il tool non supporta
questa feature, si ricorre a drivers di stampa appositi. Lo installi
come una normale stampante e poi mandi su questa stampante "finta" la
stampa che ti serve.
Non so suggerirti qualcosa mo su 2 piedi, ma se fai una ricerca su
google penso che potresti trovare qualcosa, a pagamento di sicuro
(ehehehehe), freeware probabilmente.
Prova su sourceforge tanto x iniziare.
Infine, una precisazione.
Se su windows speri di CAPIRE se una stampante è di tipo "fisico"
oppure "virtuale", cioè, che stampa su un file di qualche tipo e non
su carta, preparati al peggio, xche SEMBRA non esista nulla che
permetta di fare questa distinzione.
Lo so xche se ne è parlato sul ng di delphi poco tempo fa  e nessuno
riusci a trovare qualcosa di veramente decisivo.
Saluti e buona neve a tutti.
AS

 In wizozz per stampare su pdf esistono diverse strategie.
 > [...]
Ciao Alberto, grazie per la risposta, però occhio: non parlavo di 
stampare *SU* pdf (come dicevo qui le FOP vanno a meraviglia), ma di 
stampare *IL* pdf sulla stampante vera e propria.
Il mi problema è che utilizzando la soluzione "all java" (col 
DocPrintJob per intenderci) la stampante su win non collabora :P
Il problema è discusso anche qui:
http://forum.java.sun.com/thread.jspa?threadID=523898&start=0
Qualche idea in questo caso?
Ciao e ancora grazie per l'interessamento


 l'amico AcroRead32.exe ad occuparsi della stampa del file di sua conoscenza.
Mi dettagli meglio questa soluzione? Cioè, ke kakkio fai per
"invitare" acroxx a stampare? Usi ole? Puoi postare un po di codice?
baiBai
AS
AS

Alberto Salvati wrote:
 > Mi dettagli meglio questa soluzione? Cioè, ke kakkio fai per
 > "invitare" acroxx a stampare? Usi ole? Puoi postare un po di codice?
Eheh nulla di trascendentale, una banale (e sporchissima) Runtime.exec() 
di un comando tipo (non ho sottomano il codice)
c:\blablabla\acroread32.exe /p /h <nomefile.pdf>
Il tutto ovviamente nascosto dentro la MultiStrategyetc. *se e solo se* 
i metodi puliti falliscono. Il che purtroppo sembra la regola con questa 
stampante su win :-/


bhe, sara sporco e poco elegante ma funziona.
In genere, su winzozz x fare 'ste cose si una OLE, ma la cura potrebbe
essere peggiore del male...
Da java si puo usare ole su winzozz, giusto?
AS


Beh bisognerebbe innanzitutto vedere se Acrobat Reader esporta oggetti 
OLE (non mi sembra a dire il vero).
Poi per utilizzare OLE da Java (ad es. per connettersi con MS Office) 
conosco soluzioni più o meno valide; la più famosa credo sia questa 
(commerciale):
http://www.jniwrapper.com/pages/home
Tuttavia mi guardo bene dall'usare questa roba, soprattutto ora che c'è 
UNO per OpenOffice:
http://api.openoffice.org/docs/java/ref/index.html
;)
ciao!


 pole
non c'č niente qui...

 non c'č niente qui...
Sorry, non so come mai.
Questa č la pagina da cui si ottiene quel link:
http://api.openoffice.org/SDK/index.html
