עבודה עם Shapes

נושא זה דן כיצד לעבוד באופן מתודולוגי עם צורות באמצעות Aspose.Words.

הצורות Aspose.Words מייצג אובייקט בשכבת הציור, כגון AutoShape, תיבת טקסט, freeform, OLE object, ActiveX Control או תמונה. מסמך Word יכול להכיל צורות שונות או יותר. צורות המסמך מיוצגות על ידי Shape מעמד.

המונחים: shapes Using Document Builder

באפשרותך להוסיף טופס inline עם סוג וגודל מוגדר וצורה חופשית עם המיקום שצוין, גודל וטקסט עטופה סוג לתוך מסמך באמצעות מסמך באמצעות שימוש insert_shape שיטה. The The The insert_shape שיטה מאפשרת הוספת צורת DML למודל המסמך. יש לשמור את המסמך בפורמט, אשר תומך בצורות DML, אחרת, נקודות כאלה יומרו לצורת VML, תוך שמירת מסמכים.

לדוגמה הקוד הבא מראה כיצד להכניס סוגים אלה של צורות לתוך המסמך:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_shape(aw.drawing.ShapeType.TEXT_BOX, aw.drawing.RelativeHorizontalPosition.PAGE, 100,
aw.drawing.RelativeVerticalPosition.PAGE, 100, 50, 50, aw.drawing.WrapType.NONE)
shape.rotation = 30.0
builder.writeln()
shape = builder.insert_shape(aw.drawing.ShapeType.TEXT_BOX, 50, 50)
shape.rotation = 30.0
saveOptions = aw.saving.OoxmlSaveOptions(aw.SaveFormat.DOCX)
saveOptions.compliance = aw.saving.OoxmlCompliance.ISO29500_2008_TRANSITIONAL
doc.save(docs_base.artifacts_dir + "WorkingWithShapes.insert_shape.docx", saveOptions)

תגית: Aspect Ratio Locked

שימוש Aspose.Words, אתה יכול לציין אם יחס האספקט של הצורה נעול דרך aspect_ratio_locked רכוש.

דוגמה לקוד הבא מראה כיצד לעבוד עם AspectRatioLocked רכוש:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_image(docs_base.images_dir + "Transparent background logo.png")
shape.aspect_ratio_locked = False
doc.save(docs_base.artifacts_dir + "WorkingWithShapes.aspect_ratio_locked.docx")

המונחים: shape Layout in Cell

אתה יכול גם לציין אם הצורה מוצגת בתוך שולחן או בחוץ באמצעות זה. is_layout_in_cell רכוש.

דוגמה לקוד הבא מראה כיצד לעבוד עם IsLayoutInCell רכוש:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.start_table()
builder.row_format.height = 100
builder.row_format.height_rule = aw.HeightRule.EXACTLY
for i in range(0, 31) :
if (i != 0 and i % 7 == 0) :
builder.end_row()
builder.insert_cell()
builder.write("Cell contents")
builder.end_table()
watermark = aw.drawing.Shape(doc, aw.drawing.ShapeType.TEXT_PLAIN_TEXT)
watermark.relative_horizontal_position = aw.drawing.RelativeHorizontalPosition.PAGE
watermark.relative_vertical_position = aw.drawing.RelativeVerticalPosition.PAGE
watermark.is_layout_in_cell = True # Display the shape outside of the table cell if it will be placed into a cell.
watermark.width = 300
watermark.height = 70
watermark.horizontal_alignment = aw.drawing.HorizontalAlignment.CENTER
watermark.vertical_alignment = aw.drawing.VerticalAlignment.CENTER
watermark.rotation = -40
watermark.fill_color = drawing.Color.gray
watermark.stroke_color = drawing.Color.gray
watermark.text_path.text = "watermarkText"
watermark.text_path.font_family = "Arial"
watermark.name = "WaterMark_" + str(uuid.uuid4())
watermark.wrap_type = aw.drawing.WrapType.NONE
run = doc.get_child_nodes(aw.NodeType.RUN, True)[doc.get_child_nodes(aw.NodeType.RUN, True).count - 1].as_run()
builder.move_to(run)
builder.insert_node(watermark)
doc.compatibility_options.optimize_for(aw.settings.MsWordVersion.WORD2010)
doc.save(docs_base.artifacts_dir + "WorkingWithShapes.layout_in_cell.docx")

תגית: Snip Corner Rectangle

אתה יכול ליצור מלבן פינה נופי באמצעות Aspose.Words. סוגי הצורה הם SINGLE_CORNER_SNIPPED, TOP_CORNERS_SNIPPED, DIAGONAL_CORNERS_SNIPPED, TOP_CORNERS_ONE_ROUNDED_ONE_SNIPPED, SINGLE_CORNER_ROUNDED, TOP_CORNERS_ROUNDED, ו DIAGONAL_CORNERS_ROUNDED.

צורת DML נוצרת באמצעות insert_shape שיטה עם צורות אלה. סוגים אלה אינם יכולים לשמש ליצירת צורות VML. ניסיון ליצור צורה באמצעות בניית הציבור של Shape הכיתה מעלה את החריג “NotSupportedException”.

