【问题标题】:Position text inside rectangle在矩形内定位文本
【发布时间】:2013-09-12 13:46:45
【问题描述】:

我们有一个 web 应用程序,我们在其中为我们举办的活动绘制地图,现在我们正在尝试将保存到我们数据库中的数据导入到 indesign 中,以便能够从那里进行编辑和打印。

webversion 地图如下所示:

我用于此 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 中。

结果如下:

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

提前致谢,

【问题讨论】:

    标签: xml adobe-indesign idml


    【解决方案1】:

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

    定义段落样式

    首先,您必须声明一个“段落样式”(在概念上类似于 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="[Story 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 值将低于插入点。作为参考,单位默认为点,即 1" = 72pts。
    我还注意到您的网页版本有不同的颜色,您可以在此处应用这些颜色,方法是在打开 Document 标记之后添加其他颜色定义,然后将适当的颜色名称分配给 FillColor="[颜色名称]@987654330 TextFrame 元素的 @ 部分。
    您可以在Spread 标记之间添加任意数量的TextFrame 元素,然后在关闭/Spread 之后,开始定义进入每一帧的文本。

    在框中添加文本

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

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

    所有故事结束后,您可以使用/Document 关闭文档。

    示例

    包含 3 个不同帧的完整文件示例,每个帧都有自己的文本,如下所示:this pastebin

    【讨论】:

    • 非常感谢!这是完美的,将帮助我加载!
    猜你喜欢
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多