我可以使用命令工具将 .dxf 转换为 .png 或 .jpg 吗?

use*_*587 5 package-management command-line

我正在寻找一些命令行工具,允许我将 dxf 转换为任何其他格式。

ste*_*ver 8

有许多矢量绘图程序在不同程度上支持 DXF 文件,并具有命令行转换功能,包括diainkscape甚至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)

对不起,这不是一个一刀切的答案 - 但希望它会给你一些尝试。