aspose.cad使用工具类,及遇到的问题
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。
问题现象:使用aspose.cad 对swg文件进行转换svg,windows转换的图正常显示,linux转换的图文字出现重叠问题,如下:
问题定位:初步判定为:服务器字体问题。
解决办法:将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");}
- 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使用工具类,及遇到的问题相关推荐
- aspose 转pdf表格大小乱了_自己写了一个小工具类:pdf转word,没有页数和大小限制,保真!...
昨天下午遇到一个问题,想把一个比较大的pdf转化为word,结果使用了各种工具都收费.想着干脆写一个小工具吧,一开始使用的python等等试了好几个网上的代码,结果全都失真.于是乎不得不花了一下午自己 ...
- AutoCAD处理工具Aspose.CAD最新版三大新功能推荐——支持水印、CF2格式和OLE对象
Aspose.CAD for .NET(点击下载)是一个独立的AutoCAD处理API.它提供将DWG,DWF和DXF文件转换为高质量PDF和光栅图像的功能.开发人员可以从AutoCAD文件中选择和转 ...
- java ppt转html_word,ppt,excel转pdf,pdf转html工具类搭建
我看到很多需求要求word,excel,ppt,pptx转pdf等工具类.还有就是pdf转图片转html这里介绍一个这个工具类. 引入pom.xml com.aspose aspose-pdf 11. ...
- python 实例 cadu_【示例详解】AutoCAD处理控件Aspose.CAD 8月新更!支持加载大型DWG文件...
Aspose.CAD for .NET是一个独立的AutoCAD处理API.它提供将DWG,DWF和DXF文件转换为高质量PDF和光栅图像的功能.开发人员可以从AutoCAD文件中选择和转换特定的布局 ...
- 使用FreeMarker生成word文档(带图片),word转pdf,预览pdf,pdf下载工具类
一.下载或配置: 下载jar包 :freemaker的jar包下载 下载jar包 :aspose-words的jar包下载 或者配置maven依赖: pom.xml添加aspose的依赖包(maven ...
- Aspose.CAD库简介
Aspose.CAD是用于.Net和Java平台的独立软件库,可读取CAD文件(例如DWG,DXF,DNG,IFC,STL文件)并将其内容导出为PDF文件和光栅图像. 它不需要其他软件即可工作-不需要 ...
- Aspose.CAD使用教程:使用 C# 将 DGN 转换为 JPEG、PNG 或 TIFF 图像
目录 使用 C# 以编程方式将 DGN 文件转换为 JPEG 图像 使用 C# 以编程方式将 DGN 转换为 PNG 图像 在 C# 中以编程方式将 DGN 转换为 TIFF 图像 使用 C# 以编程 ...
- Java使用ftl模板文件生成Word,以及Word转换图片或Pdf工具类
Java使用ftl模板文件生成Word 一.写在前面 最近在项目中使用打印功能,发现这个功能我已经写过多次了,下面这个文章的发步日期在2020年,不得不感慨时间之快啊. https://blog.cs ...
- Java工具类实现word转pdf结果几乎一模一样
Background [封装好的工具类][转换效果99%][无水印] 实现技术[Aspose] 这里给出需要的依赖包 aspose-words-15.8.0.jar和word-license.xml, ...
最新文章
- 【Linux】用户组、用户操作
- 自然归并排序 c++ (原创)
- cmd-查看历史命令 重定向
- [建议]我对软工有话说(上)
- [android] 手机卫士手机定位的原理
- 使用nginx代理,怎么获取真实的IP
- bzoj 3594: [Scoi2014]方伯伯的玉米田
- phpcms v9网站的数据库配置文件在哪
- python tkinter库 pack布局方法调用
- 图卷积网络进行骨骼识别代码_深兰科学院:动作识别——人体骨架时空图卷积网络的关节图构造方法简介...
- 为何python不好找工作-郑州为何python不好找工作?
- centos7下搭建hadoop、hbase、hive、spark分布式系统架构
- 纯新手DSP编程--5.29--DSP/BIOS任务管理和后台线程
- Tomcat------如何配置域名和80端口
- BZOJ4373 : 算术天才⑨与等差数列
- ORACLE_mldn_002
- 高德地图看各省分界线_请教 高德地图绘制行政区划边界
- R720重装系统\WEPE装系统\WEPE
- WebView加载淘宝,天猫链接失败
- Spark视频王家林大神第8课:彻底理解大数据机器学习
热门文章
- “旺夫紫”不旺了,是剧情的设定,还是在走下坡路了
- WIN10 安装ORACLE 11G 报错:INS-30131
- 在华为mate9上,有的日志打印不出来的解决方法
- yum安装报错:Cannot find a valid baseurl for repo: base
- 迅雷看看低价甩卖 无力回天有原因
- Django配置Mysql数据库连接
- gitee安装和使用流程详解
- Tenda AC15路由器仿真——IDA+QEMU
- VS Code:使用VS的cl.exe编译运行C/C++程序
- PS如何最简单把彩色图片调成黑白色