abenori / TeX2img

Converte TeX source to images.
Other
59 stars 5 forks source link

TeX2img の PDF からの画像化がウイルスバスタークラウドにブロックされる #1

Closed aminophen closed 8 years ago

aminophen commented 8 years ago

Mac 版の Issue の脱線から飛んできました。

TeX2img の PDF からの画像変換処理中に3回に1回くらいウイルスバスターにブロックされるので、不思議に思って調べています。これはソース埋め込み有無や出力形式によらず、特にアウトライン化を経る場合に落ちやすくなっています。

「ウイルスバスタークラウド10」をインストールしたのですが、そのあとから「ソース埋め込み」のときに時々ブロックされて、TeX2img のプロセスが落とされるという現象に見舞われました。

クラウド10になったときから、ファイルの変更監視が厳しくなったのだと思っています。現在のベータ版の EMF 出力を例に調べると、最初の pdfTeX 実行が終わった直後に高確率で落ちます。

「安全ではない可能性があるプログラムがファイルを変更、または暗号化しました。安全のためプログラムを停止します。このプログラムが変更した次のファイルを復元できません。」

  • プログラム:tex2img.exe
  • 変更されたファイル:PDF ファイルの名前が3つ並ぶ

3回に2回くらいは正常に処理終了するのが不思議なのですが、その場合の一時ファイルを照らし合わせてみると、どうやら TeX2img の処理中に一時ファイルをどんどん上書きするのが原因だと思います。

aminophen commented 8 years ago

以下は「入力:テキスト保持 PDF、出力:アウトライン化 EMF」の場合(gs9.10 使用)で調べています。 EMF ファイルが正常に生成した場合、最終的に残る一時ファイルは

です。これを内部処理と照らし合わせると、5t0tqaxy.pdf がどんどん上書きされて次へ進んでいることに気づきました。たぶんそこでブロックされているようです。

まず 5t0tqaxy.pdf の bbox 取得。

C:\Temp>"C:\gs\gs9.10\bin\gswin32c.exe" -q -dBATCH -dNOPAUSE -sDEVICE=bbox -dFirstPage=1 -dLastPage=1 "5t0tqaxy.pdf"
%%BoundingBox: 82 66 300 725
%%HiResBoundingBox: 82.763997 66.761998 299.303991 724.211978

次に nsvzaeko.pdf をとりこんで l3mhsekm.pdf をつくるはず…だがそのファイルは最後には見えないので、リネームされて 5t0tqaxy.pdf になっている。

C:\Temp>"C:\w32tex\bin\pdftex.exe" -no-shell-escape -interaction=nonstopmode "l3mhsekm.tex"
This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2016/W32TeX/dev) (preloaded format=pdftex)
entering extended mode
(./l3mhsekm.tex [1 <./nsvzaeko.pdf{c:/w32tex/share/texmf-dist/fonts/map/pdftex/
updmap/pdftex.map}>] )<c:/w32tex/share/texmf-dist/fonts/type1/public/amsfonts/c
m/cmr10.pfb>
Output written on l3mhsekm.pdf (1 page, 37277 bytes).
Transcript written on l3mhsekm.log.

5t0tqaxy.pdf を“PDF ロンダリング”して z00lzv3j.pdf へ。

C:\Temp>"C:\gs\gs9.10\bin\gswin32c.exe" -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dAutoRotatePages=/None -r432 -dNOCACHE -dFirstPage=1 -dLastPage=1 -sOutputFile="z00lzv3j.pdf" -c ".setpdfwrite" -f "5t0tqaxy.pdf"
GPL Ghostscript 9.10 (2013-08-30)
Copyright (C) 2013 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 1.
Page 1

“PDF ロンダリング”後の z00lzv3j.pdf を epswrite でアウトライン化して 5t0tqaxy-1.eps へ。

C:\Temp>"C:\gs\gs9.10\bin\gswin32c.exe" -dNOPAUSE -dBATCH -sDEVICE=epswrite -dFirstPage=1 -dLastPage=1 -dNOCACHE -dEPSCrop -sOutputFile="5t0tqaxy-1.eps" -r432 "z00lzv3j.pdf"
GPL Ghostscript 9.10 (2013-08-30)
Copyright (C) 2013 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 1.
Page 1

5t0tqaxy-1.eps を(rewriteBB してから)5t0tqaxy.pdf へ:また上書き。

C:\Temp>"C:\gs\gs9.10\bin\gswin32c.exe" -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dAutoRotatePages=/None -r432 -dEPSCrop -sOutputFile="5t0tqaxy.pdf" -c ".setpdfwrite" -f "5t0tqaxy-1.eps"
GPL Ghostscript 9.10 (2013-08-30)
Copyright (C) 2013 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.

log1aehc.pdf を破線分割して 5t0tqaxy.pdf へ:また上書き。

C:\Temp>"C:\gs\gs9.10\bin\gswin32c.exe" -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dAutoRotatePages=/None -sOutputFile="5t0tqaxy.pdf" -c ".setpdfwrite /oldstroke /stroke load def /stroke {.dashpath [] 0 setdash oldstroke} def" -f "log1aehc.pdf"
GPL Ghostscript 9.10 (2013-08-30)
Copyright (C) 2013 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 1.
Page 1

5t0tqaxy.pdf を pdfiumdraw で EMF へ。

C:\Temp>"C:\test\TeX2img\pdfiumdraw.exe" --scale=10 --extent=5 --emf --transparent --pages=1 --output="5t0tqaxy-%d.emf" "5t0tqaxy.pdf"
output: C:\Temp\5t0tqaxy-1.emf
abenori commented 8 years ago

後で見てみますが,確かに上書き処理をしたりしているところがいくつかあった気がします.極力新しいファイルにするようにやってみます.(しかし「ファイルを何度も上書きしているからウイルス」とかどんだけ有用なんだろうか……)

aminophen commented 8 years ago

「pdfTeX でコンパイルしてでてきたファイルをリネーム(移動)して結果的にファイルを上書き」のような処理がどうも駄目なようで、ほかはすんなり通るようにも見えます。子プロセスが上書きした場合「gswin32c.exe をブロックした」という表示が出そうな気がしますが、これは手元では出てきません。常にブロックされるのは tex2img.exe みたいです。

abenori commented 8 years ago

TeX2imgが呼び出したプログラムが上書きするということは(たぶん)ないようにしていると思います.たとえばpdftexでA.pdfをサイズ調整する場合は,A.pdfをtmp.pdfにリネームして,pdfprocをかけてできたファイルをA.pdfにリネームしています.gsver<9.15のemf変換では,そういうことを三回しているみたいですので,それが原因なんですかねぇ.しかしこれをやめるとなると結構見通しの悪い感じになりそうなので,少し考えます.

abenori commented 8 years ago

https://onedrive.live.com/redir?resid=4FABCB4EC4FA1E70!16825&authkey=!ANYoMX5Yq7PLXU4&ithint=folder%2cexe

削除/移動を減らしてみました.これで改善するでしょうか?

aminophen commented 8 years ago

20回くらい試しましたが、いまのところブロックされていません。たぶん改善していると思います。

あ、設定画面のタブが減っているので、その変更前のものに戻ったっぽい?

abenori commented 8 years ago

ちょっと使ってみてください.という感じでしょうかね.

あ、設定画面のタブが減っているので、その変更前のものに戻ったっぽい?

なんか変ですね.もう一度あげてみました.