PDFBox创建并打印PDF文件, 以及缩放问题的处理.
生活随笔
收集整理的這篇文章主要介紹了
PDFBox创建并打印PDF文件, 以及缩放问题的处理.
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
PDFBox帶了一些很方便的API, 可以直接創(chuàng)建 讀取 編輯 打印PDF文件.
創(chuàng)建PDF文件
1 public static byte[] createHelloPDF() {
2 ByteArrayOutputStream out = new ByteArrayOutputStream();
3 try {
4 PDDocument doc = new PDDocument();
5 PDPage page = new PDPage();
6 doc.addPage(page);
7 PDFont font = PDType1Font.HELVETICA_BOLD;
8 PDPageContentStream content = new PDPageContentStream(doc, page);
9 content.beginText();
10 content.setFont(font, 20);
11 content.moveTextPositionByAmount(250, 700);
12 content.drawString("Hello Print!");
13
14 content.endText();
15 content.close();
16 doc.save(out);
17 doc.close();
18 } catch (Exception e) {
19 e.printStackTrace();
20 }
21 return out.toByteArray();
22 }
這邊如果不把他save到byte[]里, 而是直接close, 返回PDDocument 給外部文件.
可能會出現(xiàn)Cannot read while there is an open stream writer
打印文件
1 // 獲取本地創(chuàng)建的空白PDF文件 2 PDDocument document = PDDocument.load(createHelloPDF()); 3 // 加載成打印文件 4 PDFPrintable printable = new PDFPrintable(document); 5 PrinterJob job = PrinterJob.getPrinterJob(); 6 job.setPrintable(printable); 7 job.print();
如需要打印自定義紙張, 參加另外一篇博客 使用PDFBox打印自定義紙張的PDF
如果想要讀取本地pdf文件, 那就更簡單了, 直接
1 InputStream in = new FileInputStream("d:\cc.pdf");
2 PDDocument document = PDDocument.load(in);
縮放問題
不過發(fā)現(xiàn)打印出來的pdf文件存在縮放問題. 顯得邊距很大, 能跑馬.
研究了下, 發(fā)現(xiàn)PDFPrintable可以接受是否縮放的參數(shù).
1 public enum Scaling {
2 // 實際大小
3 ACTUAL_SIZE,
4 // 縮小
5 SHRINK_TO_FIT,
6 // 拉伸
7 STRETCH_TO_FIT,
8 // 適應
9 SCALE_TO_FIT;
10
11 private Scaling() {
12 }
13 }
因此只要在new PDFPrintable(document), 傳入Scaling, 就不會縮放了.
Scaling.ACTUAL_SIZE
總結(jié)
以上是生活随笔為你收集整理的PDFBox创建并打印PDF文件, 以及缩放问题的处理.的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【LESS系列】一些常用的Mixins
- 下一篇: SVN ignores