Робота з водяним знаком
Ця тема обговорює, як працювати программатично з водяним знаком Aspose.Wordsй Watermark - це фонове зображення, яке відображає за текстом у документі. Водяний знак може містити текст або зображення, представлене на сайті Watermark клас.
Почати онлайн
Ми можемо самі зателефонувати одержувачу. Безкоштовний онлайн документ водяний знакй
Додати водяний знак до документа
У Microsoft Word, водяний знак можна легко вставляти в документ за допомогою команди Insert Watermark. Aspose.Words забезпечує watermark клас додавати або видаляти водяний знак в документах. Aspose.Words забезпечує WatermarkTypeанумація, що визначає три можливі типи водяних знаків (Text, Image та None) для роботи з
Додати текст водяний знак
Приклад коду показує, як вставити текст водяного знака в документі шляхом визначення TextWatermarkOptions використання 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"); |
Додати водяний знак зображення
Приклад коду показує, як вставити водяний знак зображення в документі шляхом визначення ImageWatermarkOptions використання 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"); |
Водяний знак також можна вставляти за допомогою класа форми. Дуже легко вставляти будь-яку форму або зображення в заголовок або нижній колонтитул і таким чином створити водяний знак будь-якого явного типу.
Приклад наступного коду вставляє водяний знак у документ 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)); | |
} |
Видалити водяний знак з документа
Про нас Watermark клас забезпечує Remove
спосіб видалити водяний знак з документа.
Приклади коду показують, як видалити водяний знак з документів:
// 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"); |
Щоб видалити водяний знак з документа, потрібно встановити тільки назву форми водяного знака під час вставки, а потім видалити форму водяного знака за вказаною назвою.
Приклад коду показує, як встановити назву форми водяного знака і видалити його з документа:
// 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(); | |
} | |
} | |
} |
Додати водяний знак в клітинку таблиці
Іноді потрібно вставити водяний знак / зображення в комірку таблиці і відобразити його зовні столу, можна використовувати IsLayoutInCell майно. Ця властивість отримує або встановлює прапор, що вказує на те, що форма відображається всередині таблиці або зовні нього. Зверніть увагу, що це майно працює тільки тоді, коли ви оптимізуєте документ для Microsoft Word 2010 за допомогою OptimizeFor метод
Приклад коду показує, як використовувати цю властивість:
// 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); |