You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@pdfbox.apache.org by Victor José Bento <vj...@gmail.com> on 2009/03/27 19:50:29 UTC

silentPrint method

Hi. I'm trying to create an applet to use the method silentPrint, the
applet works when I run it on NetBeans, but when I try to load it on my
webpage (yes I signed all jar files) I can just print my PDF files to a
printer that generate tiff files (Microsoft Office Document Image Writer), I
can't use the Samsung SCX-4x21 Series, that works when I run the applet on
NetBeans. Using silentPrint() or print() from my webpage I get the following
exception, someone can help me?

java.awt.print.PrinterIOException
 at org.apache.pdfbox.pdmodel.PDPage.print(PDPage.java:768)
 at sun.print.RasterPrinterJob.printPage(Unknown Source)
 at sun.print.RasterPrinterJob.print(Unknown Source)
 at sun.print.RasterPrinterJob.print(Unknown Source)
 at org.apache.pdfbox.pdmodel.PDDocument.silentPrint(PDDocument.java:886)
 at DMApplet$1.run(DMApplet.java:53)
 at DMApplet$1.run(DMApplet.java:23)
 at java.security.AccessController.doPrivileged(Native Method)
 at DMApplet.Print(DMApplet.java:22)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at sun.plugin.javascript.JSInvoke.invoke(Unknown Source)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source)
 at sun.plugin2.liveconnect.JavaClass$MethodInfo.invoke(Unknown Source)
 at sun.plugin2.liveconnect.JavaClass$MemberBundle.invoke(Unknown Source)
 at sun.plugin2.liveconnect.JavaClass.invoke0(Unknown Source)
 at sun.plugin2.liveconnect.JavaClass.invoke(Unknown Source)
 at
sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$DefaultInvocationDelegate.invoke(Unknown
Source)
 at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$3.run(Unknown
Source)
 at java.security.AccessController.doPrivileged(Native Method)
 at
sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo.doObjectOp(Unknown
Source)
 at
sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$LiveConnectWorker.run(Unknown
Source)
 at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: Couldn't get lock for PDFBox.log
 at java.util.logging.FileHandler.openFiles(Unknown Source)
 at java.util.logging.FileHandler.<init>(Unknown Source)
 at org.apache.pdfbox.exceptions.LoggingObject.logger(LoggingObject.java:38)
 at
org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:221)
 at
org.apache.pdfbox.util.PDFStreamEngine.processStream(PDFStreamEngine.java:173)
 at org.apache.pdfbox.pdfviewer.PageDrawer.drawPage(PageDrawer.java:88)
 at org.apache.pdfbox.pdmodel.PDPage.print(PDPage.java:764)
 ... 28 more
Now my method:

public static String Print(final String printerName, final String
urlDocument)
    {
        String retornoFinal = "";
        retornoFinal = (String)AccessController.doPrivileged(new
PrivilegedAction<String>()
        {
            public String run()
            {
                String retorno = "";
                boolean erro = true;
                PDDocument impressao = null;
                try
                {
                    PrintService impressoras[] =
PrintServiceLookup.lookupPrintServices(null, null);
                    PrinterJob printerJob = PrinterJob.getPrinterJob();
                    impressao = PDDocument.load(new
URL(urlDocument).openStream());
                    for(int i = 0; i < impressoras.length; i++)
                    {
                        if
(impressoras[i].getName().equalsIgnoreCase(printerName.trim()))
                        {
                            printerJob.setPrintService(impressoras[i]);
                            erro = false;
                            break;
                        }
                    }
                    if (erro)
                    {
                        retorno += "Não foi possível encontrar a impressora
" + printerName.trim();
                    }
                    else
                    {
                        impressao.silentPrint(printerJob);
                    }
                }
                catch (Exception ex)
                {
                    ex.printStackTrace();
                }
                finally
                {
                    try {
                        impressao.close();
                    } catch (IOException ex) {

Logger.getLogger(DMApplet.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
                return retorno;
            }
        });
        return retornoFinal;
    }

Thanks!

Victor José Bento
Software Developer | DIGITALMED
Mobile +55 11 7638 4171