【问题标题】:Preserving columns with HTML::TextToHTML使用 HTML::TextToHTML 保留列
【发布时间】:2018-05-17 06:25:01
【问题描述】:

我有一个使用 HTML::TextToHTML 将文本转换为 HTML 的 Perl 脚本

有些原文有准表,因为它们的对齐很重要。

例如

Job no Description               Completed
15     Paving from NE 32 to 45th  11-01-17

现在我正在使用此代码

use HTML::TextToHTML;

my $conv = new HTML::TextToHTML();

if ( $HTML eq 'Y' ) { # convert entire body to HTML                                                                                  

    $body = $conv->process_chunk($body);
}

但是上面的代码在某些电子邮件客户端上经常会丢失适当的间距。

HTML::TextToHTML 中是否有办法保留行的宽度及其对齐方式?

【问题讨论】:

    标签: html css perl


    【解决方案1】:

    你不会比设置做得更好

    make_tables => 1
    

    在构造函数中,并可能设置

    table_type => { ALIGN => 1, PGSQL => 0, BORDER => 0, DELIM => 0 }
    

    这会将被两个或多个空格分隔的单词拆分为表格的列

    但您可能需要稍微编辑原始文本文件才能获得最佳效果。例如,您的列标题将是 Job no Description 和 Completed,因为在 Job no 之后只有一个空格

    【讨论】:

    • 据我所知,这似乎是人们希望在 TextToHTML 的约束内工作的最佳答案,尽管对齐方式仍然不适合我。我要去探索 Emaill::Template 以尝试创建更好看的 html 电子邮件。
    • @gatorreina: Email::Template 远不如HTML::TextToHTML 聪明,主要是关于实际发送邮件。我怀疑你是否会得到比后者更好的解决方案来从随机文本中猜测 HTML 标记。除非您的文字表现得非常好,否则这是一项不可能完成的任务。
    • Itunes 收据之类的电子邮件是如何做到的呢?他们只是将文本文件转换为 HTML 吗?
    • @gatorreina:我对 iTunes 一无所知,但如果您说的是从 Apple 接收电子邮件收据,那么他们将拥有创建 HTML 表单的软件的收据。这当然不是创建文本文件并通过翻译算法推送它的问题。
    • 如果您的可能表范围相当有限,那么您可以编写一些 Perl 来为行添加更精确的分隔符,然后使用 DELIM 表类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 2021-01-24
    相关资源
    最近更新 更多