2015-10-20 111 views
1

我想从java打印pdf文件。我尝试了很多方法来打印PDF但失败。最后,我在stackoverflow中找到了一个解决方案。但我尝试运行下面的代码,但编译代码时出现问题使用PDFBox jar文件打印PDF文件

PrinterJob job = PrinterJob.getPrinterJob(); 
PageFormat pf = job.defaultPage(); 
Paper paper = new Paper(); 
paper.setSize(612.0, 832.0); 
double margin = 10; 
paper.setImageableArea(margin, margin, paper.getWidth() - margin, paper.getHeight() - margin); 
pf.setPaper(paper); 
pf.setOrientation(PageFormat.LANDSCAPE); 

// PDFBox 

PDDocument doc=PDDocument.load(file); 
job.setPageable(new PDPageable(doc, job)); 

job.setJobName("funciona?"); 

if(job.printDialog()){ 
    job.print(); 
} 

当我运行代码时发生了一些问题。我在下面给出错误信息

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 
    at org.apache.pdfbox.pdmodel.PDDocument.<clinit>(PDDocument.java:75) 
    at Main.Create_Report_Card$4.actionPerformed(Create_Report_Card.java:419) 
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) 
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) 
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) 
    at java.awt.Component.processMouseEvent(Unknown Source) 
    at javax.swing.JComponent.processMouseEvent(Unknown Source) 
    at java.awt.Component.processEvent(Unknown Source) 
    at java.awt.Container.processEvent(Unknown Source) 
    at java.awt.Component.dispatchEventImpl(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Window.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
    at java.awt.EventQueue.access$400(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
    at java.awt.EventQueue$4.run(Unknown Source) 
    at java.awt.EventQueue$4.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
    at java.awt.EventQueue.dispatchEvent(Unknown Source) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.run(Unknown Source) 
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    ... 38 more 

回答

1

将commons-logging jar添加到您的项目中。如果您正在使用mavenized项目,那么在pom.xml中添加它的依赖项。

如果您必须手动添加commons-logging jar,请确保它在classpath中可用。

对于maven依赖项,请在pom.xml中添加以下artifactId。

<dependency> 
    <groupId>commons-logging</groupId> 
    <artifactId>commons-logging</artifactId> 
    <version>1.1.1</version> 
</dependency> 

您也可以搜索或从以下网址最新版本下载JAR:

http://repo1.maven.org/maven2/commons-logging/commons-logging/

+0

我加入阿帕奇共享记录罐子到我的项目。但是这个问题没有解决。所以请告诉我我能做些什么。 –

+0

.classpath文件中是否存在jar条目? –

+0

是的,我在我的项目中添加一个sourche文件夹,然后把jar文件夹放到classpath中,然后在类路径中添加这个文件 –