我需要任意HTML文件的纯文本表示(例如,博客文章)。到目前为止,这不是一个问题,有几十个HTML到TXT转换器。但是,段落中的文本(读作“p
元素”)应该在纯文本视图中证明(到一定数量的列),并且如果可能的话,用连字符来提供更好的可读结果。此外,生成的文本文件必须是UTF-8或UTF-16。
简单的纯文本对话我可以用XSLT做,这几乎是微不足道的。但是文本的合理性超出了它的可能性(不完全正确,因为XSLT是图灵完整的,但足够接近现实)。
FOP和XSL-FO也不起作用。他们按照要求做了,但FOP的纯文本输出很糟糕(开发人员说,它不适合这种用法)。
我还试验过HTML - > XSLT - > Roff,但我坚持使用groff,它的Unicode支持远非最佳。由于存在像椭圆(“...”)和印刷正确的配额标记这样的字符,因此在XSLT样式表中告诉groff几十个Unicode字符的转义序列是非常麻烦的。
另一种方法可能是转换为TeX并输出为纯文本,但我以前从未尝试使用(La)TeX。
也许我错过了一些非常简单的事情。有谁有想法,我怎么能实现上述目标?顺便说一句:一个解决方案应该最好在没有root权限的情况下安装,使用PHP,Python,Perl,XSLT或者在一个不太合适的Linux发行版中找到的任何程序。
答案 0 :(得分:4)
试试Python。使用BeautifulSoup来解析HTML。 textwrap module将允许您格式化文本。
但是缺少两个功能。要证明文本的合理性,您需要为每一行添加空格,但这不应该是一个大问题(请参阅this code example)。
对于连字符,请尝试this project。
答案 1 :(得分:2)
如果您熟悉Emacs,可以在Emacs-W3M中打开HTML文件(即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")
答案 2 :(得分:0)