一、java原生方式打印PDF文件

正反面都打印,还未研究出只打印单面的方法,待解决

public static void printFile(String path) throws Exception {
File file = new File(path);
File[] fies=file.listFiles();
for(File f:fies){
System.out.println("file "+f.getName());
String fileExt=f.getName().substring(f.getName().indexOf(".")+1,f.getName().length());
if("pdf".equalsIgnoreCase(fileExt)){
String filepath=path+File.separator+f.getName();
File pdfFile=new File(filepath);
//构建打印请求属性集
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
//设置打印格式,因为未确定文件类型,这里选择AUTOSENSE
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
//查找所有的可用打印服务
PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);
//定位默认的打印服务
PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
//显示打印对话框
//PrintService service = ServiceUI.printDialog(null, 200, 200, printService, defaultService, flavor, pras);
if(defaultService!=null){
DocPrintJob job = defaultService.createPrintJob(); //创建打印作业
FileInputStream fis = new FileInputStream(pdfFile); //构造待打印的文件流
DocAttributeSet das = new HashDocAttributeSet();
Doc doc = new SimpleDoc(fis, flavor, das); //建立打印文件格式
job.print(doc, pras); //进行文件的打印
}
f.delete();
}
}
} public static void main(String[] args) {
//System.out.println("Value:"+test());
//打印pdf的一个方法,首先安装下PDFCreator软件 try {
printFile("D:"+File.separator);
} catch (Exception e) {
System.out.println("打印文件异常:"+e.getMessage());
e.printStackTrace();
} }

二、使用pdfBox方式此问题解决

1.maven依赖

        <dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.3</version>
</dependency>

2.代码(有打印预览)

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.*;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.PageRanges;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.printing.PDFPageable;
import org.apache.pdfbox.printing.PDFPrintable; public final class PrintUtils
{
public static void main(String[] args) {
String fileURL = "http";
String fileName = ".pdf文件";
downloadFile(fileURL,fileName);
printWithDialog(getFilePath(fileName));
} public static void printWithDialog(String filePath) {
try {
PDDocument document = PDDocument.load(new File(filePath));
PrinterJob job = PrinterJob.getPrinterJob();
job.setPageable(new PDFPageable(document));
if (job.printDialog()){
job.print();
}
} catch (IOException e) {
e.printStackTrace();
} catch (PrinterException e) {
e.printStackTrace();
}
} public static String getFilePath(String fileName){
File path = new File(System.getProperty("user.dir").concat("/downFile"));
if (!path.exists() && !path.isDirectory()) {
path.mkdir();
}
String filePath = path + "/" + fileName;
return filePath;
} public static boolean downloadFile(String fileURL,String fileName) {
try {
URL url = new URL(fileURL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
DataInputStream in = new DataInputStream(connection.getInputStream());
DataOutputStream out = new DataOutputStream(new FileOutputStream(getFilePath(fileName)));
byte[] buffer = new byte[];
int count = ;
while ((count = in.read(buffer)) > ) {
out.write(buffer, , count);
}
out.close();
in.close();
return true;
} catch (Exception e) {
return false;
}
} }

最新文章

  1. cocos多点触控实效注意事项
  2. django数据库时间存储格式问题
  3. vs c# int &amp; int32
  4. bzoj2515 Room
  5. iOS touch事件单击双击区分响应
  6. Maven聚合与继承
  7. 2015GitWebRTC编译实录
  8. 黄聪:HtmlAgilityPack,C#实用的HTML解析类简介
  9. RAP开发入门-搭建RAP开发环境(一)
  10. OD: Universal Shellcode
  11. 二道shell面试题
  12. 将网站固定到开始菜单,自定义图标、颜色和Windows推送通知
  13. 描述符和property内建函数
  14. PHP文件相关函数试题
  15. 可视化之Earth NullSchool
  16. iOS OC应用异常捕获,崩溃退出前返回信息给后台
  17. Docker JDK镜像
  18. 【测试工程师面试】在BOSS直聘上和面试官的一问一答
  19. 8-Images
  20. Unity容器的简单AOP与DI的应用Demo(基于asp.net mvc框架)

热门文章

  1. 我和Python的Py交易》》》》》》函数
  2. Caliburn.Micro 项目文档(翻译):Screens, Conductors and Composition
  3. 北京Uber优步司机奖励政策(4月3日)
  4. CentOS 7.2使用源码包编译安装MySQL 5.7.22及一些操作
  5. 利尔达NB-IOT模块烧写固件的步骤
  6. elasticsearch安装中文分词器
  7. Unity Container中的几种注册方式与示例
  8. Visual Studio 智能提示功能消失解决办法
  9. hdu1052Tian Ji -- The Horse Racing(贪心,细节多)
  10. Appium最新的服务器初始化参数(Capability)【截止11月29日,后续最新的可以看github】