解决方案在最后一条评论中,但以防万一有人在寻找解决方法,我在这里总结了它:http: //sourceforge.net/mailarchive/message.php ?msg_id=30391589
我设法用 MinGW 和当前稳定的 GhostScript (9.06)构建了 GSDjVu 。将 Bash 脚本转换为 CMD 的任务并不难,但令我惊讶的是gsdjvu
(带有 gsdjvu 驱动程序的 gs 解释器)没有按预期接受 PDF 输入。它只接受 PostScript。为了避免编写巨大的临时文件,我想创建一个管道,下面是示例:
set args=-sstdout=nul -dSAFER -dNOPAUSE -dBATCH
gs %args% -sDEVICE=pswrite -sOutputFile=- test.pdf |^
gsdjvu %args% -sDEVICE=djvusep -sOutputFile=- - |^
csepdjvu - test.djvu
导致错误:
*** csepdjvu: corrupted input file (lost RLE sync.)
*** (..\..\..\tools\csepdjvu.cpp:647)
Internal error at ./base/gdevdjvu.c:2831
如果我将结果输出gsdjvu
到文件而不是管道,则没有错误:
gs %args% -sDEVICE=pswrite -sOutputFile=- test.pdf |^
gsdjvu %args% -sDEVICE=djvusep -sOutputFile=test.sep -
csepdjvu test.sep test.djvu
现在,如果我比较(test.sep)的文件输出gsdjvu
和相同(test2.sep)的管道输出:
gs %args% -sDEVICE=pswrite -sOutputFile=- test.pdf |^
gsdjvu %args% -sDEVICE=djvusep -sOutputFile=- - > test2.sep
我得到了这个差异:
经过简单的分析后发现,0A
在管道输出中表示为0D0A
,或者“行尾”从 Unix LF 更改为 Windows CRLF。
为什么会这样,有办法补救吗?
或者它可能是一个错误?