Free Support Forum - aspose.com

使用asposeCAD在dwg图纸转换pdf的一些问题

找了很多dwg的库,asposeCAD算是比较如意的一款,我使用的的是19.5的java版本,
在开发过程中,遇到了如现几个问题,麻烦请帮忙指教:
1.土建(PKPM)的图纸无法打开,AUTODESK可正常,
2.字体样式如何替换,按教程设置了并不起效果
3.win10 中文不支持,在win7系统下运行中文正常
4.19.7 以上 无法获取块内属性定义。19.9也报错
CadAttrib attAttrib = (CadAttrib) tempobj;
String key = attAttrib.getAttributeString().getValue();
5.转pdf 如何切割,或者局部定位区域导出图片,我目前采用的方法是调整pdf的视口
cadImage.getMaxPoint().setX(content[4] + Width);
cadImage.getMaxPoint().setY(content[5] + Height);
cadImage.getMinPoint().setX(content[4]);
cadImage.getMinPoint().setY(content[5]);
其实这样导出来的图纸都是一样的,且体积大,可视区域做了变化。
7.字体粗细如何调整?rasterizationOptions.setDrawColor(Color.getBlack());有的字体很淡
8.图纸域很大的话转换图片会报错(图纸内信息可正常获取),调整图纸,缩小后可以正常转换报错pdf
9.字体尺寸和在cad显示会有偏差,如字宽异常超过范围等,不知如何解决
10.特殊的字符该如何替换,如土建中的钢筋符号

谢谢

@stephenwang2004,

我已经满足您的要求,建议您与源文件,生成的输出和使用的示例代码一起共享问题详细信息。 此外,也请尝试使用最新的Aspose.CAD for Java 19.9。 我还要求您分别记录每个问题,因为将票证ID与线程链接并在需要时进行跟踪将很方便。

  1. 土建PKPM 图纸打不开 保错信息:

Exception in thread “main” class com.aspose.cad.cadexceptions.ImageLoadException: Image loading failed. —> class com.aspose.cad.internal.Exceptions.Exception: Cannot process loading further due to incorrect file format structure.
com.aspose.cad.internal.fw.j.a(Unknown Source)
com.aspose.cad.internal.fw.bd.a(Unknown Source)
com.aspose.cad.internal.fw.bc.load(Unknown Source)
com.aspose.cad.Image.a(Unknown Source)
com.aspose.cad.Image.load(Unknown Source)
com.aspose.cad.examples.DWGDrawings.Block2Pdf.main(Block2Pdf.java:65)
— End of inner exception stack trace —
com.aspose.cad.Image.a(Unknown Source)
com.aspose.cad.Image.load(Unknown Source)
com.aspose.cad.examples.DWGDrawings.Block2Pdf.main(Block2Pdf.java:65)
at com.aspose.cad.Image.a(Unknown Source)
at com.aspose.cad.Image.load(Unknown Source)
at com.aspose.cad.examples.DWGDrawings.Block2Pdf.main(Block2Pdf.java:65)
Caused by: class com.aspose.cad.internal.Exceptions.Exception: Cannot process loading further due to incorrect file format structure.
com.aspose.cad.internal.fw.j.a(Unknown Source)
com.aspose.cad.internal.fw.bd.a(Unknown Source)
com.aspose.cad.internal.fw.bc.load(Unknown Source)
com.aspose.cad.Image.a(Unknown Source)
com.aspose.cad.Image.load(Unknown Source)
com.aspose.cad.examples.DWGDrawings.Block2Pdf.main(Block2Pdf.java:65)
at com.aspose.cad.internal.fw.j.a(Unknown Source)
at com.aspose.cad.internal.fw.bd.a(Unknown Source)
at com.aspose.cad.internal.fw.bc.load(Unknown Source)
… 3 more

谢谢,
1.我更新19.7 19.9版本后 导致无法获取块内属性定义,19.5正常 如下:
CadAttrib attAttrib = (CadAttrib) tempobj;
String key = attAttrib.getAttributeString().getValue();
提示,结果都为null,显示没有该方法getAttributeString(),没办法只能使用19.5

9.字体异常的情况如附件所示:Pasted Screenshot 2019-12-25 14-20-04.png (11.6 KB)

  1. 字体粗细异常 有的字体会很淡 如图片所示:Pasted Screenshot 2019-12-25 14-22-08.png (15.1 KB)
  1. 字体样式 替换 我使用了:
    cadImage.setDefaultFont(“Arial”);
    或者
    for(Object style : cadImage.getStyles())
    {
    // Set the font name
    ((com.aspose.cad.fileformats.cad.cadtables.CadStyleTableObject)style).setPrimaryFontName(“Arial”);
    }

均没有效果 ,不知道该如何正确替换字体显示

  1. 我的初衷是,我们的dwg图纸是一个模型空间中包含很多图框。现在需要按图框分别导出pdf
    我的实现方法是获取图框的左下点和右上点,对pdf进行显示限制,但其实我发现导出来的文件大小都是一样的,而且很大。由此我猜想这个方法其实没有对pdf图形内容进行切割,只是显示区域限制了而已,效率比较低。不知道有没更好 方法 content是个数组存放了图框的尺寸,比例信息
    cadImage.getMaxPoint().setX(content[4] + Width);
    cadImage.getMaxPoint().setY(content[5] + Height);
    cadImage.getMinPoint().setX(content[4]);
    cadImage.getMinPoint().setY(content[5]);
    rasterizationOptions.setPageWidth((float) (Width / content[1]));
    rasterizationOptions.setPageHeight((float) (Height / content[2]));
    // rasterizationOptions.setUnitType(com.aspose.cad.imageoptions.UnitType.Unitless);

     	rasterizationOptions.setBorderX(0);
     	rasterizationOptions.setBorderY(0);
    
     	rasterizationOptions.setLayouts(new String[] { "Model" });
    
    
    
     	rasterizationOptions.setDrawType(0);
     	rasterizationOptions.setDrawColor(Color.getBlue());
    
     	rasterizationOptions.setAutomaticLayoutsScaling(true);
    
     	PdfOptions pdfOptions = new PdfOptions();
    
     	pdfOptions.setVectorRasterizationOptions(rasterizationOptions);
    
     	cadImage.save(outputFile, pdfOptions);//

8.图纸内容偏离 坐标原点很远的时候会报错,

A fatal error has been detected by the Java Runtime Environment:

EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007fffe86db57d, pid=5136, tid=12320

JRE version: Java™ SE Runtime Environment (12.0.2+10) (build 12.0.2+10)

Java VM: Java HotSpot™ 64-Bit Server VM (12.0.2+10, mixed mode, sharing, tiered, compressed oops, g1 gc, windows-amd64)

Problematic frame:

V [jvm.dll+0x6fb57d]

No core dump will be written. Minidumps are not enabled by default on client versions of Windows

An error report file with more information is saved as:

C:\Users\Administrator\Desktop\aspose.cad\Aspose.CAD-for-Java-master\Examples\hs_err_pid5136.log

Compiler replay data is saved as:

C:\Users\Administrator\Desktop\aspose.cad\Aspose.CAD-for-Java-master\Examples\replay_pid5136.log

If you would like to submit a bug report, please visit:

http://bugreport.java.com/bugreport/crash.jsp

replay_pid5136.zip (36.0 KB)

@stephenwang2004,

我观察到您在多个帖子中共享的快照。 我要求您分享有效的示例代码,源DWG文件,Java和操作系统详细信息,以便您可以重现此问题。 请分享所需信息,以便我们进一步为您提供帮助。