我想实现一个c# idml到html转换器。我设法生成了一个类似于由indesign导出生成的平面html文件。html idml查看器
我想要做的是生成html,将尽可能类似于html idml查看器的indesign视图。要做到这一点,我需要找到适合文本框的文本,我可以提取故事文本内容,但我无法真正找到将这些内容分割成帧/页面的方法。
有什么办法可以达到这个目的吗?
我想实现一个c# idml到html转换器。我设法生成了一个类似于由indesign导出生成的平面html文件。html idml查看器
我想要做的是生成html,将尽可能类似于html idml查看器的indesign视图。要做到这一点,我需要找到适合文本框的文本,我可以提取故事文本内容,但我无法真正找到将这些内容分割成帧/页面的方法。
有什么办法可以达到这个目的吗?
只是从故事中提取文本是不够的。文本的布局方式由Spread
文档中的TextFrames
控制。每个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
微软和Adobe已经提出了对CSS命名的地区,让你可以做人流tekst成多一个新的模块容器。请记住,您永远无法创建看起来完全像Indesign文档的html页面。
http://www.w3.org/TR/css3-regions/
现在只有IE10和WebKit每晚支持:http://caniuse.com/#feat=css-regions
我的主要问题是没有预定义的方式来计算可以放入文本框中的文本。我不认为这个问题的解决方案取决于用来显示提取文本的html元素。我可能是错误的,因为我没有真正考虑过区域的使用。无论如何感谢您的答复 – dp901
感谢您的答复。这正是我目前想要做的。我只是想,也许有一种预定义的方式来计算可以适合我不知道的框架的文本。 – dp901
不,我不知道 - 你可能会发现一些.js来帮助你,但大多数情况下它是你自己的。祝你好运。 – JcFx