From 7c445a360bc9a037e1ee05695fc3cc41eb3feb7b Mon Sep 17 00:00:00 2001 From: GaryO <110082506+GaryO85@users.noreply.github.com> Date: Wed, 31 Aug 2022 17:19:06 +0800 Subject: [PATCH] Update ConvertPicUtil.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 解决TIF文件转PDF时报错的问题 --- .../java/cn/keking/utils/ConvertPicUtil.java | 54 ++++++++++--------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/server/src/main/java/cn/keking/utils/ConvertPicUtil.java b/server/src/main/java/cn/keking/utils/ConvertPicUtil.java index 701c42f49..d334f3382 100644 --- a/server/src/main/java/cn/keking/utils/ConvertPicUtil.java +++ b/server/src/main/java/cn/keking/utils/ConvertPicUtil.java @@ -179,10 +179,12 @@ public static void convertJpg2Pdf(String strJpgFile, String strPdfFile) { * @return File */ public static File convertTif2Pdf(String strTifFile, String strPdfFile) { + RandomAccessFileOrArray rafa = null; + Document document = null; try { - RandomAccessFileOrArray rafa = new RandomAccessFileOrArray(strTifFile); + rafa = new RandomAccessFileOrArray(strTifFile); - Document document = new Document(); + document = new Document(); // 设置文档页边距 document.setMargins(0, 0, 0, 0); @@ -192,40 +194,42 @@ public static File convertTif2Pdf(String strTifFile, String strPdfFile) { Image image; File filePDF; - if (intPages == 1) { - String strJpg = strTifFile.substring(0, strTifFile.lastIndexOf(".")) + ".jpg"; - File fileJpg = new File(strJpg); - List listPic2Jpg = convertTif2Jpg(strTifFile, strJpg); - - if (listPic2Jpg != null && fileJpg.exists()) { - convertJpg2Pdf(strJpg, strPdfFile); - } - - } else { - for (int i = 1; i <= intPages; i++) { + for (int i = 1; i <= intPages; i++) { + try { image = TiffImage.getTiffImage(rafa, i); - // 设置页面宽高与图片一致 - Rectangle pageSize = new Rectangle(image.getScaledWidth(), image.getScaledHeight()); - document.setPageSize(pageSize); - // 图片居中 - image.setAlignment(Image.ALIGN_CENTER); - //新建一页添加图片 - document.newPage(); - document.add(image); + } catch (Throwable e) { // 部分tif文件intPages会大于1,但实际只有1页,这里做下兼容。 + logger.error(e.getMessage(), e); + continue; } - document.close(); + // 设置页面宽高与图片一致 + Rectangle pageSize = new Rectangle(image.getScaledWidth(), image.getScaledHeight()); + document.setPageSize(pageSize); + // 图片居中 + image.setAlignment(Image.ALIGN_CENTER); + //新建一页添加图片 + document.newPage(); + document.add(image); } - rafa.close(); - filePDF = new File(strPdfFile); return filePDF; } catch (Exception e) { logger.error(e.getMessage(), e); + } finally { + if (document != null) { + document.close(); + } + if (rafa != null) { + try { + rafa.close(); + } catch (IOException e) { + logger.error(e.getMessage(), e); + } + } } return null; } -} \ No newline at end of file +}