如何将html混合降价转换为html / docx / pdf?

问题描述 投票:0回答:1

我正在azure devops Wiki中工作,以创建规范和其他软件文档。

我必须创建表,并详细创建一些项目符号列表。有可能在github风格的markdown中(完全在azure devops中):

#header1

|TableHeader1|TableHeader2|
|--|--|
|Text1|Details 1|
|ListCell|<ul><li>FirstBullet</li><li>SecondBullet</li></ul>|

Html output screenshot

我先尝试使用pandoc,但是列表从表中消失了。任何想法转换为html / docx吗?

关于,安德拉斯

list markdown pandoc
1个回答
0
投票

您可能不会。作为Pandoc文档warns

因为pandoc对文档的中间表示较少比它所转换的许多格式更具表现力,不要期望每种格式之间都能完美转换。Pandoc尝试保留文档的结构元素,但是不格式化诸如边距大小之类的详细信息。还有一些文件元素(例如复杂表格)可能不适合pandoc的简单元素文档模型。从Pandoc的Markdown到所有格式追求完美,将格式转换成更具表现力的格式比pandoc的Markdown可能有损。

HTML当然比Markdown更具表现力。因此,Pandoc不保证将保留HTML源。就是说,一个简单的列表可以在Markdown中很好地表达,所以人们会认为这不会有损失。

但是,表格使事情变得复杂。 Pandoc实际上支持四种不同的表格格式。但是,这些格式中只有两种格式(multi-linegrid表)支持包含块级元素的单元格。

但是,您似乎正在使用pipe_tables,它[支持表单元格中的块级元素。如文档所述:

管道表的单元格不能包含段落和列表之类的块元素,并且不能跨越多行。

尽管Pandoc的markdown格式支持上述所有扩展名(表格式),但pipe_tables格式仅支持gfm(请参阅Markdown Variants)。因此,您可以考虑使用markdown格式。但是,只有在您的表实际上对网格或多行表使用正确的语法的情况下,这才有帮助。

遗憾的是Pandoc仅支持表格和多行表格。我不知道其他支持它们的Markdown实现。因此,在Pandoc和其他实现中,您都无法解析具有块级元素的表。

因此,您正在使用的其他实现与表单元格中的原始HTML列表一起使用也能正常工作吗?大概解析器不是很聪明,并且会盲目地通过原始HTML来传递原始HTML。试图理解原始HTML的任何更复杂的解析器都将对您不起作用。并且,当然,如果您想将文档转换为另一种(非HTML)格式,则解析器需要理解原始HTML。

也许您可以找到一些随机解析器来满足您的需求,但是这种可能性不大。更好的解决方案可能是采用其他Markdown工具的HTML输出,然后使用Pandoc(或其他工具)将其转换为docx / pdf。

© www.soinside.com 2019 - 2024. All rights reserved.