java 将cad文件转化成pdf或图片,实现在线预览

pom文件引入依赖

<!-- https://mvnrepository.com/artifact/com.aspose/aspose-cad -->
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-cad</artifactId>
    <version>20.4</version>
</dependency>

 这个jar包只有国外的maven中央仓库有,如果下载不下来,请到官网上下载jar,在本地导入依赖

下载地址:https://mvnrepository.com/artifact/com.aspose/aspose-cad/20.4

java核心代码如下:


import com.aspose.cad.Color;
import com.aspose.cad.Image;
import com.aspose.cad.imageoptions.CadRasterizationOptions;
import com.aspose.cad.imageoptions.JpegOptions;
import com.aspose.cad.imageoptions.PdfOptions;
import com.sun.collierycommon.utils.SmartStringUtil;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

/**
 * @Description:CAD文件工具类
 * @Author: Tarzan Liu
 * @Date: 2020/1/8 14:23
 */
public class CADFileUtil{

    /**
     * 当前cad预览运行状态(保证cad预览线程,同步只有一个人操作)
     */
    public static volatile  boolean RUNNING = false;

    /**
     *方法描述  CAD文件转换为PDF流
     * @param srcFile 选择CAD文件路径
     * @param dataDir 保存pdf文件路径
     * @author Tarzan Liu
     * @date 2020年01月08日 15:08:50
     */
    public static void CADFileToPDF(String srcFile,String dataDir){
        Image objImage = Image.load(srcFile);
        CadRasterizationOptions cadRasterizationOptions = new CadRasterizationOptions();
        cadRasterizationOptions.setBackgroundColor(Color.getWhite());
        cadRasterizationOptions.setPageWidth(1600);
        cadRasterizationOptions.setPageHeight(1600);
        PdfOptions pdfOptions = new PdfOptions();
        pdfOptions.setVectorRasterizationOptions(cadRasterizationOptions);
       objImage.save(dataDir + System.currentTimeMillis()+".pdf", pdfOptions);
    }


    /**
     *方法描述  CAD文件转换为PDF流
     * @param srcFile 选择CAD文件路径
     * @author Tarzan Liu
     * @date 2020年01月08日 15:08:50
     */
    public static void CADFileToPDF(String srcFile){
        CadRasterizationOptions cadRasterizationOptions = new CadRasterizationOptions();
        cadRasterizationOptions.setBackgroundColor(Color.getWhite());
        cadRasterizationOptions.setPageWidth(1600);
        cadRasterizationOptions.setPageHeight(1600);
        PdfOptions pdfOptions = new PdfOptions();
        pdfOptions.setVectorRasterizationOptions(cadRasterizationOptions);
        String[] str = SmartStringUtil.split(srcFile,".");
        Image objImage = Image.load(srcFile);
        objImage.save(str[0]+".pdf", pdfOptions);
    }

    /**
     *方法描述  CAD文件转换为PDF流
     * @param srcFile 选择CAD文件路径
     * @author Tarzan Liu
     * @date 2020年01月08日 15:08:50
     */
    public static void CADFileToImage(String srcFile){
        CadRasterizationOptions cadRasterizationOptions = new CadRasterizationOptions();
        cadRasterizationOptions.setBackgroundColor(Color.getWhite());
        cadRasterizationOptions.setPageWidth(1600);
        cadRasterizationOptions.setPageHeight(1600);
        JpegOptions jpegOptions = new JpegOptions();
        jpegOptions.setVectorRasterizationOptions(cadRasterizationOptions);
        String[] str = SmartStringUtil.split(srcFile,".");
        Image objImage = Image.load(srcFile);
        objImage.save(str[0]+".jpeg", jpegOptions);
    }
    /**
     * 方法描述  CAD文件转换为PDF流
     * @param inputStream 选择CAD文件流
     * @author Tarzan Liu
     * @date 2020年01月08日 15:08:50
     */
    public static  InputStream CADFileToPDF(InputStream inputStream) throws Exception {
        RUNNING = true;
        Image image = Image.load(inputStream);
        CadRasterizationOptions cadRasterizationOptions = new CadRasterizationOptions();
        cadRasterizationOptions.setBackgroundColor(Color.getWhite());
        cadRasterizationOptions.setPageWidth(1600);
        cadRasterizationOptions.setPageHeight(1600);
        PdfOptions pdfOptions = new PdfOptions();
        pdfOptions.setVectorRasterizationOptions(cadRasterizationOptions);
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        image.save(out,pdfOptions);
        return  outputStreamConvertInputStream(out);
    }


    /**
     * 方法描述  CAD文件转换为PDF(处理网络文件)
     *
     * @param netFileUrl 网络文件路径
     * @return InputStream 转换后文件输入流
     * @author Tarzan Liu
     * @date 2020年01月08日 15:08:50
     */
    public static InputStream convertNetFile(String netFileUrl) throws Exception {
        // 创建URL
        URL url = new URL(netFileUrl);
        // 试图连接并取得返回状态码
        URLConnection urlConnection = url.openConnection();
        urlConnection.connect();
        HttpURLConnection httpURLConnection = (HttpURLConnection) urlConnection;
        int httpResult = httpURLConnection.getResponseCode();
        if (httpResult == HttpURLConnection.HTTP_OK) {
            return httpURLConnection.getInputStream();
        }
        return null;
    }


    /**
     * 方法描述 outputStream转inputStream
     * @param out
     * @author Tarzan Liu
     * @date 2020年01月08日 15:08:50
     */
    public static ByteArrayInputStream outputStreamConvertInputStream(final OutputStream out) throws Exception {
        ByteArrayOutputStream byteOut=(ByteArrayOutputStream) out;
        return new ByteArrayInputStream(byteOut.toByteArray());
    }


/*    public static void main(String[] args) {
        String srcFile="F:/file/工业广场平面图201809.dwg";
        String dataDir="F:/file/";
        long a= System.currentTimeMillis();
        CADFileToPDF(srcFile);
       // CADFileToImage(srcFile);
        long b=System.currentTimeMillis();
        System.out.println(b-a);

    }*/

}

猜你喜欢

转载自blog.csdn.net/weixin_40986713/article/details/107635275