Newsgroup: it.comp.java
Titolo: stampa pdf con javax.print

Ciao,
ho visto che nel jdk 1.4 esiste dei package che aggiungono funzionalità di
stampa.
La mia esigenza è stampare documenti pdf ma mi sembra di capire che per la
maggior parte delle stampanti cio non sia possibile dato che non hanno il
flawor (mi sembra venga chiamato cosi) necessario ovvero non stampano
(almeno non direttamente) cose del tipo application/pdf (anche se adesso
inizio a capire che era ragionevole aspettarselo, meglio tardi che mai).
Dato che in realtà ho ancora un'idea confusa del problema vi chiedo se
qualcuno ha gia smanettato con queste API e magari ha un link a qualche
risorsa utile (con google ho trovato solo la doc ufficiale che non parla di
stampe di pdf, o almeno non l'ho capito).
Ciao
--
Massimo

 stampe di pdf, o almeno non l'ho capito).
Ciao,
vai su 
http://xml.apache.org/fop/index.html
, e' freeware e funziona bene.
JavaFun
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 wrote in message
news:afum2h$lcl$1...@news.newsland.it...


La mia esigenza è stampare documenti pdf ma mi sembra di capire che per la
[...]
Non ho ben capito cosa ti serve.
Hai gia' dei pdf e li vuoi stampare o li devi generare?
-- 
Stefano Morandi
m o r a n d i s (at) t i n (dot) i t 

il pdf ce l'ho già, adesso lo dovrei stampare
--
Massimo
"Stefano M" <p...@pp.pp> wrote in message
news:3d22e15f....@news.tin.it...


il pdf ce l'ho già, adesso lo dovrei stampare
Lo so che e' una carognata, ma io lo faccio aprire da acrobat reader e
sono a posto! :-)


Se ne discusse in questo thread: l'ultimo post mostra come invocare acrobat per fargli
stampare direttamente il PDF:
http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&th=8ad6bc205b87cb13&rnum=1
Ciao,
    Bruno.
---
| Bruno Bossola 
| A Java Software Engineer :-)
| 
http://digilander.iol.it/bbossola
|
| (rimuovere gli spazi dall'indirizzo per rispondere via email)

Insomma anche voi mi confermate che č un problema stampare un pdf senza 
usare l'acrobat.  Speravo di farne a meno perchč avevo visto letto PDF 
da qualche parte della documentazione delle javax.print ma forse il 
passaggio non č cosě immediato.  Beh grazie a tutti, ciao



Veramente nessuno sta dicendo questo :-), semplicemente ciascuno suggerisce le soluzioni
che conosce (non siamo ancora onnipotenti).
Nelle api del JDK 1.4 c'e' la possibilita' di stampare direttamente PDF, solo che nessuno
riesce ad usarla :-)
Ecco un esempio che ho prelevato da google.
import java.io.*;
import java.awt.*;
import java.awt.print.*;
import javax.print.*;
import javax.print.attribute.*;
import javax.print.attribute.standard.*;
public class PrintPDF
{
   public void print(String filename) throws IOException, PrintException 
   {
        // Use the pre-defined flavor for a PDF from an InputStream
        DocFlavor flavor = DocFlavor.INPUT_STREAM.PDF;
 
        // Create a set which specifies how the job is to be printed
        PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
        aset.add(MediaSizeName.ISO_A4);
        aset.add(new Copies(1));
 
        // Locate print services which can print a PDF file the manner specified
        PrintService[] pservices = PrintServiceLookup.lookupPrintServices(flavor, aset);
 
        if (pservices.length > 0)
        {
            // Create a Print Job
            DocPrintJob printJob = pservices[0].createPrintJob();
 
            // Create a Doc implementation to pass the print data 
            // Doc doc = new InputStreamDoc(filename, flavor);
            Doc doc = new SimpleDoc(new FileInputStream(filename), flavor, null);
 
            // Print the doc as specified
            printJob.print(doc, aset);
        }
        else
        {
            System.err.println("No suitable printers");
        }
    }
 
    public static void main(String[] arg)
    {
        try
        {
            new PrintPDF().print("prova.pdf");
        }
        catch(Exception ex){ ex.printStackTrace();
        }
    } 
} 
In toria dovrebbe stampare, in pratica non funge: PrintServiceLookup.lookupPrintServices()
torna sempre un array lungo 0 (nessun servizio disponibile) mentre ovviamente un file JPEG
lo stampa tranquillamente (inserendo ovviamente come DocFlavor INPUT_STREAM.JPEG).
Perchč? Semplicemente perche' nel JDK 1.4 attuale (almeno in quello che ho io) il servizio
di stampa PDF non e' implementato.
Chi ha tempo/voglia/interessa puo' cercare di capire cosa non va o come farlo funzionare e
comunicarcelo! A me interessa, ma non ho tempo ora.
Il thread relativo su google e' questo:
http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&th=5ce9d62ce20b16ab&rnum=2


 Perchè? Semplicemente perche' nel JDK 1.4 attuale (almeno in quello che ho io) il servizio



Io vado in ferie per una settimana, magari dopo :-)


 stampanti e quindi funziona
No, jpg e' un formato di compressione grafica, e non e' in generale 
interpretabile direttamente dalle stampanti. Le quali di solito riconoscono 
due formati - quello loro nativo, e, in quelle meno economiche, postscript.
Alcune stampanti (le HP, ad esempio) hanno pure linguaggi non-postscript ma  
un po' piu' ad alto livello delle sequenze di controllo native.
Ora, siccome PDF e' per molti versi simile a postscript (entrambi i 
formati sono di Adobe), puo' capitare a volte che con una semplice modifica 
all'header si possa stampare un PDF inviandolo direttamente alla stampante.
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun