ArcPyを介して四角形テキスト要素に改行を挿入すると、オーバーラップが発生しますか?


10

先日、ArcPyのマッピングモジュールを使用して、ArcMapドキュメント内の改行(\ n)で長方形のテキスト要素を編集しようとしたときに問題に遭遇しました。出力は次のようになります。

ここに画像の説明を入力してください

これは、その出力を生成するために使用したコードです。最初の列は、長方形のテキスト要素Text1、Text2、Text3です。2番目の列は、「プレーン」なテキスト要素Text4、Text5、およびText6です。

import os
import arcpy

HomeDir = r"C:\Desktop"
arcpy.env.workspace = HomeDir

CurrentMXD = arcpy.mapping.MapDocument(r"C:\Desktop\TextTest.mxd")
OutputFilename = r"C:\Desktop\TextTest.pdf"
if os.path.exists(OutputFilename):
    os.remove(OutputFilename)

for TextElement in arcpy.mapping.ListLayoutElements(CurrentMXD, "TEXT_ELEMENT"):
    TextElementName = TextElement.name

    String1 = "The quick brown fox jumped over the lazy dog.\nShe sells sea shells by the sea shore."
    String2 = "The quick brown fox \njumped over the lazy dog.\nShe sells sea shells by the sea shore."
    String3 = "The quick brown fox jumped \nover the lazy dog.\nShe sells sea shells by the sea shore."

    if TextElementName == "Text1":
        TextElement.text = String1
    if TextElementName == "Text2":
        TextElement.text = String2 
    if TextElementName == "Text3":
        TextElement.text = String3
    if TextElementName == "Text4":
        TextElement.text = String1
    if TextElementName == "Text5":
        TextElement.text = String2
    if TextElementName == "Text6":
        TextElement.text = String3

arcpy.mapping.ExportToPDF(CurrentMXD, OutputFilename)

これまでのところ、めちゃくちゃになったテキストの存在は、行が折り返すのに十分長いかどうか、および改行の前の行が改行の後の行より長いかどうかに依存するようです。

何がうまくいかないのかについてのアイデアはありますか?回避策はありますか?プレーンテキスト要素を使用し、Pythonを使用して行を折り返すことを心配することもできますが、何かを理解できると期待しています。


1
最新のサービスパックがインストールされていますか?
Jason Scheirer、2011年

回答:


10

私もこれに遭遇しました。これは、ArcGISがキャリッジリターンとラインフィードの両方であるWindowsの行末を必要とするためです。ちょっとした痛み。幸い、移動は簡単です。Pythonでは、単なる\n(これは改行です。詳しくは、Pythonのドキュメントを参照してください)ではなく、を使用してください\r\n


2

textwrapモジュールを使用する方が簡単だと思います。

Pythonラベル式:

def FindLabel ( [LEGAL1]  ):
  import textwrap
  return '\r\n'.join(textwrap.wrap([LEGAL1], 20)) #charcter width set at 20

結果のラベルには、選択した文字幅で改行が分割されます。

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.