题
我需要一个普通的文本表示的任意HTML文件(例如,博员额)。迄今为止这不是一个问题,有几十个HTML txt转换器。然而,本案文在第(阅读"p
元件")应被理由的明文图(一定量的列),如果可能的话,连得到一个更好的可读的结果。此外,所得文本文件必须UTF-8或UTF-16.
简单纯文本的谈话我可以做XSLT,这是近来微不足道的。但正当理由的案文是超越了它的可能性(不完全正确的,因为XSLT是图灵完成,但足够接近现实).
FOP 和XSL-FO不能工作。他们这样做要求,但FOP的纯文本输出是可怕(开发人员说,它不适用于这种用法).
我还尝试与HTML>XSLT->特殊,但我坚持与格罗夫和其Unicode支持远远不是最佳的。因为有人物,如椭圆("...")和排版的正确quotaion标,这是相当麻烦告诉格罗夫在XSLT样式表的逃序列数十Unicode符。
另一种方式可以转换为特克斯和输出为纯文本,但我从来没有尝试过这之前与(La)TeX。
也许我已经错过了一些东西真的很简单。有人一个想法,我怎么可能实现上述?顺便说一句:一个解决方案应最好的工作没有根本的权利安装,用PHP,蟒蛇,Perl,XSLT或任何程序中发现的一半体面的Linux发行版的.
解决方案
尝试的Python。使用 BeautifulSoup 解析HTML。的 textwrap模块将允许你的文本格式。
有两个特征缺失,虽然。为了证明文本,你需要空间添加到每个行,但不应该是一个大问题(见的此代码示例)。
有关连字符,尝试这个项目。
其他提示
如果您熟悉的Emacs,你可以打开HTML文件的Emacs W3M (即M-x w3m-find-file foo.html
),所呈现的页面保存为纯文本文件,然后在其上调用M-x set-justification-full
。
您甚至可以编写一个小功能来完成这项工作:
(defun my-html-to-justifed-text (html-file text-file)
"Convert HTML-FILE to plain TEXT-FILE."
(find-file html-file)
(w3m-rendering-buffer)
(set-justification-full (point-min) (point-max))
(write-file text-file))
(my-html-to-justifed-text "~/tmp/2.html" "~/tmp/2.txt")