使用 standalone 和 imagemagick 的转换问题

使用 standalone 和 imagemagick 的转换问题

我正在尝试使用 Imagemagick 将表格转换为 png 格式

\documentclass[12pt,a4paper,border=8pt,convert=true]{standalone}

\usepackage{booktabs}
\usepackage{caption}
\usepackage{siunitx}
\sisetup{binary-units = true,
         table-format=7.0}

\begin{document}

    \minipage{1.08\textwidth}
    \addtolength{\tabcolsep}{-1.0pt}
    \begin{tabular}{lS[table-format=6.0]
            S[table-format=6.0]
            S[table-format=6.0]
            SSS}
        \toprule
        Device & 2011 & 2012 & 2013 & 2014 & 2015 & 2016 \\
        \midrule
        Non-smarthphones & 22686 & 55813 & 108750 & 196262 & 357797 & 615679 \\
        Smarthphones & 104759 & 365550 & 933373 & 1915173 & 3257030 & 5221497 \\
        Laptops e Netbooks & 373831 & 612217 & 917486 & 1340062 & 1963950 & 2617770\\
        Tablets & 17393 & 63181 & 141153 & 300519 & 554326 & 1083895\\
        Home gateways & 55064 & 108073 & 180562 & 267545 & 376494 & 514777 \\
        M2M & 23009 & 47144 & 92150 & 172719 & 302279 & 508022 \\
        Altri devices & 525 & 1460 & 5429 & 22966 & 84204 & 242681\\
        \bottomrule
    \end{tabular}
    \captionof*{table}{Traffico mobile globale al mese per dispositivo in \si{\tera\byte}}
    \endminipage

\end{document}

这是使用standalone包创建的表。我阅读了文档,上面说要使用 ImageMagick。问题是,当我编译时,它找不到可执行文件imgconvert.exe。所以我把这个可执行文件放到有 tex 文件的文件夹中。现在当我编译时,我又收到一个错误:

