aspose.cad使用工具类,及遇到的问题

  • CAD转换工具类
    • 使用过程中的问题

CAD转换工具类


import com.aspose.cad.*;
import com.aspose.cad.fileformats.cad.CadDrawTypeMode;
import com.aspose.cad.fileformats.cad.CadImage;
import com.aspose.cad.imageoptions.CadRasterizationOptions;
import com.aspose.cad.imageoptions.JpegOptions;
import com.aspose.cad.imageoptions.PdfOptions;
import com.aspose.cad.imageoptions.SvgOptions;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;public class CADFileUtil {/*** 当前cad预览运行状态(保证cad预览线程,同步只有一个人操作)*/public static volatile  boolean RUNNING = false;/***方法描述  CAD文件转换为PDF流* @param srcFile 选择CAD文件路径* @param dataDir 保存pdf文件路径*/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文件路径*/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 fileName = srcFile.substring(0,srcFile.lastIndexOf("."));Image objImage = Image.load(srcFile);objImage.save(fileName+".pdf", pdfOptions);}/***方法描述  CAD文件转换为PDF流* @param srcFile 选择CAD文件路径*/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 fileName = srcFile.substring(0,srcFile.lastIndexOf("."));Image objImage = Image.load(srcFile);objImage.save(fileName+".jpeg", jpegOptions);}/*** dwg转换成Svg* @param srcFile*/public void CADFileToSvg(String srcFile){try{SvgOptions options = new SvgOptions();Image image = (CadImage )Image.load(srcFile);int width = image.getWidth();int height = image.getHeight();//100万像素等比倍数int zoom = 1008000 / width / height;CadRasterizationOptions cadRasterizationOptions = new CadRasterizationOptions();cadRasterizationOptions.setPageHeight(height * zoom);cadRasterizationOptions.setPageWidth(width * zoom);cadRasterizationOptions.setDrawType(CadDrawTypeMode.UseObjectColor);// 设置使用CAD画笔颜色cadRasterizationOptions.setBackgroundColor(Color.getBlack());// 设置背景颜色cadRasterizationOptions.getGraphicsOptions().setSmoothingMode(SmoothingMode.HighQuality);cadRasterizationOptions.getGraphicsOptions().setTextRenderingHint(TextRenderingHint.AntiAliasGridFit);cadRasterizationOptions.getGraphicsOptions().setInterpolationMode(InterpolationMode.HighQualityBicubic);options.setVectorRasterizationOptions(cadRasterizationOptions);
//options.setColorType(SvgColorMode.Grayscale);
//options.setTextAsShapes(false);String fileName = srcFile.substring(0,srcFile.lastIndexOf("."));image.save(fileName+".svg",options);}catch (Exception e){e.printStackTrace();}}/*** 方法描述  CAD文件转换为PDF流* @param inputStream 选择CAD文件流*/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 转换后文件输入流*/public static InputStream convertNetFile(String netFileUrl) throws Exception {// 创建URLURL 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*/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="D:/ugi/profile/cad/test/";CADFileUtil.CADFileToSvg(srcFile+"2015.02.10修订.DWG");}}

使用过程中的问题

一、需要将CAD文件转换成其他文件,用于浏览器预览,最终选定转为svg。

  1. 问题现象:使用aspose.cad 对swg文件进行转换svg,windows转换的图正常显示,linux转换的图文字出现重叠问题,如下:

  2. 问题定位:初步判定为:服务器字体问题。

  3. 解决办法:将windows的宋体安装到linux上,并在程序中指定字体样式:
    aspose.cad-java-API
    对于更换字体,官方api提供了一种方法,

         CadImage image = (CadImage )Image.load(srcFile);//image.setDefaultFont("simsun"); // 自己偶然发现设置字体方法:设置字体-宋体for(Object style : image.getStyles())// 官方指定设置字体方法,两种任选其一,我是两种都放开了,未测哪个生效{// Set the font name ArialString font = ((com.aspose.cad.fileformats.cad.cadtables.CadStyleTableObject)style).getPrimaryFontName();if("txt".equalsIgnoreCase(font)){continue;}System.out.println(font);((com.aspose.cad.fileformats.cad.cadtables.CadStyleTableObject)style).setPrimaryFontName("simsun");}
  1. Linux操作-安装宋体:
    1 fc-list :lang=zh查看linux服务器中文字体,并linux服务器/usr/share/fonts目录下创建chinese文件夹;

    2.将windows的宋体复制到linux的/usr/share/fonts/chinese下;
    3.然后建立字体索引信息,更新字体缓存,使用如下命令:
cd /usr/share/fonts/
mkfontscale
mkfontdir
fc-cache

至此,字体已经安装完毕。
6. 回到aspose.cad,调试dwg文件转svg,文件已经使用宋体

aspose.cad使用工具类,及遇到的问题相关推荐

  1. aspose 转pdf表格大小乱了_自己写了一个小工具类:pdf转word,没有页数和大小限制,保真!...

    昨天下午遇到一个问题,想把一个比较大的pdf转化为word,结果使用了各种工具都收费.想着干脆写一个小工具吧,一开始使用的python等等试了好几个网上的代码,结果全都失真.于是乎不得不花了一下午自己 ...

  2. AutoCAD处理工具Aspose.CAD最新版三大新功能推荐——支持水印、CF2格式和OLE对象

    Aspose.CAD for .NET(点击下载)是一个独立的AutoCAD处理API.它提供将DWG,DWF和DXF文件转换为高质量PDF和光栅图像的功能.开发人员可以从AutoCAD文件中选择和转 ...

  3. java ppt转html_word,ppt,excel转pdf,pdf转html工具类搭建

    我看到很多需求要求word,excel,ppt,pptx转pdf等工具类.还有就是pdf转图片转html这里介绍一个这个工具类. 引入pom.xml com.aspose aspose-pdf 11. ...

  4. python 实例 cadu_【示例详解】AutoCAD处理控件Aspose.CAD 8月新更!支持加载大型DWG文件...

    Aspose.CAD for .NET是一个独立的AutoCAD处理API.它提供将DWG,DWF和DXF文件转换为高质量PDF和光栅图像的功能.开发人员可以从AutoCAD文件中选择和转换特定的布局 ...

  5. 使用FreeMarker生成word文档(带图片),word转pdf,预览pdf,pdf下载工具类

    一.下载或配置: 下载jar包 :freemaker的jar包下载 下载jar包 :aspose-words的jar包下载 或者配置maven依赖: pom.xml添加aspose的依赖包(maven ...

  6. Aspose.CAD库简介

    Aspose.CAD是用于.Net和Java平台的独立软件库,可读取CAD文件(例如DWG,DXF,DNG,IFC,STL文件)并将其内容导出为PDF文件和光栅图像. 它不需要其他软件即可工作-不需要 ...

  7. Aspose.CAD使用教程:使用 C# 将 DGN 转换为 JPEG、PNG 或 TIFF 图像

    目录 使用 C# 以编程方式将 DGN 文件转换为 JPEG 图像 使用 C# 以编程方式将 DGN 转换为 PNG 图像 在 C# 中以编程方式将 DGN 转换为 TIFF 图像 使用 C# 以编程 ...

  8. Java使用ftl模板文件生成Word,以及Word转换图片或Pdf工具类

    Java使用ftl模板文件生成Word 一.写在前面 最近在项目中使用打印功能,发现这个功能我已经写过多次了,下面这个文章的发步日期在2020年,不得不感慨时间之快啊. https://blog.cs ...

  9. Java工具类实现word转pdf结果几乎一模一样

    Background [封装好的工具类][转换效果99%][无水印] 实现技术[Aspose] 这里给出需要的依赖包 aspose-words-15.8.0.jar和word-license.xml, ...

最新文章

  1. 【Linux】用户组、用户操作
  2. 自然归并排序 c++ (原创)
  3. cmd-查看历史命令 重定向
  4. [建议]我对软工有话说(上)
  5. [android] 手机卫士手机定位的原理
  6. 使用nginx代理,怎么获取真实的IP
  7. bzoj 3594: [Scoi2014]方伯伯的玉米田
  8. phpcms v9网站的数据库配置文件在哪
  9. python tkinter库 pack布局方法调用
  10. 图卷积网络进行骨骼识别代码_深兰科学院:动作识别——人体骨架时空图卷积网络的关节图构造方法简介...
  11. 为何python不好找工作-郑州为何python不好找工作?
  12. centos7下搭建hadoop、hbase、hive、spark分布式系统架构
  13. 纯新手DSP编程--5.29--DSP/BIOS任务管理和后台线程
  14. Tomcat------如何配置域名和80端口
  15. BZOJ4373 : 算术天才⑨与等差数列
  16. ORACLE_mldn_002
  17. 高德地图看各省分界线_请教 高德地图绘制行政区划边界
  18. R720重装系统\WEPE装系统\WEPE
  19. WebView加载淘宝,天猫链接失败
  20. Spark视频王家林大神第8课:彻底理解大数据机器学习

热门文章

  1. “旺夫紫”不旺了,是剧情的设定,还是在走下坡路了
  2. WIN10 安装ORACLE 11G 报错:INS-30131
  3. 在华为mate9上,有的日志打印不出来的解决方法
  4. yum安装报错:Cannot find a valid baseurl for repo: base
  5. 迅雷看看低价甩卖 无力回天有原因
  6. Django配置Mysql数据库连接
  7. gitee安装和使用流程详解
  8. Tenda AC15路由器仿真——IDA+QEMU
  9. VS Code:使用VS的cl.exe编译运行C/C++程序
  10. PS如何最简单把彩色图片调成黑白色