公司需要做一个CAD格式文件转化为pdf格式的组件,查阅相关资料后,确认了两个框架,一个aspose-cad,一个kajeba,两个组件权衡了一下之后,选择了使用aspose-cad来实现功能.
在导入aspose-cad包之后,直接调用即可.
public static void main(String[] args) {
String dataDir = "C:\\Users\\PascalLee\\Desktop\\demo\\pdf\\1.pdf";
String srcFile = "C:\\Users\\PascalLee\\Desktop\\demo\\dxf\\turn.dxf";
Image image = Image.load(srcFile);
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.setLayouts(new String[]{"Model"});
rasterizationOptions.setNoScaling(true);
//设置背景色
rasterizationOptions.setBackgroundColor(Color.getWhite());
//设置纸张的宽度和高度
rasterizationOptions.setPageWidth(image.getWidth());
rasterizationOptions.setPageHeight(image.getHeight());
//设置图纸中图像居中
rasterizationOptions.setPdfProductLocation("center");
rasterizationOptions.setAutomaticLayoutsScaling(true);
//设置图纸颜色使用源文件的颜色
rasterizationOptions.setDrawType(CadDrawTypeMode.UseObjectColor);
//设置图纸尺寸大小
SizeF sizeF = new SizeF();
sizeF.setHeight(1.2F);
sizeF.setWidth(2.3F);
rasterizationOptions.setPageSize(sizeF);
//设置图像沿哪个坐标旋转
ObserverPoint observerPoint = new ObserverPoint();
float yAngle = 180; //沿Y轴旋转的角度
observerPoint.setAngleRotateY(yAngle);
rasterizationOptions.setObserverPoint(observerPoint);
//设置笔相关属性
PenOptions penOptions = new PenOptions();
penOptions.setStartCap(1);
penOptions.setEndCap(1);
PdfOptions pdfOptions = new PdfOptions();
pdfOptions.setVectorRasterizationOptions(rasterizationOptions);
image.save(dataDir + "conic_pyramid_out_.pdf", pdfOptions);
pdfOptions.setRotation(2);
}
上为常见的一些图像转化之后的设置部分.
总体来说,aspose-cad转化之后的效果非常好,哪怕放大缩小,都不会影响其失真.但是会有水印,想解决水印的方法就需要购买正规的aspose产品.另外,如果想使用kajeba的同学,可以直接上github上搜一下,有两个前辈写了关于kajeba的框架,以供参考.