使用IText进行创建

代码

package cn.xx.xx.util;import com.itextpdf.text.*;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.parser.PdfReaderContentParser;
import com.itextpdf.text.pdf.parser.SimpleTextExtractionStrategy;
import com.itextpdf.text.pdf.parser.TextExtractionStrategy;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;public class PDFUtil {/*** 创建PDF文件*/public static void createPdf(){// 获取项目jar包启动目录String filePath= this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath();try {filePath= java.net.URLDecoder.decode(filePath, "UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}if(System.getProperty("os.name").contains("dows")){filePath= filePath.substring(1,filePath.length());}if(filePath.contains("jar")){filePath= filePath.substring(0,filePath.lastIndexOf("."));filePath= filePath.substring(0,filePath.lastIndexOf("/"));}filePath= filePath.replace("target/classes/", "");filePath= filePath.replaceFirst("ile:/", "");// 此时的outPath就是项目jar包所在目录// 下面拼接要存放PDF的目录filePath= filePath+"/PDF/";File filePath = new File(filePath);// 目录不存在,创建if (!filePath.exists()){filePath.mkdirs();}String year = "2022";String title= "请假单";String userName= "张三";String idCard= "1234567890";String courseDate= "2022-02-02";String title = year+"年”"+title+"“请假单";String content = userName+"身份证号码:"+vo.getIdCard()+",不能参加"+courseDate()+"的"+title()+"课程,特此请假,望批准。";// 创建文件及相关目录File file = new File(filePath);if (!file.exists()) {try {file.createNewFile();} catch (IOException e) {e.printStackTrace();}}Document document = new Document();try {// 创建PdfWriter对象PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filePath));// 设置每行的间距writer.setInitialLeading(30);// 设置文档属性// 作者document.addAuthor("zxl");// 创建日期document.addCreationDate();// 创建关键字document.addKeywords("请假单");// 创建生产商,自动使用iTextdocument.addProducer();// 创建程序document.addCreator("www.ydc51.com");// 标题document.addTitle("请假单");// 主题document.addSubject("请假单");// 打开文档document.open();// 方式三:使用iTextAsian.jar中的字体BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);Font fontTitle = new Font(baseFont);// 设置字体大小fontTitle.setSize(35);// 设置字体颜色fontTitle.setColor(new BaseColor(0, 0, 0));// 设置类型,加粗fontTitle.setStyle(Font.BOLD);// 设置类型,倾斜fontTitle.setStyle(Font.ITALIC);// 设置类型,下划线fontTitle.setStyle(Font.UNDERLINE);// 设置类型,可组合,倾斜+删除线fontTitle.setStyle(Font.ITALIC | Font.STRIKETHRU);// 设置类型,为正常fontTitle.setStyle(Font.NORMAL);Font font = new Font(baseFont);// 设置字体大小font.setSize(25);// 设置字体颜色font.setColor(new BaseColor(0, 0, 0));// 设置类型,加粗font.setStyle(Font.BOLD);// 设置类型,倾斜font.setStyle(Font.ITALIC);// 设置类型,下划线font.setStyle(Font.UNDERLINE);// 设置类型,可组合,倾斜+删除线font.setStyle(Font.ITALIC | Font.STRIKETHRU);// 设置类型,为正常font.setStyle(Font.NORMAL);// 块/*Chunk chunk = new Chunk("下标");// 设置字体,字体定宽chunk.setFont(new Font(baseFont, 4));// 设置背景颜色chunk.setBackground(new BaseColor(0xFF, 0xFF, 0x00));// 设置上表下标chunk.setTextRise(-3f);*/Paragraph paragraphTitle = new Paragraph(title, fontTitle);paragraphTitle.setKeepTogether(true);paragraphTitle.setAlignment(Element.ALIGN_CENTER);// 标题居中document.add(paragraphTitle);Paragraph paragraph = new Paragraph(content, font);// 试图将一个段落放在同一页中,该方法并不是始终有效paragraph.setKeepTogether(true);//paragraph.add(chunk);document.add(paragraph);Paragraph paragraph2 = new Paragraph("                                  跟班老师签字:", font);// 试图将一个段落放在同一页中,该方法并不是始终有效paragraph2.setKeepTogether(true);document.add(paragraph2);Paragraph paragraph3 = new Paragraph("                                  请假日期:", font);// 试图将一个段落放在同一页中,该方法并不是始终有效paragraph3.setKeepTogether(true);document.add(paragraph3);// low levelPdfContentByte cb = writer.getDirectContent();cb.fill();cb.sanityCheck();} catch (Exception e) {} finally {// 关闭文档document.close();}}/*** 读取PDF* @param fileName PDF地址* @return* @throws IOException*/public static String getPdfFileText(String fileName) {StringBuffer buff = new StringBuffer();try {PdfReader reader = new PdfReader(fileName);PdfReaderContentParser parser = new PdfReaderContentParser(reader);TextExtractionStrategy strategy;for (int i = 1; i <= reader.getNumberOfPages(); i++) {strategy = parser.processContent(i, new SimpleTextExtractionStrategy());buff.append(strategy.getResultantText());}} catch (Exception e){System.out.println("错误!");}return buff.toString();}
}

Java生成PDF文件保存到本地磁盘相关推荐

  1. java用itextPDF生成PDF文件保存至本地并上传至ftp服务器

    标题java用itextPDF生成PDF文件保存至本地并上传至ftp服务器 所需jar :itext-asian-5.2.0.jar,itextpdf-5.5.5.jar,commons-net-3. ...

  2. 使用java生成PDF并保存到本地服务器中

    使用java生成PDF并保存到本地服务器中 1.导入maven <!-- PDF工具包 --><dependency><groupId>com.itextpdf&l ...

  3. iText5实现Java生成PDF文件完整版,二维码

    iText5实现Java生成PDF文件完整版 vue 项目中分别使用 vue-pdf 插件和内嵌 iframe 实现 PDF 文件预览,缩放,旋转,下载,保存等功能 ? Vue打印文件(v-print ...

  4. # Java 生成pdf文件

    Java 生成pdf文件 引入依赖 <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --> <depend ...

  5. PHP ajax 远程下载PDF文件保存在本地服务器

    在一些时候我们想ajax方式来保存一些PDF文件,尤其是它放在远程服务器上,并且是保存在我们自己的服务器上存储,这个时候我们需要写一段程序来帮助我们完成这个工作,本文介绍了PHP 远程下载PDF文件保 ...

  6. Java生成PDF文件_自用

    Java生成PDF文件 一.前言 前几天,做ASN条码收货模块,需要实现打印下载收货报表,经一番查找,选定iText--用于生成PDF文档的一个Java类库.废话不多说,进入正题. 二.iText简介 ...

  7. html长图转换成pdf,iOS将HTML页面转换成PDF文件保存到本地并分享传输文件

    第一次修改:2017.05.26 修改内容:之前的方法在转化带有图片的html页面时会出现图片缺失问题,由于之前我需要转换的html不包含图片,所以没有发现这一问题,现在增加一个直接将webView转 ...

  8. Java生成PDF文件(Itext篇)

    在企业的信息系统中,报表处理一直占比较重要的作用,iText是一种生成PDF报表的Java组件.通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超链接显示或下载得到生成的报表,这样 ...

  9. [itext]Java生成PDF文件

    一.前言 最近在做也导出试卷的功能,刚开始是导出为doc,可是导出来格式都有变化,最后说直接将word转为pdf,可是各种不稳定,各种报错.最后想到直接将文件写入pdf(参考:http://www.c ...

最新文章

  1. ONES 万事联合创始人 amp; CTO 冯斌:企业服务产品的探索实践
  2. 《Two Dozen Short Lessons in Haskell》学习(十三)迭代及重复的常规模式
  3. python语言自学-【经验分享】自学Python的学习顺序!附学习资料
  4. vue 封装组件供全局使用_vue 封装组件的基本操作
  5. 致Go学习者, 该跟大佬学习做项目了
  6. kafka消息消费原理演示
  7. 利用SMW01分析BDOC错误
  8. html文字竖直书写,css 文字竖直居中的写法和图片垂直居中代码(图文)
  9. 蓝昭餐饮管理系统服务器无法连接,服务器安全加固操作指南.docx
  10. python中random库中shuffle_[宜配屋]听图阁 - 详解Python中打乱列表顺序random.shuffle()的使用方法...
  11. html中div居中
  12. [转] 基于 Apache Mahout 构建社会化推荐引擎
  13. 多屏互动电脑版_手机、电脑屏幕太小怎么办?这4招秒变大屏
  14. 软件用户手册编写指南(GB8567一88/GB8567一2006)
  15. 如何用计算机录制视频教程,电脑怎么利用软件录制视频教程
  16. css样式怎么插入背景图片,css样式怎么插入背景图片?
  17. 国王游戏【贪心算法】
  18. 蘑菇街交易平台 数据库架构演进历程
  19. 六面体单元matlab后处理,《有限元基础教程》_【MATLAB算例】基于节点六面体单元的空间块体分析(HexahedralDNode).doc...
  20. php商城伪静态,友价商城nginx伪静态源码规则

热门文章

  1. 耿丹CS16-2班第六次作业汇总
  2. POI解决读入Excel内存溢出
  3. Flume简介及配置
  4. 智能秤方案设计——蓝牙体脂秤PCBA软硬件端功能说明
  5. Eltra EL40A1024Z5/28P6X6PR2.004C
  6. python编程<十五>
  7. 点线面平面设计的概念是什么,分享点线结合构成设计图
  8. 在django的form表单及ajax提交的数据中添加认证的csrfmiddlewaretoken
  9. 我的小游戏上线海外AppStore完整流程心得
  10. (译)三维空间中的几种坐标系