سؤال

وأنا في حاجة الى تمثيل نص عادي من ملف HTML التعسفي (على سبيل المثال، بلوق وظيفة). وحتى الآن هذا ليس مشكلة، وهناك العشرات من HTML إلى TXT المحولات. ومع ذلك، فإن النص في الفقرتين (اقرأ "عناصر p") يجب أن يكون له ما يبرره في نظر نص عادي (لقدر معين من الأعمدة)، وإذا كان ذلك ممكنا، الواصلة لإعطاء نتيجة أفضل للقراءة. أيضا، يجب أن يكون الملف النص الناتج UTF-8 أو UTF-16.

وبسيطة محادثة نص عادي يمكن أن أفعله مع XSLT، وهذا بالقرب من تافهة. لكن تبرير النص هو أبعد من إمكانياتها (ليس صحيحا تماما، لأن XSLT هو تورينج كاملة، ولكن قريب بما فيه الكفاية للواقع).

FOP و XSL-FO لا تعمل إما. يفعلون كما هو مطلوب، ولكن إخراج نص عادي FOP هو الرهيبة (ويقول للمطورين، التي لا يراد لهذا الاستخدام).

وأنا أيضا جربت HTML -> XSLT -> Roff، ولكن أنا عالقة مع جروف ودعم Unicode الخاص به لا يزال بعيدا عن المثالية. وبما أن هناك شخصيات مثل الحذف ( "...") وعلامات QUOTAION تصحيح طباعي، فمن مرهقة جدا أن أقول جروف في ورقة أنماط XSLT تسلسل هروب لعشرات من أحرف Unicode.

وهناك طريقة أخرى يمكن أن يكون التحويل إلى تكس والإخراج كنص عادي، ولكن لم يسبق لي أن جربت هذا من قبل مع (لا) تكس.

وربما كنت قد غاب عن شيء بسيط حقا. وقد أي شخص فكرة، كيف يمكن تحقيق ما ورد أعلاه؟ بالمناسبة: يجب حل يفضل أن يعمل بدون حقوق الجذر التركيب، مع PHP، بيثون، بيرل، XSLT أو أي برنامج موجود في توزيعة لينكس نصف لائق

.
هل كانت مفيدة؟

المحلول

وحاول بيثون. استخدام BeautifulSoup لتحليل HTML. و textwrap حدة تسمح لك لتنسيق النص.

وهناك نوعان من الميزات في عداد المفقودين، على الرغم من. لتبرير النص، سوف تحتاج إلى إضافة مسافات للكل سطر ولكن هذا لا ينبغي أن يكون مشكلة كبيرة (انظر <لأ href = "http://code.activestate.com/recipes/414870/" يختلط = "نوفولو noreferrer "> هذا المثال رمز ).

لالواصلة، حاول هذا المشروع .

نصائح أخرى

إذا كنت معتادا على إيماكس، قد فتح ملف HTML في إيماكس-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")

روابط أو <وأ href = "http://lynx.isc.org/" يختلط = "نوفولو noreferrer"> الوشق قد يكون من المفيد محاولة، راجع التبديل -dump. الجزء ترميز ثم يمكنك حلها بسهولة بشكل منفصل باستخدام يكونف أو شيئا من هذا القبيل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top