use*_*587 5 package-management command-line
我正在寻找一些命令行工具,允许我将 dxf 转换为任何其他格式。
有许多矢量绘图程序在不同程度上支持 DXF 文件,并具有命令行转换功能,包括dia、inkscape甚至libreoffice.
dia似乎支持 dxf 输入和 png 输出,例如
dia jcsample.dxf -e jcsample.png
Run Code Online (Sandbox Code Playgroud)
或者,使用明确的输出维度,
dia jcsample.dxf -s 744x1052 -e jcsample.png
Run Code Online (Sandbox Code Playgroud)
然而,结果在第一种情况下是一个空文件,而在第二种情况下,在我尝试的示例文件中,结果是一个空文件——你可能运气更好。
inkscape似乎也支持相同的功能,例如
inkscape -f jcsample.dxf --export-png=jcsample.png
Run Code Online (Sandbox Code Playgroud)
然而,结果又是不可读的。什么做了Inkscape的工作转换到封装的PostScript第一
inkscape -f jcsample.dxf --export-eps=jcsample.eps
Run Code Online (Sandbox Code Playgroud)
然后将 eps 转换为 png 或 jpeg,例如使用 Ghostscript
gs -sDEVICE=png16m -dNOPAUSE -dBATCH -dSAFER -sOutputFile=jcsample.png jcsample.eps
Run Code Online (Sandbox Code Playgroud)
或者
gs -sDEVICE=jpeg -dJPEGQ=100 -dNOPAUSE -dBATCH -dSAFER -r100 -sOutputFile=jcsample.jpg jcsample.eps
Run Code Online (Sandbox Code Playgroud)
[请注意dia,即使它也支持 PostScript 输出,同样的技巧似乎对 无效]
缺点inkscape是 dxf 导入过滤器会弹出一个对话框来确认默认缩放和编码,使其不是真正的非交互式:据我所知,目前没有办法阻止这种情况,尽管有一个突出的功能请求它(添加-z或--without-gui开关似乎没有帮助)。
libreoffice似乎可以直接用于 png 或 jpg
libreoffice --headless --convert-to png jcsample.dxf
libreoffice --headless --convert-to jpg jcsample.dxf
Run Code Online (Sandbox Code Playgroud)
然而,在同一个示例文件中,生成的图像被缩放以适应纵向页面的中心位置;同样,解决方案可能是使用中间矢量格式,例如 pdf
libreoffice --headless --convert-to pdf jcsample.dxf
pdfcrop jcsample.pdf
gs -sDEVICE=png16m -dNOPAUSE -dBATCH -dSAFER -sOutputFile=jcsample.png jcsample-crop.pdf
Run Code Online (Sandbox Code Playgroud)对不起,这不是一个一刀切的答案 - 但希望它会给你一些尝试。