הדוגמה הבאה של הקוד מראה כיצד להכניס את הצורות הללו למסמך:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.insert_shape(aw.drawing.ShapeType.TOP_CORNERS_SNIPPED, 50, 50)
saveOptions = aw.saving.OoxmlSaveOptions(aw.SaveFormat.DOCX)
saveOptions.compliance = aw.saving.OoxmlCompliance.ISO29500_2008_TRANSITIONAL
doc.save(docs_base.artifacts_dir + "WorkingWithShapes.add_corners_snipped.docx", saveOptions)

עקבו אחרי Actual shape Bounds

שימוש Aspose.Words API, אתה יכול לקבל את המיקום ואת הגודל של הצורה המכיל בלוק בנקודות, יחסית לעגן של הצורה העליונה. לעשות זאת, השתמש bounds_in_points רכוש.

דוגמה לקוד הבא מראה כיצד לעבוד עם BoundsInPoints רכוש:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_image(docs_base.images_dir + "Transparent background logo.png")
shape.aspect_ratio_locked = False
print("\nGets the actual bounds of the shape in points: ")
print(shape.get_shape_renderer().bounds_in_points)

תגית: Vertical Anchor

באפשרותך לציין את היערכות הטקסט אנכית בתוך צורה באמצעות vertical_anchor רכוש.

דוגמה לקוד הבא מראה כיצד לעבוד עם VerticalAnchor רכוש:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
textBox = builder.insert_shape(aw.drawing.ShapeType.TEXT_BOX, 200, 200)
textBox.text_box.vertical_anchor = aw.drawing.TextBoxAnchor.BOTTOM
builder.move_to(textBox.first_paragraph)
builder.write("Textbox contents")
doc.save(docs_base.artifacts_dir + "WorkingWithShapes.vertical_anchor.docx")

Detect Smart אמנות

Aspose.Words מאפשר גם לזהות אם לצורה יש SmartArt אובייקט. לעשות זאת, השתמש נכסים חכמים_art רכוש.

דוגמה לקוד הבא מראה כיצד לעבוד עם HasSmartArt רכוש:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document(docs_base.my_dir + "SmartArt.docx")
count = 0
for shape in doc.get_child_nodes(aw.NodeType.SHAPE, True) :
shape = shape.as_shape()
if(shape.has_smart_art) :
count += 1
print("The document has 0 shapes with SmartArt.", count)

הכנס Horizontal חוק לתוך מסמך

אתה יכול להוסיף צורה של שלטון אופקי לתוך מסמך באמצעות insert_horizontal_rule שיטה.

דוגמה לקוד הבא מראה כיצד לעשות זאת:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.writeln("Insert a horizontal rule shape into the document.")
builder.insert_horizontal_rule()
doc.save(docs_base.artifacts_dir + "AddContentUsingDocumentBuilder.insert_horizontal_rule.docx")

Aspose.Words API מספק horizontal_rule_format רכוש לגשת למאפיינים של צורת השלטון האופקי. The The The HorizontalRuleFormat שיעור חושף תכונות בסיסיות כמו height, color, no_shade וכו' לתבנית של שלטון אופקי.

דוגמה לקוד הבא מראה כיצד להגדיר HorizontalRuleFormat:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
builder = aw.DocumentBuilder()
shape = builder.insert_horizontal_rule()
horizontalRuleFormat = shape.horizontal_rule_format
horizontalRuleFormat.alignment = aw.drawing.HorizontalRuleAlignment.CENTER
horizontalRuleFormat.width_percent = 70
horizontalRuleFormat.height = 3
horizontalRuleFormat.color = drawing.Color.blue
horizontalRuleFormat.no_shade = True
builder.document.save(docs_base.artifacts_dir + "AddContentUsingDocumentBuilder.horizontal_rule_format.docx")

המונחים: אובייקטים כאייקון

Aspose.Words API מספק Shape.insert_ole_object_as_icon תפקיד להכניס אובייקט מוטבע או מקושר כסמל לתוך המסמך. פונקציה זו מאפשרת לציין את קובץ הסמל ואת הכיתוב. The The The OLE סוג האובייקט יוזה באמצעות הרחבה הקובץ.

הדוגמה הבאה של הקוד ממחישה כיצד להגדיר את אובייקט OLE כאייקון במסמך:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.insert_ole_object_as_icon(docs_base.my_dir + "Presentation.pptx", False, docs_base.images_dir + "Logo icon.ico", "My embedded file")
doc.save(docs_base.artifacts_dir + "WorkingWithOleObjectsAndActiveX.insert_ole_object_as_icon.docx")

ייבוא Shapes with Math XML as Shapes into DOM

אתה יכול להשתמש convert_shape_to_office_math נכס להמיר את הצורות עם EquationXML לאובייקטים של Office Math. ערך ברירת המחדל של נכס זה תואם להתנהגות MS Word i.צורות עם משוואה XML אינם מומרים לאובייקטים מתמטיים של Office.

הדוגמה הקודית הבאה מראה כיצד להמיר צורות לאובייקטים של Office:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
loadOptions = aw.loading.LoadOptions()
loadOptions.convert_shape_to_office_math = True
doc = aw.Document(docs_base.my_dir + "Office math.docx", loadOptions)
doc.save(docs_base.artifacts_dir + "WorkingWithLoadOptions.convert_shape_to_office_math.docx", aw.SaveFormat.DOCX)