質問

任意の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でこれを試したことはありません。

たぶん、私は本当に簡単なものを見逃しました。誰もアイデアを持っていますか、私は上記をどのように達成できますか?ところで:ソリューションは、PHP、Python、Perl、XSLT、またはまともなLinuxディストリビューションにあるプログラムを使用して、インストールするルート権限なしで動作することが望ましいです。

役に立ちましたか?

解決

Pythonを試してください。 BeautifulSoup を使用してHTMLを解析します。 textwrapモジュールを使用すると、テキストをフォーマットできます。

ただし、2つの機能が欠落しています。テキストを正当化するには、各行にスペースを追加する必要がありますが、それは大きな問題ではありません(このコード例)。

ハイフネーションについては、このプロジェクトをお試しください。

他のヒント

Emacsに精通している場合は、 Emacs-W3M でHTMLファイルを開くことができます(すなわち Mx w3m-find-file foo.html )、レンダリングされたページをプレーンテキストファイルとして保存し、その上で Mx 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")

リンクまたは lynx は試してみる価値があるかもしれません。 -dump スイッチをご覧ください。エンコード部分は、 iconv などを使用して簡単に個別に解決できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top