将文本放在矩形内

时间:2013-09-12 13:46:46

标签: xml adobe-indesign idml

我们有一个webapp,我们为我们托管的事件绘制地图,现在我们正在尝试将数据保存到我们的数据库中,以便能够从那里进行编辑和打印。

webversion地图如下所示: enter image description here

我为此atm使用的代码是    <Rectangle Self="u133" StrokeWeight="0.1" FillColor="Color/u13b" strokecolor="Color/white" ItemTransform="12 0 0 8 180 60">

完整版本在这里:http://nieuws.holapress.com/plattegrond/xml/stands.php?hal=1我将此保存为idms,然后将其置于indesign中。

结果如下: enter image description here

这是完美的,但现在我遇到了问题,我们需要在每个盒子里面的数字,我似乎无法让它正常工作,有谁知道我将如何能够在每个框中获取文本并将其对齐为在中间?

提前致谢,

1 个答案:

答案 0 :(得分:3)

我担心解决方案需要更多代码,希望这是您可以调整的代码,以便正确地为您格式化代码。 我相信最好的方法是将矩形更改为“文本框架”,以便它们可以包含文本,并且可以根据矩形/文本框架边界对齐文本。

定义段落样式

首先,你必须声明一个“段落样式”(在概念上类似于CSS),以便你希望如何格式化每个框中的文本(字体,大小,颜色等):

<RootParagraphStyleGroup Self="myPara">
    <ParagraphStyle Self="ParagraphStyle/myParaStyle" Name="myParaStyle" FillColor="Color/Paper" PointSize="14" Justification="CenterAlign">
        <Properties>
            <AppliedFont type="string">Arial</AppliedFont>
        </Properties>
    </ParagraphStyle>
</RootParagraphStyleGroup>

创建框

接下来,您必须声明所有帧以及声明一种ID ParentStory=" [故事ID] "为哪个文本(我们稍后会定义实际文本) )将插入此框架中:

<Spread Self="sp1">
    <TextFrame Self="tf1" ParentStory="st1" ContentType="TextType" FillColor="Color/u13b" StrokeWeight="0" StrokeColor="Swatch/None" ItemTransform="1 0 0 1 0 0">
        <Properties>
            <PathGeometry>
                <GeometryPathType PathOpen="false">
                    <PathPointArray>
                        <PathPointType Anchor="0 0" LeftDirection="0 0" RightDirection="0 0" />
                        <PathPointType Anchor="0 50" LeftDirection="0 50" RightDirection="0 50" />
                        <PathPointType Anchor="150 50" LeftDirection="150 50" RightDirection="150 50" />
                        <PathPointType Anchor="150 0" LeftDirection="150 0" RightDirection="150 0" />
                    </PathPointArray>
                </GeometryPathType>
            </PathGeometry>
        </Properties>
        <TextFramePreference VerticalJustification="CenterAlign"></TextFramePreference>
    </TextFrame>
</Spread>

我注意到你看起来像是使用ItemTransform关键字来调整矩形的大小,但我建议不要这样做,因为它也会转换框架内的文本(会扭曲字符)。相反,您需要通过提供每个框的四个角相对于单个插入点(将IDMS文件放入InDesign文档时单击的点)的坐标来定义每个框 - 我建议选择上部整个地图的最左角,并使用相对于该位置的每个文本框架的坐标 - 在这种情况下,正Y值将低于插入点。作为参考,单位默认为Points,转换为1“= 72pts。
我还注意到您的网络版本有不同的颜色,您可以在打开Document标记后添加其他颜色定义,然后将相应颜色的名称指定给FillColor=" [颜色名称"元素的TextFrame部分。
您可以在TextFrame标记之间添加任意数量的Spread元素,然后在关闭/Spread后,开始定义进入每个框架的文本。

在框中添加文字

确保通过指定Story Self=" [故事ID] "来确定每个“故事”,以匹配您在上述ParentStory中分配给TextFrame的内容:

<Story Self="st1">
    <ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/myParaStyle">
        <Content>1st Text Box</Content>
    </ParagraphStyleRange>
</Story>

在完成所有故事之后,您可以使用/Document关闭文档。

样品

包含3个不同帧的完整文件样本,每个帧都有自己的文本,看起来像this pastebin Sample of imported IDML