Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
En este tema se analiza cómo trabajar mediante programación con watermark usando Aspose.Words. Una marca de agua es una imagen de fondo que se muestra detrás del texto de un documento. Una marca de agua puede contener un texto o una imagen representada por la clase Watermark.
Pruébalo en línea
Puede probar esta funcionalidad con nuestro Marca de agua gratuita para documentos en línea.
En Microsoft Word, se puede insertar fácilmente una marca de agua en un documento mediante el comando Insertar marca de agua. Aspose.Words proporciona la clase Watermark para agregar o eliminar marcas de agua en documentos. Aspose.Words proporciona la enumeración WatermarkType que define tres tipos posibles de marcas de agua (TEXT, IMAGE y NONE) con las que trabajar.
El siguiente ejemplo de código demuestra cómo insertar una marca de agua de texto en un documento definiendo TextWatermarkOptions con el 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") |
El siguiente ejemplo de código demuestra cómo insertar una marca de agua de imagen en un documento definiendo ImageWatermarkOptions con el 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") |
La marca de agua de la imagen se puede insertar como imagen, cadena o secuencia.
La marca de agua también se puede insertar usando la clase shape. Es muy fácil insertar cualquier forma o imagen en un encabezado o pie de página y así crear una marca de agua de cualquier tipo imaginable.
El siguiente ejemplo de código inserta una marca de agua en un documento 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)) | |
La clase Watermark proporciona el método remove para eliminar la marca de agua de un documento.
El siguiente ejemplo de código muestra cómo eliminar una marca de agua de los 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") |
Si las marcas de agua se agregan usando el objeto de clase Shape, para eliminar la marca de agua de un documento, debe establecer solo el nombre de la forma de la marca de agua durante la inserción y luego eliminar la forma de la marca de agua con un nombre asignado.
El siguiente ejemplo de código le muestra cómo establecer el nombre de la forma de la marca de agua y eliminarla del 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() | |
A veces necesita insertar una marca de agua/imagen en la celda de una tabla y mostrarla fuera de la tabla, puede usar la propiedad is_layout_in_cell. Esta propiedad obtiene o establece un indicador que indica si la forma se muestra dentro de una tabla o fuera de ella. Tenga en cuenta que esta propiedad solo funciona cuando optimiza el documento para Microsoft Word 2010 utilizando el método optimize_for.
El siguiente ejemplo de código muestra cómo usar esta propiedad:
# 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") |
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.