Avatar billede obix Nybegynder
20. januar 2005 - 16:17 Der er 11 kommentarer

Print fra en java aplikation

Hej Eksperter.

Jeg skal lave et program der løber et par tabeller igennem og ud fra det laver en raport. Den skal jeg have printet til en netværks printer.

Jeg ved hvordan jeg laver en pdf fil så det ser godt ud og får den skrevet ud på disken. Men hvis jeg nu har en pdf fil kan jeg så printe den direkte på en printer uden at brugeren skal se den i pdf viewer først? giv meget gerne et kode eksempel.
Mvh. Obix.
Avatar billede mostcrazy Nybegynder
20. januar 2005 - 18:11 #1
kigger lige med her
Avatar billede di8leva Nybegynder
21. januar 2005 - 08:47 #2
kigger
Avatar billede mikkelbm Nybegynder
21. januar 2005 - 11:24 #3
Det ser ud til at de her på siden:

http://www.activetree.com/

har en JPrint som kan gøre det du efterspørger.
Avatar billede mercutio Nybegynder
21. januar 2005 - 12:30 #4
Hmmm men JPrint koster 2000$.... håber ikke det er min eneste mulighed. De har jo lavet det selv.. mon ikke vi kan det også så.
Avatar billede mikkelbm Nybegynder
21. januar 2005 - 12:33 #5
Hov - havde ikke set det var så dyrt...

Fandt dette her også: http://www.cs.wisc.edu/~ghost/gsview/get41.htm

Ellers kan du måske finde noget brugbart her:
http://onesearch.sun.com/search/onesearch/index.jsp?qt=print+pdf&subCat=&site=dev&qp=&chooseCat=javaall&col=developer-forums

Det skal lige siges, at jeg ikke selv har prøvet at udskrive pdf dokumenter via Java.
Avatar billede snoop_one Nybegynder
23. januar 2005 - 23:38 #6
Kig i understående link. Der er et eksempel (Using the API) hvor der printes en eps fil ud... dog kan du nemt ændre dens flavor til pdf ;-)

http://java.sun.com/j2se/1.4.2/docs/api/javax/print/package-summary.html
Avatar billede snoop_one Nybegynder
23. januar 2005 - 23:50 #7
Hvis du leder efter en pdf generator så er iText faktisk ok...
http://www.lowagie.com/iText/

Under "iText by Example" er der en masse eksempler på hvordan det kan bruges.
Avatar billede obix Nybegynder
24. januar 2005 - 08:47 #8
snoop_one http://java.sun.com/j2se/1.4.2/docs/api/javax/print/package-summary.html det er lige hvad jeg søger. Men du siger man nemt kan ændre flavor til PDF.... hvordan det? jeg var inde at kigge på flavor klassen og der er ingen konstant der passer til pdf.
Avatar billede snoop_one Nybegynder
24. januar 2005 - 09:51 #9
Linien:
  DocFlavor psInFormat = DocFlavor.INPUT_STREAM.POSTSCRIPT;
kan ifl. javadoc'en ændres til
  DocFlavor pdfInFormat = DocFlavor.INPUT_STREAM.PDF;

Det står inde i:
http://java.sun.com/j2se/1.4.2/docs/api/javax/print/DocFlavor.INPUT_STREAM.html
Avatar billede obix Nybegynder
25. januar 2005 - 12:42 #10
Jeg har prøvet med følgende:

FileInputStream psStream;
        try {
            psStream = new FileInputStream("d:\\pdf.pdf");
            if (psStream == null) {
            return;
        }
 
 

        DocFlavor psInFormat = DocFlavor.INPUT_STREAM.PDF;
        Doc myDoc = new SimpleDoc(psStream, psInFormat, null); 
        PrintRequestAttributeSet aset =
          new HashPrintRequestAttributeSet();
        aset.add(new Copies(1));
        aset.add(MediaSizeName.ISO_A4);
        aset.add(Sides.DUPLEX);
        PrintService[] services =
          PrintServiceLookup.lookupPrintServices(psInFormat, aset);
        if (services.length > 0) {
            DocPrintJob job = services[0].createPrintJob();
            try {
          job.print(myDoc, aset);
            } catch (PrintException pe) {}
        }
        }
        catch (FileNotFoundException ffne) {
          }

Men når den kommer til
if (services.length > 0) {
så returnerer if sætningen false og jeg får derfor ikke udskrevet noget. Èr det fordi jeg ikke får specificeret min printer eller hvad gør jeg forkert?
Avatar billede snoop_one Nybegynder
25. januar 2005 - 16:25 #11
prøv noget a la...

PrintService service = ServiceUI.printDialog(null, 50, 50, services, null, psInFormat, aset);
if(service != null) {
  System.out.println( "test " + service);
  DocPrintJob job = service.createPrintJob();
  try {
    job.print(myDoc, aset);
    System.out.println( "test2 " + job.getPrintService);
  } catch .....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester