Applet kan ikke skrive ut selv om java politikken har blitt satt til å tillate utskrift

stemmer
0

Jeg har en web-applikasjon ved hjelp av PHP. En av funksjonaliteten er å stille ut en kvittering til to eller flere skrivere direkte uten å spørre utskriftsdialogboksen. Jeg har kodet applet som nedenfor, og det skrives direkte til en skriver som er angitt i koden.

import javax.swing.JApplet;
import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import javax.print.PrintService;
import com.sun.pdfview.PDFFile;
import javax.swing.JOptionPane;
import com.sun.pdfview.PDFPage;
import com.sun.pdfview.PDFRenderer;

public class PDFApplet extends JApplet {
    private PrinterJob pjob = null;
    //Called when this applet is loaded into the browser.
    public void init() {
        try { 
            FileInputStream fis = new FileInputStream(C:\\app\\receipt.pdf);
            byte[] pdfContent = new byte[fis.available()];
            fis.read(pdfContent, 0, fis.available());
            initialize(pdfContent, Test Print PDF);

            //PDFApplet printPDFFile = new PDFApplet(fis, Test Print PDF);
            print();
        } catch (Exception e) {}
    }

    private void initialize(byte[] pdfContent, String jobName) throws IOException, PrinterException {
        ByteBuffer bb = ByteBuffer.wrap(pdfContent);
        // Create PDF Print Page
        PDFFile pdfFile = new PDFFile(bb);
        PDFPrintPage pages = new PDFPrintPage(pdfFile);

        // Create Print Job
        pjob = PrinterJob.getPrinterJob();
        PageFormat pf = PrinterJob.getPrinterJob().defaultPage();
        pjob.setJobName(jobName);
        Book book = new Book();
        book.append(pages, pf, pdfFile.getNumPages());
        pjob.setPageable(book);

        // to remove margins
        Paper paper = new Paper();
        paper.setImageableArea(0, 0, paper.getWidth(), paper.getHeight());
        pf.setPaper(paper);
    }

    public void print() throws PrinterException {
        String argPrintServiceName = HP LaserJet Professional P1102;

        // Send print job to default printer
        PrintService[] printServices = PrinterJob.lookupPrintServices();
        int i;
        for (i = 0; i < printServices.length; i++) {
                if (printServices[i].getName().equalsIgnoreCase(argPrintServiceName)) {
                pjob.setPrintService(printServices[i]);
                break;
            }
        }
        if (i == printServices.length) {
            //throw new PrinterException(Invalid print service name:  + argPrintServiceName);
            JOptionPane.showMessageDialog(this, Cannot print to  + argPrintServiceName);
        }

        pjob.print();
    }    
}

Men da jeg legge det i en html-side, så applet ikke ut lenger. Jeg har lagt til de nødvendige utskriftstillatelser til java.policy men det fortsatt ikke print.How kan jeg løse dette siden det har tatt meg en uke allerede.

Takk, Sam

Publisert på 06/03/2012 klokken 12:55
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Digitalt signere appleten ved hjelp av et sertifikat godkjent av en betrodd myndighet (f.eks Verisign). Det vil be brukeren, kan de velge 'alltid stole på', og deretter applet vil være i stand til å gjøre utskrift på eget initiativ og uten ytterligere brukermedvirkning (forutsatt at koden er ikke påberope en utskrifts dialog).

Svarte 06/03/2012 kl. 13:30
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more