2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 使用itextpdf生成pdf 设置图片和中文

使用itextpdf生成pdf 设置图片和中文

时间:2018-07-19 13:19:23

相关推荐

使用itextpdf生成pdf 设置图片和中文

依赖

<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13</version></dependency>

中文字体,我是在windows 10 上找的宋体C:\Windows\Fonts\STSONG.TTF

放在springboot的resources目录font下面

简单的工具类

package com.cgw.utils;import com.itextpdf.text.*;import com.itextpdf.text.pdf.BaseFont;import com.itextpdf.text.pdf.PdfWriter;import mons.lang3.ArrayUtils;import org.springframework.core.io.ClassPathResource;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;public class PdfUtil {/*** 将图片写入pdf** @param imageFiles* @return* @throws IOException*/public static File generatePdf(File... imageFiles) throws IOException, DocumentException {if (ArrayUtils.isEmpty(imageFiles)) {return null;}File pdfFile = FileUtil.createTempFile("tmp.pdf");ClassPathResource resource = new ClassPathResource("font/STSONG.TTF");BaseFont baseFont = BaseFont.createFont(resource.getURL().toString(), BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);Font font = new Font(baseFont);// 创建文件Document document = new Document();// 建立一个书写器PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(pdfFile));writer.setStrictImageSequence(true);// 打开文件document.open();// 添加内容Paragraph paragraph = new Paragraph("你好世界,hello world", font);paragraph.setAlignment(Element.ALIGN_CENTER);document.add(paragraph);float scalePercentage = (72 / 300f) * 100.0f;for (File imageFile : imageFiles) {// 图片Image image = Image.getInstance(imageFile.getAbsolutePath());image.scalePercent(scalePercentage, scalePercentage);image.setAlignment(Element.ALIGN_CENTER);// 将图片1添加到pdf文件中document.add(image);}// 关闭文档document.close();// 关闭书写器writer.close();return pdfFile;}}

FileUtil.java

package com.casic.dataapplication.utils;import mons.io.FileUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.*;import java.nio.file.Path;import java.nio.file.Paths;import java.util.UUID;public class FileUtil {private static Logger logger = LoggerFactory.getLogger(FileUtil.class);private static final String TMP_FILE_NAME = "file.tmp"public static Path getTempPath() {String realPath = System.getProperty("java.io.tmpdir");String id = UUID.randomUUID().toString().replace("-", "");Path path = Paths.get(realPath, id);try {FileUtils.forceMkdir(path.toFile());} catch (IOException e) {logger.error("创建临时目录异常:{}", e);throw new RuntimeException(e);}return path;}/*** 创建一个临时文件** @param filename* @return*/public static File createTempFile(String filename) {return getTempPath().resolve(filename).toFile();}/*** 创建一个临时文件** @return*/public static File createTempFile() {return getTempPath().resolve(TMP_FILE_NAME).toFile();}/*** 删除一个文件*/public static boolean deleteFile(File file) {logger.debug("删除文件:{}", file.getAbsolutePath());return FileUtils.deleteQuietly(file);}/*** 删除一个文件同时删除父目录** @return true删除成功,false删除失败*/public static boolean deleteFileAndParentPath(File file) {logger.debug("删除文件和父目录:{}", file.getAbsolutePath());return FileUtils.deleteQuietly(file) && FileUtils.deleteQuietly(file.getParentFile());}}

调用时传的图片资源

效果图

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。