Avatar billede krestenbanke Nybegynder
18. oktober 2004 - 22:47 Der er 11 kommentarer og
1 løsning

Print pdf i OS X

Hejsa...

Jeg skal have printet en pdf-fil.
I Windows XP har jeg fundet frem til at det kan gøres med:

Runtime.getRuntime().exec("C:\Program Files\Adobe\Acrobat 4.0\Reader\AcroRd32.exe /p /h my.pdf");
eller
Runtime.getRuntime().exec("cmd.exe /C acrord32 /p /h" + my.pdf")

Men hvad dælen gør man når man skal udskrive på en Mac????

Håber der er een, som kan hjælpe!!
Avatar billede arne_v Ekspert
18. oktober 2004 - 22:51 #1
OS X er Unix baseret ikke ?

Så måske:

String[] cmd = { "/wherever/AcroRd32", "/p", "/h", "my.pdf" };
Runtime.getRuntime().exec(cmd);
Avatar billede arne_v Ekspert
18. oktober 2004 - 22:52 #2
Hvis du bruger Java 1.4, så har det en javax.print pakke som skulle
kunne printe PDF filer i ren Java !
Avatar billede krestenbanke Nybegynder
18. oktober 2004 - 22:57 #3
Hvis den kunne printe direkte fra Java ville det være perfekt.
Bruger 1.4.2
Har før kun brugt java.awt.print
Er der en simpel måde at gøre det fra javax.print på??
Avatar billede arne_v Ekspert
18. oktober 2004 - 23:00 #4
Avatar billede krestenbanke Nybegynder
18. oktober 2004 - 23:30 #5
Glimrende artikel!
Fandt også lidt hjælp i API'en
Har bare et problem med linien

aset.add(MediaSize.A4);

Hvorfor æder den ikke den??

_________


public class PrintPDF {


    public PrintPDF() {
   
    FileInputStream psStream;
    try {
      psStream = new FileInputStream("my.pdf");
    } catch (FileNotFoundException ffne) {
    }
    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(MediaSize.A4);
    aset.add(Sides.ONE_SIDED);
    PrintService[] services =
      PrintServiceLookup.lookupPrintServices(psInFormat, aset);
    if (services.length > 0) {
      DocPrintJob job = services[0].createPrintJob();
      try {
            job.print(myDoc, aset);
      } catch (PrintException pe) {}
    }

    }

}
Avatar billede arne_v Ekspert
18. oktober 2004 - 23:34 #6
Er det ikke MediaSize.ISO.A4 ?
Avatar billede krestenbanke Nybegynder
18. oktober 2004 - 23:43 #7
Har rettet det til MediaSize.ISO.A4 men nu får jeg en ClassCastException på den linie???
Avatar billede arne_v Ekspert
18. oktober 2004 - 23:48 #8
Ingen anelse.

Hvad sker der hvis du bare udkommenterer linien ?
Avatar billede krestenbanke Nybegynder
19. oktober 2004 - 00:27 #9
Har udkommenteret linien og nu får jeg ingen fejl...
Men den vil ikke printe... den fanger PrintException
Hvorfor pokker gør den det?

---------------
public class PrintPDF {



    public PrintPDF() {
   
    FileInputStream psStream = null;
    try {
      psStream = new FileInputStream("259.pdf");
    } catch (FileNotFoundException ffne) {
        System.out.println( "fileNotFound");
    }
    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(MediaSize.ISO.A4);
    aset.add(Sides.ONE_SIDED);
   
    PrintService service = PrintServiceLookup.lookupDefaultPrintService();
    System.out.println("service" +service.getName());
   
    DocPrintJob job = service.createPrintJob();
   
        try {
            job.print(myDoc, aset);
            System.out.println("Der printes");
          }
          catch (PrintException pe) {
            System.out.println("Der kan ikke printes");
        }

    }

}
Avatar billede krestenbanke Nybegynder
19. oktober 2004 - 00:48 #10
prøvede getMessage() på PrintException og får beskeden:
invalid flavor

Men det er vel DocFlavor.INPUT_STREAM.PDF; da det er en fil der åbnes... ikke??
Avatar billede krestenbanke Nybegynder
20. oktober 2004 - 12:30 #11
Det var dokumentet, der ikke kunne printes, da det af en eller anden grund ikke passer til udskrifts-layout'et. Prøvede på en anden printer og der virker det!
Tusind tak for hjælpen!!!
Du kaster bare et svar!
Avatar billede arne_v Ekspert
20. oktober 2004 - 12:36 #12
kommer her
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