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