kkfileView(十三)关键代码分析(12)
2021SC@SDUSC
(一)OfficeToPdf类
office——>Pdf工具类
核心方法:文件类型转换
public static void converterFile(File inputFile, String outputFilePath_end, OfficeDocumentConverter converter) { File outputFile = new File(outputFilePath_end); if (!outputFile.getParentFile().exists()) { outputFile.getParentFile().mkdirs(); } converter.convert(inputFile, outputFile); }
假如目标路径不存在,则新建该路径
核心方法:文件类型转换
converter.convert(inputFile, outputFile);
office2pdf方法:inputFilePath为远程端下载到kkfile服务端的文件路径
outputFilePath为文件转换后的路径
public void office2pdf(String inputFilePath, String outputFilePath) { OfficeDocumentConverter converter = converterUtils.getDocumentConverter(); if (null != inputFilePath) { File inputFile = new File(inputFilePath); if (null == outputFilePath) { String outputFilePath_end = getOutputFilePath(inputFilePath); if (inputFile.exists()) { converterFile(inputFile, outputFilePath_end,converter); } } else { if (inputFile.exists()) { converterFile(inputFile, outputFilePath, converter); } } } }
先判断目标文件路径是否为空,获取转换后的文件路径。找不到源文件,则返回
public static String getOutputFilePath(String inputFilePath) { return inputFilePath.replaceAll("."+ getPostfix(inputFilePath), ".pdf"); } public static String getPostfix(String inputFilePath) { return inputFilePath.substring(inputFilePath.lastIndexOf(".") + 1); }
(二)CadUtils类
com.aspose.cad.Image cadImage = com.aspose.cad.Image.load(inputFilePath); CadRasterizationOptions cadRasterizationOptions = new CadRasterizationOptions(); cadRasterizationOptions.setLayouts(new String[]{"Model"}); cadRasterizationOptions.setNoScaling(true); cadRasterizationOptions.setBackgroundColor(Color.getWhite()); cadRasterizationOptions.setPageWidth(cadImage.getWidth()); cadRasterizationOptions.setPageHeight(cadImage.getHeight()); cadRasterizationOptions.setPdfProductLocation("center"); cadRasterizationOptions.setAutomaticLayoutsScaling(true); cadRasterizationOptions.setDrawType(CadDrawTypeMode.UseObjectColor); PdfOptions pdfOptions = new PdfOptions(); pdfOptions.setVectorRasterizationOptions(cadRasterizationOptions); File outputFile = new File(outputFilePath); OutputStream stream; try { stream = new FileOutputStream(outputFile); cadImage.save(stream, pdfOptions); cadImage.close(); return true; } catch (FileNotFoundException e) { logger.error("PDFFileNotFoundException,inputFilePath:{}", inputFilePath, e); return false; }
是用于.Net和Java平台的独立软件库,可读取CAD文件(例如DWG,DXF,DNG,IFC,STL文件)并将其内容导出为PDF文件和光栅图像。 它不需要其他软件即可工作-不需要AutoCAD或ReadDWG,它本身即可工作。
它还允许部分导出文件,仅导出DWG和DXF文件中的特定实体或图层,在导出过程中替换CAD文件中指定的颜色或字体,以及导出3D实体。