Su damgasıyla Çalışmak
Bu konu bir su damgası ile programatik olarak nasıl çalışılacağını tartışır Aspose.Words. Su damgası bir belgedeki metnin arkasından görünen arka plan görüntüsüdür. Bir filigran bir Watermark sınıfı tarafından temsil edilen bir metin veya bir resim içerebilir.
On-line dene
Bu işlevselliği Free online document watermark ile deneyebilirsiniz.
Bir Belgeye Su İşareti Ekle
Microsoft Word ‘da bir belgeye su izlemesi eklemek için Insert Watermark komutunu kullanabilirsiniz. watermark sınıfı Aspose.Words ‘de belgelere su izlemesi eklemek veya kaldırmak için kullanılabilir. Aspose.Words ayrıca üç olası su izleme türü (Metin, Görüntü ve Yok) tanımlayan bir WatermarkType numaralandırması sağlar
Metin Suartı Ekle
Aşağıdaki kod örneği bir belgeye metin su damgası eklemenin nasıl yapılacağını göstermektedir tanımlayarak TextWatermarkOptions kullanarak yöntem 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"); |
Görüntü Su İşareti Ekle
Aşağıdaki kod örneği, bir belgeye nasıl görüntü damgası ekleyeceğinizi gösterir ImageWatermarkOptions yöntemini kullanarak SetImage‘i tanımlayarak:
// 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"); |
Su damgası ayrıca şekil sınıfı kullanılarak da eklenebilir. Herhangi bir şekil veya görüntüyi kolayca bir başlık veya altbilgiye ekleyebilir ve böylece hayal edilebilecek herhangi bir tür su damgası oluşturabilirsiniz.
Aşağıdaki kod örneği bir Word belgesine su damgası ekler:
// 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)); | |
} |
Bir Belgeye Damga Kaldır
The Watermark sınıfı bir belgeden damgayı kaldırmak için Remove
yöntemini sağlar.
Aşağıdaki kod örnekleri bir belgeden su damgası kaldırmak için nasıl yapılacağını göstermektedir:
// 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"); |
Bir belgeden su damgası kaldırmak için sadece su damgası şeklinin adını eklerken ayarlamanız gerekir ve ardından atanan bir isimle su damgası şeklini kaldırın.
Aşağıdaki kod örneği su damgası şeklinin adını nasıl ayarlayacağını ve bunu belgeden nasıl kaldıracağını gösterir:
// 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(); | |
} | |
} | |
} |
Bir Tablo Hücresine Su Damgası Ekle
Bazen bir su damgası / görüntüyü bir tablonun hücresine eklemeniz ve onu tablo dışında görüntülemeniz gerekir, IsLayoutInCell özelliğini kullanabilirsiniz. Bu özellik bir bayrak alır veya ayarlar, şeklin bir tabloda mı yoksa onun dışında mı görüntülendiğini gösterir. Bu özelliğin yalnızca sizin Microsoft Word 2010 için belgeyi OptimizeFor yöntemle optimize ettiğinizde çalıştığını unutmayın
Aşağıdaki kod örneği bu özelliğin nasıl kullanılacağını göstermektedir:
// 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); |