使用 epstopdf 时出错

使用 epstopdf 时出错

我希望包含从 Matlab 图生成的 eps 图像(pdf 由 Matlab 生成为整页,因此是 eps),但是转换失败,留下空白的 pdf 图像。消息是:

MiKTeX GPL Ghostscript

9.25: Unrecoverable error, exit code 1



Sorry, but "MiKTeX EPS-to-PDF Converter" did not succeed. The log file hopefully contains the information to get MiKTeX going again: C:\Users\Andrey\AppData\Local\MiKTeX\2.9\miktex\log\epstopdf.log

日志文件的内容

2019-12-03 06:29:05,797+0100 INFO  epstopdf - starting with command line: epstopdf --outfile=images/kkk-eps-converted-to.pdf images/kkk.eps
2019-12-03 06:29:06,456+0100 FATAL epstopdf - Invalid argument
2019-12-03 06:29:06,457+0100 FATAL epstopdf - Info: 
2019-12-03 06:29:06,457+0100 FATAL epstopdf - Source: Libraries\MiKTeX\Core\Stream\FileStream.cpp
2019-12-03 06:29:06,457+0100 FATAL epstopdf - Line: 68

我最近安装并更新了 Miktex 并使用 LuaLatex 进行编译。

如果需要的话,这是 eps 的内容https://pastebin.com/1Rq86vVC

这是怎么回事?我不知道该怎么办。

更新 首先我想用--shell-ecape(来自 TexStudio)进行编译

Process started: lualatex.exe --shell-escape -synctex=1 -interaction=nonstopmode 

我尝试了 Christian Shenk 的建议。命令是

mgs.exe -q -sDEVICE=pdfwrite -dSAFER -dAutoRotatePages=/None -dPDFSETTINGS=/prepress -dMaxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true -sOutputFile=images/kkk-eps-converted-to.pdf - -c quit

我尝试在命令处理器中执行它。它创建了一个 0 字节的 pdf 文件并卡住了。

更新 2

我执行了

epstopdf --outfile=images/kkk-eps-converted-to.pdf images/kkk.eps

我确实得到了额外的信息

Error: /invalidfont in /findfont
Operand stack:
   Helvetica-BoldOblique
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval-
-   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   2015   1   3   %oparray_pop   2014   1   3   %oparray_pop   --nostringval--   1998   1   3   %oparray_pop   1884   1   3   %oparray_pop   --nostringval--   %errorexec_pop   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   1967   1   3   %oparray_pop
Dictionary stack:
   --dict:973/1684(ro)(G)--   --dict:0/20(G)--   --dict:123/200(L)--
Current allocation mode is local

我不知道该如何修复它。它提到了一些关于“Helvetica-BoldOblique”的内容,但图像并没有使用它,而是使用普通的 Helvetica。

答案1

  • 关于-n选项

Christian 建议使用-n选项来了解所使用的命令,例如

epstopdf -n --outfile=images/kkk-eps-converted-to.pdf images/kkk.eps

你得到的是

mgs.exe -q -sDEVICE=pdfwrite -dSAFER -dAutoRotatePages=/None -dPDFSETTINGS=/prepress -dMaxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true -sOutputFile=images/kkk-eps-converted-to.pdf - -c quit

并且由于等待输入文件/流而卡住了(这里吸取了教训:https://github.com/MiKTeX/miktex/issues/393#issuecomment-543080026)。

因此,跑步

mgs.exe -q -sDEVICE=pdfwrite -dSAFER -dAutoRotatePages=/None -dPDFSETTINGS=/prepress -dMaxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true -sOutputFile=images/kkk-eps-converted-to.pdf - -c quit < images/kkk.eps

会做。

  • Error: /invalidfont in /findfont

我猜你没有在 MiKTeX 中安装必要的字体。确保你安装了这里提到的所有软件包https://github.com/MiKTeX/miktex-packaging/issues/112安装并重试。

编辑:我在转换您的文件时没有遇到任何问题。然后我仅卸载了helvetic软件包并得到了您得到的错误:

Error: /invalidfont in /findfont
Operand stack:
   Helvetica-BoldOblique
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   2015   1   3   %oparray_pop   2014   1   3   %oparray_pop   --nostringval--   1998   1   3   %oparray_pop   1884   1   3   %oparray_pop   --nostringval--   %errorexec_pop   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   1967   1   3   %oparray_pop
Dictionary stack:
   --dict:973/1684(ro)(G)--   --dict:0/20(G)--   --dict:123/200(L)--
Current allocation mode is local
Last OS error: No such file or directory
MiKTeX GPL Ghostscript 9.25: Unrecoverable error, exit code 1

Sorry, but "MiKTeX EPS-to-PDF Converter" did not succeed.

The log file hopefully contains the information to get MiKTeX going again:

  C:\Users\user\AppData\Local\MiKTeX\2.9\miktex\log\epstopdf.log

因此,丢失的helvetic包裹是导致问题的根本原因。

我还创建了一个问题(实际上是一个可能的增强建议):https://github.com/MiKTeX/miktex/issues/429

答案2

我解决了这个问题:

步骤1:使用控制面板删除计算机上的整个 MikTeX,删除 C:\ Program files (x86) 中名为 MikTeX 的已删除文件夹后,避免重置时因同名文件夹而出现错误(卸载完成,无需重新启动计算机)

第2步:下面重新安装MikTeX(不需要安装程序编辑器如texstudio,Texmaker,viettex,...),这个错误是由于基础MikTeX

MikTeX文件下载链接:点击这里

下载后解压,安装文件setup-2.8.3553.exe位于MikTeX/setup目录下

步骤3:照常安装文件setup-2.8.3553.exe,记得勾选选择Complete MikTeX来安装完整版本。

使用时注意事项:

注1:申报包裹的顺序按从上至下的顺序排列如下:

  1. \ 使用包 {graphicx}

  2. \ 使用包 {epstopdf}

  3. \ 使用包 {子图}

注2:在运行TeX文件之前,请确保你已经删除了之前运行错误输出的损坏的PDF文件(只留下一个尾部的.eps图像文件)

版权:https://nhcan.wordpress.com/2020/04/05/loi-khi-bien-dich-file-latex-co-hinh-anh-dinh-dang-eps/

答案3

此问题是由于当前 MiKTeX 软件包的一个已知问题造成的。请参阅 https://github.com/MiKTeX/miktex-packaging/issues/112

对我来说可行的一个解决方法是使用 MiKTeX 控制台安装“helvetica”包(以及 Matlab 代码使用的任何其他字体)。

相关内容