imgconvert.exe: `%s' (%d) "gswin32c.exe" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE 
-dNOPROMPT -dMaxBitmap=500000000 -dEPSCrop -dAlignToPixels=0 -dGridFitTT=2 
"-sDEVICE=pngalpha" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 "-r300x300" 
"-sOutputFile=C:/Users/MAZZAR~1/AppData/Local/Temp/magick-31681PKeFVHE065o" 
"-fC:/Users/MAZZAR~1/AppData/Local/Temp/magick-3168A-Fab6j3iIUc" 
"-fC:/Users/MAZZAR~1/AppData/Local/Temp/magick-3168QXzuvG_UAP07" 
@ error/utility.c/SystemCommand/1890. imgconvert.exe: Postscript delegate failed 
`table.pdf': No such file or directory @ error/pdf.c/ReadPDFImage/678.
imgconvert.exe: no images defined `table.png' @ error/convert.c/ConvertImageCommand/3066.

答案1

首先,关于可执行文件名称的问题:

convert也是 MS 的硬盘驱动器 FAT 到 NTFS 转换工具,因此建议将 Image Magick 重命名convert.exeimgconvert.exe。为了不因我的standalone软件包而导致任何数据丢失(即使这种情况不太可能发生),我将默认可执行文件名称设置为imgconvert。这可以使用convert={convertexe={convert.exe}}class 选项进行更改。这一切也在standalone手动的

我建议 Windows 用户重命名或复制该convert.exe文件,imgconvert.exe或者将该standalone.cfg文件更改为包含:

 \standaloneconfig{convert={convertexe={convert.exe},false}}

现在您收到错误消息:

我在 Windows 下尝试过,发现它取决于 Image Magick 的版本。使用 v6.6.9 时,我遇到了同样的错误。在这里,无论是从命令行调用还是手动从命令行调用都无关紧要standalone。但是对于 v6.8.1,我今天刚刚从这里它没有任何问题(选择正确的可执行文件名称后,如上所述)。似乎使用 v6.6.9 的 PDF 存在问题,并且可能存在 v6.8.1 之前的其他版本。

因此,解决您的问题的方法是更新 Image Magick。如果这不能解决您的问题,或者您已经安装了 v6.8.1,请在此处发布使用的版本号。还可以尝试使用命令行手动转换 convert.exe -density 300 file.pdf -quality 90 file.png。如果这也引发了相同的错误,则不是 ImageMagick 的问题,standalone而只是 ImageMagick 的问题。

答案2

错误消息告诉您无法找到“gswin32c.exe”。安装 Ghostscript 即可解决问题。

答案3

由于某些原因,我也遇到了同样的错误,并且无法直接使用独立程序进行转换(我在 Windows 上)。这是因为可执行文件的名称很简单,convert.exe而独立程序会搜索imgconvert.exe:-(我只是复制了一份convert.exe并将其重命名为,imgconvert.exe然后将其放回安装文件夹中imagemagick。然后您的代码就可以正常工作了。

如果它不适合您,那么最可能的原因(从您的错误报告中可以看出)是不在imgconvert.exe系统路径中,因此无法找到。尝试将其添加到您的系统路径或重新安装imagemagick(执行此操作时它会询问您是否要将其添加到路径中)。

这是获取 png 文件的另一种方法。但对于这种方法,convert.exe(仅此而已convert.exe)也必须位于系统路径中。否则,这种方法将不起作用!

(使用 编译pdflatex):

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{mytable.tex}
  \documentclass[12pt,a4paper,border=8pt,convert=true]{standalone}

\usepackage{booktabs}
\usepackage{caption}
\usepackage{siunitx}
\sisetup{binary-units = true,
         table-format=7.0}

\begin{document}

    \minipage{1.08\textwidth}
    \addtolength{\tabcolsep}{-1.0pt}
    \begin{tabular}{lS[table-format=6.0]
            S[table-format=6.0]
            S[table-format=6.0]
            SSS}
        \toprule
        Device & 2011 & 2012 & 2013 & 2014 & 2015 & 2016 \\
        \midrule
        Non-smarthphones & 22686 & 55813 & 108750 & 196262 & 357797 & 615679 \\
        Smarthphones & 104759 & 365550 & 933373 & 1915173 & 3257030 & 5221497 \\
        Laptops e Netbooks & 373831 & 612217 & 917486 & 1340062 & 1963950 & 2617770\\
        Tablets & 17393 & 63181 & 141153 & 300519 & 554326 & 1083895\\
        Home gateways & 55064 & 108073 & 180562 & 267545 & 376494 & 514777 \\
        M2M & 23009 & 47144 & 92150 & 172719 & 302279 & 508022 \\
        Altri devices & 525 & 1460 & 5429 & 22966 & 84204 & 242681\\
        \bottomrule
    \end{tabular}
    \captionof*{table}{Traffico mobile globale al mese per dispositivo in \si{\tera\byte}}
    \endminipage
\end{document}  
\end{filecontents*}
% compile with pdflatex
\immediate\write18{pdflatex --shell-escape mytable}
% convert to PNG
\makeatletter
\immediate\write18{convert -density 500 -alpha on mytable.pdf mytable-\@percentchar02d.png}
\makeatother
%
\begin{document}
Check the folder for your \verb|mytable-00.png| file.
\end{document}

您的代码位于\begin{filecontents*}和之间\end{filecontents*}。您必须已imagemagick安装 并且可执行文件应位于系统路径中才能使其正常工作。

答案4

我今天遇到了同样的问题。

convert\documentclass设置中更改即可magick解决。

将 tex 文件从

\documentclass[12pt,a4paper,border=8pt,convert=true]{standalone}
...
\begin{document}
\end{document}

\documentclass[12pt,a4paper,border=8pt,magick=true]{standalone}
...
\begin{document}
\end{document}

相关内容