2023年8月3日发(作者:)
关于openOffice对于word的转换及遇到的问题⼀:需求详情: 公司需要存储合同⽂件,⽤户上传word⽂档的合同,通过openOffice去把word转换为pdf、再把pdf转换为图⽚格式,并分别存储。因为openOffice的转换需要耗费挺⼤的内存,所以设计为task任务,凌晨⾃动转换。 记录本次需求完成的时候遇到的问题。
⼆:过程 1:本地环境编码(windows) 第⼀步:因为是本地环境的编码⽽且是Windows环境,所以从安装openOffice开始,到启动服务并没有遇到难题。 第⼆步:转换所需要的⼯具包; 1
12 13
18 19
24 25
30 31
8 OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100); 9 try{ 10 t(); 11 DocumentConverter converter =
new OpenOfficeDocumentConverter(connection); 12 t(inputFile, outputFile); 13 }catch(ConnectException cex){ 14
tackTrace(); 15 }finally{ 16 if(connection!=null){ 17 nect(); 18 connection = null; 19 } 20 } 21 } 22 } 1 /** 2 * @author GH 3 * 参数1:要装换的pdf位置 4 * 参数2:转换后的图⽚存放位置 5 * 参数3:中间要拼接的名字 6 * return:转换后的img名字集合 7 */
8 public class PdfToImage {//pdf转img 9 public static List
list = new ArrayList<>(); 11 String imagePath; 12 File file = new File(srcFile); 13 try { 14 File f = new File(contractFromSrc); 15 if(!()){ 16
(); 17 } 18 PDDocument doc = (file); 19 PDFRenderer renderer = new PDFRenderer(doc); 20 int pageCount =
berOfPages(); 21 for(int i=0; i ImageWithDPI(i, 296); 24 // ⽅式2,第⼆个参数是设置缩放⽐(即像素) 25 BufferedImage image = Image(i, 2f); //第⼆个参数越⼤⽣成图⽚分辨率越⾼,转换时间也就越长 26 imagePath = contractFromSrc+name+"-"+i +".jpg"; 27 (image, "PNG", new File(imagePath)); 28 (name+"-"+i +".jpg"); 29 } 30 (); 31 } catch (IOException e) { 32 tackTrace(); 33 } 34 return list; 35 } 36 } 第四步:编码 ⾸先从数据库读取没有转换过的集合,循环下载oss对象存储⽂件到指定临时⽂件夹。 通过⼯具类转换下载的word为pdf,录⼊数据pdf记录,上传oss对象pdf图⽚。 通过⼯具类转换得到的pdf图⽚,录⼊数据路图⽚记录,上传转换得到的img图⽚。 try catch捕捉异常,有异常就回滚数据库,删除oss对象上传的⽂件。 修改word的转换状态为已转换。 问题2:因为到最后测试环境和⽣产环境都是Linux系统的,因为涉及到⽂件的操作,但是Linux和Windows的⽂件路径是不⼀样的,例如:Windows⽂件路径为(C:)Linux则为(/tmp/) 因此 采⽤这种⽅式1 public final static String Convert_Tmp_Url="C:"+tor+"temp"+tor+"contractToImg"+tor;//进⾏word——img转换的时候的暂时存放路径 window 2 public final static String Convert_Tmp_Url2=tor+"tmp"+tor+"contractToImg"+tor;//进⾏word——img转换的时候的暂时存放路径 linux tor 与系统有关的默认名称分隔符,为了⽅便,它被表⽰为⼀个字符串 在Linux此字段的值为 '/' Windows为'' 第五步:本地测试,没有问题。 2:测试环境测试(windows) 问题3:在Linux环境下word转换word中⽂出现乱码 空⽩,导致的原因是Linux缺少中⽂字体编码。 解决⽅法: 步骤1:创建路径。 在centos的/usr/java/jdk1.8.0_91/jre/lib/fonts下新建路径:fallback。 步骤2:上传字体。 将字体: ⿊体、 宋体(windows下通过everything找下)上传⾄/usr/java/jdk1.8.0_91/jre/lib/fonts/fallback路径下。 步骤3:查看系统字体⽂件路径。 查看⽅案:1. [root@80ec6 fallback]# cat /etc/fonts/2. 3.
欢迎⼤家⼀起说出⾃⼰的想法。
2023年8月3日发(作者:)
关于openOffice对于word的转换及遇到的问题⼀:需求详情: 公司需要存储合同⽂件,⽤户上传word⽂档的合同,通过openOffice去把word转换为pdf、再把pdf转换为图⽚格式,并分别存储。因为openOffice的转换需要耗费挺⼤的内存,所以设计为task任务,凌晨⾃动转换。 记录本次需求完成的时候遇到的问题。
⼆:过程 1:本地环境编码(windows) 第⼀步:因为是本地环境的编码⽽且是Windows环境,所以从安装openOffice开始,到启动服务并没有遇到难题。 第⼆步:转换所需要的⼯具包; 1
12 13
18 19
24 25
30 31
8 OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100); 9 try{ 10 t(); 11 DocumentConverter converter =
new OpenOfficeDocumentConverter(connection); 12 t(inputFile, outputFile); 13 }catch(ConnectException cex){ 14
tackTrace(); 15 }finally{ 16 if(connection!=null){ 17 nect(); 18 connection = null; 19 } 20 } 21 } 22 } 1 /** 2 * @author GH 3 * 参数1:要装换的pdf位置 4 * 参数2:转换后的图⽚存放位置 5 * 参数3:中间要拼接的名字 6 * return:转换后的img名字集合 7 */
8 public class PdfToImage {//pdf转img 9 public static List
list = new ArrayList<>(); 11 String imagePath; 12 File file = new File(srcFile); 13 try { 14 File f = new File(contractFromSrc); 15 if(!()){ 16
(); 17 } 18 PDDocument doc = (file); 19 PDFRenderer renderer = new PDFRenderer(doc); 20 int pageCount =
berOfPages(); 21 for(int i=0; i ImageWithDPI(i, 296); 24 // ⽅式2,第⼆个参数是设置缩放⽐(即像素) 25 BufferedImage image = Image(i, 2f); //第⼆个参数越⼤⽣成图⽚分辨率越⾼,转换时间也就越长 26 imagePath = contractFromSrc+name+"-"+i +".jpg"; 27 (image, "PNG", new File(imagePath)); 28 (name+"-"+i +".jpg"); 29 } 30 (); 31 } catch (IOException e) { 32 tackTrace(); 33 } 34 return list; 35 } 36 } 第四步:编码 ⾸先从数据库读取没有转换过的集合,循环下载oss对象存储⽂件到指定临时⽂件夹。 通过⼯具类转换下载的word为pdf,录⼊数据pdf记录,上传oss对象pdf图⽚。 通过⼯具类转换得到的pdf图⽚,录⼊数据路图⽚记录,上传转换得到的img图⽚。 try catch捕捉异常,有异常就回滚数据库,删除oss对象上传的⽂件。 修改word的转换状态为已转换。 问题2:因为到最后测试环境和⽣产环境都是Linux系统的,因为涉及到⽂件的操作,但是Linux和Windows的⽂件路径是不⼀样的,例如:Windows⽂件路径为(C:)Linux则为(/tmp/) 因此 采⽤这种⽅式1 public final static String Convert_Tmp_Url="C:"+tor+"temp"+tor+"contractToImg"+tor;//进⾏word——img转换的时候的暂时存放路径 window 2 public final static String Convert_Tmp_Url2=tor+"tmp"+tor+"contractToImg"+tor;//进⾏word——img转换的时候的暂时存放路径 linux tor 与系统有关的默认名称分隔符,为了⽅便,它被表⽰为⼀个字符串 在Linux此字段的值为 '/' Windows为'' 第五步:本地测试,没有问题。 2:测试环境测试(windows) 问题3:在Linux环境下word转换word中⽂出现乱码 空⽩,导致的原因是Linux缺少中⽂字体编码。 解决⽅法: 步骤1:创建路径。 在centos的/usr/java/jdk1.8.0_91/jre/lib/fonts下新建路径:fallback。 步骤2:上传字体。 将字体: ⿊体、 宋体(windows下通过everything找下)上传⾄/usr/java/jdk1.8.0_91/jre/lib/fonts/fallback路径下。 步骤3:查看系统字体⽂件路径。 查看⽅案:1. [root@80ec6 fallback]# cat /etc/fonts/2. 3.
欢迎⼤家⼀起说出⾃⼰的想法。
发布评论