Dxf导出jpg文件后丢失元素

@wangjigen,

这是读取文件的示例,cadImage 包含解析 DWG 的结果:

CadImage cadImage = (CadImage) Image.load(inputFile);

由于格式结构复杂,因此无法直接合并内容。我们正在努力将一个文件作为块插入另一个文件(Merge two DWG files into a new one - #4 by oleksii.gorokhovatskyi),但尚未准备好。

test.zip (24.6 KB)

这是我测试的代码,如您提供的链接一样,我也会报错空引用,没有没有可能通过修改代码的形式规避掉这个报错

如果输入和输出的文件为.dxf文件则可以规避空引用报错,但是输出的dxf文件无法被autocad打开

@wangjigen,
是的,此代码会产生空引用,我们正在努力进行更新。请附上您正在使用的 DXF 文件(在您这边将 DWG 转换为 DXF),我们也会检查这种情况。

Template774.zip (177.0 KB)

这是我的dxf文件

@wangjigen,
好的,如果我理解正确的话,最后一个文件是关于合并两个 DXF 文件的问题,对吧?您已在上面附加了合并两个文件的代码,并在上一篇文章中附加了一个 DXF。您用来合并最新文件并在结果中获得无效 DXF 的第二个 DXF 文件是什么?

我可以根据哪个jar包,把多个照片合并成一个,如果不能直接合并是否可以通过二次转换进行合并,比如说先把多个照片转成pdf再把pdf转成照片,可以给个示例吗?

@wangjigen,
如果您指的是光栅图像作为输入,最好在这里使用“imaging”标签开始新线程,我想 Aspose.Imaging 团队可以帮上忙。Aspose.PDF 团队可以帮助合并 PDF 文件。

cad包可以实现吗?比如纵向合并dxf或者jpg文件

@wangjigen,
Aspose.CAD 尚未提供直接合并 DXF 文件的现成示例,因为合并本身可能非常不同,并且格式包含我们在合并过程中需要考虑的许多其他事项(实体的相同句柄、复制的线条样式、文本样式、图层、与交叉点名称有关的事情等)。此外,合并本身在 DXF/DWG 格式中可能有所不同,例如将一个文件粘贴到另一个文件中作为参考或完全复制内容。输出格式也很重要,例如,这里有一个如何合并两个 DXF 文件并将结果保存为 PDF 的示例(但保存回 DXF 会产生无效文件,我们正在努力解决这个问题):


String firstDxf = "file1.dxf";
String secondDxf = "file2.dxf";

String outputPdf = "merged.pdf";

try (DxfImage firstImage = (DxfImage) Image.load(firstDxf))
{
	try (DxfImage secondImage = (DxfImage) Image.load(secondDxf))
	{
		for (CadEntityBase entity : secondImage.getEntities())
		{
			firstImage.addEntity(entity);
		}

		firstImage.updateSize();
		firstImage.save(outputPdf, new PdfOptions());
	}
}
catch (Exception e)
{
	e.printStackTrace();
}
		

我们无法合并两个 jpg 文件,Aspose.Imaging 可能可以做到这一点。

如果您提供要合并的文件的示例和所需的结果,可能会有所帮助,这样我们就可以准确思考可能出现的问题以及如何解决它们。

我可以通过aspose.cad for java 24.3 实现把dwg 2018版转为2008或者2004版本的dwg吗?

@wangjigen,
不幸的是,我们没有在不同版本之间进行转换的功能。

我这边尝试使用jar包,把dwg文件转为pdf文件,代码如资料中txt文件所示,转为pdf文件后,出现了元素位移,以及无故多出文字元素,是我代码的问题吗?我用的jar版本为cad.24.3

资料.zip (959.4 KB)

@wangjigen,
感谢您提供的详细信息。
发生这种情况是因为 SHX 字体的处理方式不同,应与绘图一起交付以便在导出时使用:

cadRasterizationOptions.setShxFonts( new String[] { "gbcbig.shx", "romans.shx"});

但不幸的是,即使是最新版本,导出结果也很糟糕,我们创建了 CADJAVA-11964 来解决这个问题。

把dwg文件中的字体统一成一个,错乱的问题是不是会解决?

@wangjigen,
恐怕统一是不可能的:您需要使用大字体来表示中文符号,而大字体无论如何都是 SHX 字体。情况如下:我们可以绘制系统中已安装的 TTF 字体。一些 SHX 字体(如 romans.shx)有其 TTF 副本,看起来像是用漂亮的细线创建的 SHX。但我找不到此绘图中使用的 gbcbig.shx 的 TTF。而且据我所知,您只能在 AutoCAD 中的大字体文本样式选项中选择 SHX 字体(而不是 TTF)。绘制用线条创建的 SHX 字体很麻烦,但不幸的是这似乎是唯一的方法(除了您现在可以观察到的情况)。