我正在尝试将c# idml实现为html转换器。我设法生成了一个类似于indesign导出的单个平面html文件。
我想做的是生成与html idml查看器尽可能相似的html视图的html。要做到这一点,我需要找到适合文本框架的文本,我可以提取故事文本内容,但我真的找不到将这些内容拆分成框架/页面的方法。
有什么方法可以实现吗?
答案 0 :(得分:5)
仅从故事中提取文本是不够的。文本的布局方式由TextFrames
文档中的Spread
控制。每个TextFrame
都有ParentStory
属性,显示从中加载文本的故事,每个框架都有确定布局的尺寸。对于无螺纹的文本框架(即,一个故事<>一帧),这就是你所需要的。
对于线程框架,您需要使用PreviousTextFrame
和NextTextFrame
属性来创建链。 IDML中没有任何内容可以告诉您在线程链中每个帧中有多少文本适合,您需要根据计算的文本维度(或使用暴力试验和错误)自行进行计算。
您可以在主designmap.xml中找到点差:
<idPkg:Spread src="Spreads/Spread_udd.xml" />
传播将包含一个或多个TextFrame节点:
<Spread Self="udd" ...>
<TextFrame Self="uf7" ParentStory="ue5" PreviousTextFrame="n" NextTextFrame="n" ContentType="TextType">...</>
...
</Spread>
反过来会链接到特定的故事:
<Story Self="ue5" AppliedTOCStyle="n" TrackChanges="false" StoryTitle="$ID/" AppliedNamedGrid="n">...</>
(在此示例中,框架没有线程,因此'n'
值。
所有这些都在IDML文档中,您可以在此处找到其他InDesign开发人员文档:http://www.adobe.com/devnet/indesign/documentation.html
答案 1 :(得分:2)
Microsoft和Adobe已经为css命名区域提出了一个新模块,它允许您将flow tekst转换为多个容器。请记住,您永远无法创建与Indesign文档完全相同的html页面。
http://www.w3.org/TR/css3-regions/
目前只有IE10和webkit每晚都支持它:http://caniuse.com/#feat=css-regions