日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

PDFBox创建并打印PDF文件, 以及缩放问题的处理.

發布時間:2023/12/13 综合教程 34 生活家
生活随笔 收集整理的這篇文章主要介紹了 PDFBox创建并打印PDF文件, 以及缩放问题的处理. 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PDFBox帶了一些很方便的API, 可以直接創建 讀取 編輯 打印PDF文件.

創建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 給外部文件.

可能會出現Cannot read while there is an open stream writer

打印文件


1         // 獲取本地創建的空白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);

縮放問題


不過發現打印出來的pdf文件存在縮放問題. 顯得邊距很大, 能跑馬.

研究了下, 發現PDFPrintable可以接受是否縮放的參數.

 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

總結

以上是生活随笔為你收集整理的PDFBox创建并打印PDF文件, 以及缩放问题的处理.的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。