使用 elinks -remote 选项显示 pdftohtml 输出?

使用 elinks -remote 选项显示 pdftohtml 输出?

以下命令非常适合从命令行查看 pdf 内容:pdftohtml -i -stdout file.pdf |elinks。应该清楚的是,发生的情况是 file.pdf 被转换为 html,然后通过管道传输到文本模式浏览器elinks进行显示。

但我希望做的是对此略有不同。我想使用elinks'-remote开关将pdftohtml命令的输出发送到已运行的elinks.其工作方式如下,使用 URL 而不是命令的输出作为示例:elinks在一个终端中启动,然后像在另一个终端中一样运行命令elinks -remote www.google.com,将导致在正在运行的elinks实例中打开一个新选项卡,显示谷歌搜索页面。

到目前为止,我还无法获得这样的命令来处理pdftohtml命令的输出。最直接的方法似乎是pdftohtml -i -stdout file.pdf |elinks -remote。但根据我迄今为止的实验,这不起作用,因为 -remote 开关显然需要提供 URL 或文件名(“无法解析选项 -remote:预期参数”)。

所以我的问题是是否有某种方法可以动态“馈送” pdftohtmlto的输出?elinks -remote意见将不胜感激。

到目前为止尝试过的事情

我想也许命名管道可以在这里提供帮助,但该选项不起作用。尽管类似的事情pdftohtml -i file.pdf my-pipe && elinks <my_pipe成功了,但当我添加 -remote 开关时,它失败了。

到目前为止,我已经接近我的目标的拼凑是

pdftohtml -i file.pdf /tmp/pdf.html && elinks -remote /tmp/pdf.html && elinks -remote "reload()"

这会在 /tmp 目录中创建一个过渡文件,该文件被证明可以接受 -remote 开关。需要重新加载页面,以便不会显示浏览器之前可能缓存的任何其他过渡打开页面/文件。这并不是一个很好的解决方案,因为当我尝试重新加载之前可能已打开过渡页面/文件的任何其他选项卡时,将加载该页面/文件的最新副本,而不是之前打开的副本。

解决?

再加上进一步的拼凑,这里有一个带注释的 bash 脚本(我称之为 pdf2elinks),我利用自己作为互联网搜索者的微薄能力和作为精英复制/粘贴者的专业知识拼凑而成,解决了pdftohtml由被后续文件覆盖,因此在充分审查之前丢失。显而易见,我决定为转换后的过渡 html 文件分配数字而不是名称,这将提供一种自动分配唯一名称的方法。还可以清楚的是,如果系统未设置为/tmp在重新启动时自动清除目录内容,则需要cron定期清空正在写入过渡 html 文件的目录(例如,通过使用脚本)。

#!/bin/bash
# use: pdf2elinks [filename]
# read the name of the pdf supplied to this script into a variable
pdfname=$1
# test whether the target directory is empty and, if it is, convert the supplied pdf under the name 1.html
if [ ! "$(ls -A /tmp/pdfs2html)" ]; then
pdftohtml -i $pdfname /tmp/pdfs2html/1.html && elinks -remote /tmp/pdfs2html/1.html
else
# if the directory is not empty, find the highest numbered file in /tmp/pdfs2html
number=`ls /tmp/pdfs2html/ | sed 's/\([0-9]\+\).*/\1/g' | sort -n | tail -1`
# increment by one the highest numbered file found
numberplus=`echo "$number +1" | bc`
pdftohtml -i $pdfname /tmp/pdfs2html/$numberplus.html && elinks -remote /tmp/pdfs2html/$numberplus.html
fi

最后,这个尝试用作elinks寻呼机的项目的灵感来自于这个页面: http://www.pocketnix.org/posts/Life%20on%20the%20command%20line%3A%20Day%20To%20Day%20Console。与该作者一样,我经常在运行的 ssh 会话中通过命令行与我的一台计算机进行交互tmux。其中一个选项卡将始终elinks在其中运行,它将充当一个窗口,我可以在其中打开电子邮件附件(例如 pdf)、阅读手册页或只是打开网页。上面脚本的路径已添加到我的 .mailcap 条目中,用于处理 pdf,并且似乎可以很好地执行其功能。

我欢迎提出意见、建议、改进和/或更正。我不抱任何幻想,认为我已经找到了我试图解决的问题的最佳解决方案,甚至我已经很好地理解了哪些问题真正处于危险之中。

相关内容