Trabalhando com marca d'água
Este tópico discute como trabalhar programaticamente com marca d’água usando Aspose.Words. Uma marca d’água é uma imagem de fundo exibida atrás do texto em um documento. Uma marca d’água pode conter um texto ou uma imagem representada pela classe Watermark.
Experimente on-line
Você pode experimentar esta funcionalidade com nosso Marca d’água de documento online gratuita.
Como adicionar uma marca d’água a um documento
No Microsoft Word, uma marca d’água pode ser facilmente inserida em um documento usando o comando Inserir marca d’água. Aspose.Words fornece a classe Watermark para adicionar ou remover marcas d’água em documentos. Aspose.Words fornece a enumeração WatermarkType que define três tipos possíveis de marcas d’água (TEXT, IMAGE e NONE) para trabalhar
Adicionar marca d’água de texto
O exemplo de código a seguir demonstra como inserir uma marca d’água de texto em um documento definindo TextWatermarkOptions usando o método 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") |
Adicionar marca d’água de imagem
O exemplo de código a seguir demonstra como inserir uma marca d’água de imagem em um documento definindo ImageWatermarkOptions usando o método 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") |
A marca d’água também pode ser inserida usando a classe de forma. É muito fácil inserir qualquer forma ou imagem em um cabeçalho ou rodapé e assim criar uma marca d’água de qualquer tipo imaginável.
O exemplo de código a seguir insere uma marca d’água em um documento do 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)) | |
Remover marca d’água de um documento
A classe Watermark fornece o método remove para remover a marca d’água de um documento.
O exemplo de código a seguir mostra como remover uma marca d’água de documentos:
# 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") |
Se as marcas d’água forem adicionadas usando o objeto de classe Shape, para remover a marca d’água de um documento, você deverá definir apenas o nome do formato da marca d’água durante a inserção e, em seguida, remover o formato da marca d’água por um nome atribuído.
O exemplo de código a seguir mostra como definir o nome da forma da marca d’água e removê-la do documento:
# 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() | |
Adicionar uma marca d’água na célula da tabela
Às vezes você precisa inserir uma marca d’água/imagem na célula de uma tabela e exibi-la fora da tabela, você pode usar a propriedade is_layout_in_cell. Esta propriedade obtém ou define um sinalizador que indica se a forma é exibida dentro ou fora de uma tabela. Observe que esta propriedade funciona somente quando você otimiza o documento para Microsoft Word 2010 usando o método optimize_for.
O exemplo de código a seguir mostra como usar essa propriedade:
# 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") |