Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Este tópico discute como trabalhar programaticamente com uma marca d’água usando Aspose.Words. Uma marca d’água é uma imagem de fundo que é exibida atrás do texto em um documento. Uma marca d’água pode conter um texto ou uma imagem representada pela classe Watermark.
Experimente online
Pode experimentar esta funcionalidade com o nosso Marca d’água de Documento on-line gratuita.
Em 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 marca d’água em documentos. Aspose.Words fornece a enumeração WatermarkType definindo três tipos possíveis de marcas d’água (texto, imagem e nenhum) para trabalhar.
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 SetText:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
Document doc = new Document(dataDir + "Document.doc"); | |
TextWatermarkOptions options = new TextWatermarkOptions(); | |
options.setFontFamily("Arial"); | |
options.setFontSize(36); | |
options.setColor(Color.BLACK); | |
options.setLayout(WatermarkLayout.HORIZONTAL); | |
options.isSemitrasparent(false); | |
doc.getWatermark().setText("Test", options); | |
doc.save(dataDir + "AddTextWatermark_out.docx"); |
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 SetImage:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
Document doc = new Document(dataDir + "Document.doc"); | |
ImageWatermarkOptions options = new ImageWatermarkOptions(); | |
options.setScale(5); | |
options.isWashout(false); | |
ImageInputStream stream = ImageIO.createImageInputStream(new File(dataDir + "Watermark.png")); | |
doc.getWatermark().setImage(ImageIO.read(stream), options); | |
doc.save(dataDir + "AddImageWatermark_out.docx"); |
A marca d’água da imagem pode ser inserida como imagem, string ou fluxo.
A marca d’água também pode ser inserida usando a classe shape. É 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 Word:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
@Test | |
public void addWatermark() throws Exception | |
{ | |
Document doc = new Document(getMyDir() + "Document.docx"); | |
insertWatermarkText(doc, "CONFIDENTIAL"); | |
doc.save(getArtifactsDir() + "WorkWithWatermark.AddWatermark.docx"); | |
} | |
/// <summary> | |
/// Inserts a watermark into a document. | |
/// </summary> | |
/// <param name="doc">The input document.</param> | |
/// <param name="watermarkText">Text of the watermark.</param> | |
private void insertWatermarkText(Document doc, String watermarkText) throws Exception | |
{ | |
// Create a watermark shape, this will be a WordArt shape. | |
Shape watermark = new Shape(doc, ShapeType.TEXT_PLAIN_TEXT); { watermark.setName("Watermark"); } | |
watermark.getTextPath().setText(watermarkText); | |
watermark.getTextPath().setFontFamily("Arial"); | |
watermark.setWidth(500.0); | |
watermark.setHeight(100.0); | |
// Text will be directed from the bottom-left to the top-right corner. | |
watermark.setRotation(-40); | |
// Remove the following two lines if you need a solid black text. | |
watermark.setFillColor(Color.GRAY); | |
watermark.setStrokeColor(Color.GRAY); | |
// Place the watermark in the page center. | |
watermark.setRelativeHorizontalPosition(RelativeHorizontalPosition.PAGE); | |
watermark.setRelativeVerticalPosition(RelativeVerticalPosition.PAGE); | |
watermark.setWrapType(WrapType.NONE); | |
watermark.setVerticalAlignment(VerticalAlignment.CENTER); | |
watermark.setHorizontalAlignment(HorizontalAlignment.CENTER); | |
// Create a new paragraph and append the watermark to this paragraph. | |
Paragraph watermarkPara = new Paragraph(doc); | |
watermarkPara.appendChild(watermark); | |
// Insert the watermark into all headers of each document section. | |
for (Section sect : (Iterable<Section>) doc.getSections()) | |
{ | |
// 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. | |
insertWatermarkIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_PRIMARY); | |
insertWatermarkIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_FIRST); | |
insertWatermarkIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_EVEN); | |
} | |
} | |
private void insertWatermarkIntoHeader(Paragraph watermarkPara, Section sect, | |
/*HeaderFooterType*/int headerType) | |
{ | |
HeaderFooter header = sect.getHeadersFooters().getByHeaderFooterType(headerType); | |
if (header == null) | |
{ | |
// There is no header of the specified type in the current section, so we need to create it. | |
header = new HeaderFooter(sect.getDocument(), headerType); | |
sect.getHeadersFooters().add(header); | |
} | |
// Insert a clone of the watermark into the header. | |
header.appendChild(watermarkPara.deepClone(true)); | |
} |
A classe Watermark fornece o método Remove
Para remover a marca d’água de um documento.
Os exemplos de código a seguir mostram 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-Java | |
Document doc = new Document(dataDir + "AddTextWatermark_out.docx"); | |
if (doc.getWatermark().getType() == WatermarkType.TEXT) { | |
doc.getWatermark().remove(); | |
} | |
doc.save(dataDir + "RemoveWatermark_out.docx"); |
Para remover a marca d’água de um documento, você deve definir apenas o nome da forma da marca d’água durante a inserção e, em seguida, remover a forma 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-Java | |
private static final String dataDir = Utils.getDataDir(RemoveWatermark.class); | |
public static void main(String[] args) throws Exception { | |
Document doc = new Document(dataDir + "RemoveWatermark.docx"); | |
removeWatermarkText(doc); | |
doc.save(dataDir + "RemoveWatermark_out.doc"); | |
} | |
private static void removeWatermarkText(Document doc) throws Exception { | |
for (HeaderFooter hf : (Iterable<HeaderFooter>) doc.getChildNodes(NodeType.HEADER_FOOTER, true)) { | |
for (Shape shape : (Iterable<Shape>) hf.getChildNodes(NodeType.SHAPE, true)) { | |
if (shape.getName().contains("WaterMark")) | |
shape.remove(); | |
} | |
} | |
} |
À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 IsLayoutInCell. Esta propriedade obtém ou define um sinalizador indicando se a forma é exibida dentro ou fora de uma tabela. Observe que essa propriedade só funciona quando você otimiza o documento para Microsoft Word 2010 usando o método OptimizeFor.
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-Java | |
Document doc = new Document(dataDir + "LayoutInCell.docx"); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
Shape watermark = new Shape(doc, ShapeType.TEXT_PLAIN_TEXT); | |
watermark.setRelativeHorizontalPosition(RelativeHorizontalPosition.PAGE); | |
watermark.setRelativeVerticalPosition(RelativeVerticalPosition.PAGE); | |
watermark.isLayoutInCell(false); // Display the shape outside of table cell if it will be placed into a cell. | |
watermark.setWidth(300); | |
watermark.setHeight(70); | |
watermark.setHorizontalAlignment(HorizontalAlignment.CENTER); | |
watermark.setVerticalAlignment(VerticalAlignment.CENTER); | |
watermark.setRotation(-40); | |
watermark.getFill().setColor(Color.GRAY); | |
watermark.setStrokeColor(Color.GRAY); | |
watermark.getTextPath().setText("watermarkText"); | |
watermark.getTextPath().setFontFamily("Arial"); | |
watermark.setName("WaterMark_0"); | |
watermark.setWrapType(WrapType.NONE); | |
Run run = (Run) doc.getChildNodes(NodeType.RUN, true).get(doc.getChildNodes(NodeType.RUN, true).getCount() - 1); | |
builder.moveTo(run); | |
builder.insertNode(watermark); | |
doc.getCompatibilityOptions().optimizeFor(MsWordVersion.WORD_2010); | |
// Save the document to disk. | |
dataDir = dataDir + "Shape_IsLayoutInCell_out.docx"; | |
doc.save(dataDir); |
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.