עבודה עם סימן מים

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

כיצד להוסיף סימן מים למסמך

ב Microsoft Word, ניתן להכניס בקלות סימן מים למסמך באמצעות הפקודה הוסף סימן מים. Aspose.Words מספק את הכיתה Watermark כדי להוסיף או להסיר סימן מים במסמכים. Aspose.Words מספק את הספירה WatermarkType המגדירה שלושה סוגים אפשריים של סימני מים (TEXT, IMAGE ו NONE) לעבוד איתם.

הוסף סימן מים טקסט

דוגמת הקוד הבאה מראה כיצד להוסיף סימן מים טקסט במסמך על ידי הגדרת TextWatermarkOptions באמצעות שיטת set_text:

# 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 + "Document.docx")
options = aw.TextWatermarkOptions()
options.font_family = "Arial"
options.font_size = 36
options.color = drawing.Color.black
options.layout = aw.WatermarkLayout.HORIZONTAL
options.is_semitrasparent = False
doc.watermark.set_text("Test", options)
doc.save(docs_base.artifacts_dir + "WorkWithWatermark.add_text_watermark_with_specific_options.docx")

הוסף סימן מים לתמונה

דוגמת הקוד הבאה מראה כיצד להוסיף סימן מים לתמונה במסמך על ידי הגדרת ImageWatermarkOptions באמצעות שיטת set_image:

# 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 + "Document.docx")
options = aw.ImageWatermarkOptions()
options.scale = 5
options.is_washout = False
doc.watermark.set_image(docs_base.images_dir + "Transparent background logo.png", options)
doc.save(docs_base.artifacts_dir + "WorkWithWatermark.add_image_watermark.docx")

ניתן להוסיף סימן מים לתמונה כתמונה, מחרוזת או זרם.

ניתן להכניס את סימן המים גם באמצעות מחלקת צורה. קל מאוד להכניס כל צורה או תמונה לכותרת עליונה או תחתונה וכך ליצור סימן מים מכל סוג שניתן להעלות על הדעת.

הדוגמה הבאה של הקוד מכניסה סימן מים למסמך Word:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
def test_add_and_remove_watermark(self) :
doc = aw.Document(docs_base.my_dir + "Document.docx")
self.insert_watermark_text(doc, "CONFIDENTIAL")
doc.save(docs_base.artifacts_dir + "TestFile.watermark.docx")
self.remove_watermark_text(doc)
doc.save(docs_base.artifacts_dir + "WorkWithWatermark.remove_watermark.docx")
# <summary>
# Inserts a watermark into a document.
# </summary>
# <param name="doc">The input document.</param>
# <param name="watermarkText">Text of the watermark.</param>
def insert_watermark_text(self, doc : aw.Document, watermarkText : str) :
# Create a watermark shape, this will be a WordArt shape.
watermark = aw.drawing.Shape(doc, aw.drawing.ShapeType.TEXT_PLAIN_TEXT)
watermark.name = "Watermark"
watermark.text_path.text = watermarkText
watermark.text_path.font_family = "Arial"
watermark.width = 500
watermark.height = 100
# Text will be directed from the bottom-left to the top-right corner.
watermark.rotation = -40
# Remove the following two lines if you need a solid black text.
watermark.fill_color = drawing.Color.gray
watermark.stroke_color = drawing.Color.gray
# Place the watermark in the page center.
watermark.relative_horizontal_position = aw.drawing.RelativeHorizontalPosition.PAGE
watermark.relative_vertical_position = aw.drawing.RelativeVerticalPosition.PAGE
watermark.wrap_type = aw.drawing.WrapType.NONE
watermark.vertical_alignment = aw.drawing.VerticalAlignment.CENTER
watermark.horizontal_alignment = aw.drawing.HorizontalAlignment.CENTER
# Create a new paragraph and append the watermark to this paragraph.
watermarkPara = aw.Paragraph(doc)
watermarkPara.append_child(watermark)
# Insert the watermark into all headers of each document section.
for sect in doc.sections :
sect = sect.as_section()
# There could be up to three different headers in each section.
# Since we want the watermark to appear on all pages, insert it into all headers.
self.insert_watermark_into_header(watermarkPara, sect, aw.HeaderFooterType.HEADER_PRIMARY)
self.insert_watermark_into_header(watermarkPara, sect, aw.HeaderFooterType.HEADER_FIRST)
self.insert_watermark_into_header(watermarkPara, sect, aw.HeaderFooterType.HEADER_EVEN)
def insert_watermark_into_header(self, watermarkPara : aw.Paragraph, sect : aw.Section, headerType : aw.HeaderFooterType) :
header = sect.headers_footers.get_by_header_footer_type(headerType)
if (header == None) :
# There is no header of the specified type in the current section, so we need to create it.
header = aw.HeaderFooter(sect.document, headerType)
sect.headers_footers.add(header)
# Insert a clone of the watermark into the header.
header.append_child(watermarkPara.clone(True))

הסר סימן מים ממסמך

המחלקה Watermark מספקת את שיטת ההסרה להסרת סימן המים ממסמך.

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

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
# Add a plain text watermark.
doc.watermark.set_text("Aspose Watermark")
# If we wish to edit the text formatting using it as a watermark,
# we can do so by passing a TextWatermarkOptions object when creating the watermark.
textWatermarkOptions = aw.TextWatermarkOptions()
textWatermarkOptions.font_family = "Arial"
textWatermarkOptions.font_size = 36
textWatermarkOptions.color = drawing.Color.black
textWatermarkOptions.layout = aw.WatermarkLayout.DIAGONAL
textWatermarkOptions.is_semitrasparent = False
doc.watermark.set_text("Aspose Watermark", textWatermarkOptions)
doc.save(docs_base.artifacts_dir + "Document.text_watermark.docx")
# We can remove a watermark from a document like this.
if (doc.watermark.type == aw.WatermarkType.TEXT) :
doc.watermark.remove()
doc.save(docs_base.artifacts_dir + "WorkWithWatermark.remove_watermark_from_document.docx")

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

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

# Set name to be able to remove it afterwards
watermark.name = "WaterMark"
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
def remove_watermark_text(self, doc : aw.Document) :
for hf in doc.get_child_nodes(aw.NodeType.HEADER_FOOTER, True) :
hf = hf.as_header_footer()
for shape in hf.get_child_nodes(aw.NodeType.SHAPE, True) :
shape = shape.as_shape()
if shape.name.find("WaterMark") >= 0 :
shape.remove()

הוסף סימן מים בתא הטבלה

לפעמים אתה צריך להכניס סימן מים/תמונה לתא של טבלה ולהציג אותה מחוץ לטבלה, אתה יכול להשתמש במאפיין is_layout_in_cell. מאפיין זה מקבל או קובע דגל המציין אם הצורה מוצגת בתוך שולחן או מחוצה לו. שים לב שמאפיין זה פועל רק כאשר אתה מבצע אופטימיזציה של המסמך עבור Microsoft Word 2010 בשיטת optimize_for.

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

# 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")