diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b3a9165
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,6 @@
+/Examples/target/
+/Examples/.classpath
+/Examples/.project
+/Examples/.settings/
+
+deploy_key
diff --git a/Examples/GroupDocs.Watermark-for-Java/.gitignore b/Examples/GroupDocs.Watermark-for-Java/.gitignore
deleted file mode 100644
index 6567c5d..0000000
--- a/Examples/GroupDocs.Watermark-for-Java/.gitignore
+++ /dev/null
@@ -1,10 +0,0 @@
-.idea/
-target/
-*.iml
-.DS_Store
-/bin/
-.classpath
-.project
-.settings/
-.gitignore
-.git/
\ No newline at end of file
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Attachments/License Agreement.doc b/Examples/GroupDocs.Watermark-for-Java/Data/Attachments/License Agreement.doc
deleted file mode 100644
index 3c6f4ed..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Attachments/License Agreement.doc and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Attachmentssample.msg b/Examples/GroupDocs.Watermark-for-Java/Data/Attachmentssample.msg
deleted file mode 100644
index bc72cb7..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Attachmentssample.msg and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Output/sample.docx b/Examples/GroupDocs.Watermark-for-Java/Data/Output/sample.docx
deleted file mode 100644
index 6c720e7..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Output/sample.docx and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Output/sample.gif b/Examples/GroupDocs.Watermark-for-Java/Data/Output/sample.gif
deleted file mode 100644
index 0597dab..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Output/sample.gif and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Output/sample.msg b/Examples/GroupDocs.Watermark-for-Java/Data/Output/sample.msg
deleted file mode 100644
index 760fad6..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Output/sample.msg and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Output/sample.pdf b/Examples/GroupDocs.Watermark-for-Java/Data/Output/sample.pdf
deleted file mode 100644
index 22c2e78..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Output/sample.pdf and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Output/sample.png b/Examples/GroupDocs.Watermark-for-Java/Data/Output/sample.png
deleted file mode 100644
index 5bbc560..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Output/sample.png and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Output/sample.pptx b/Examples/GroupDocs.Watermark-for-Java/Data/Output/sample.pptx
deleted file mode 100644
index b53ed81..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Output/sample.pptx and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Output/sample.vsdx b/Examples/GroupDocs.Watermark-for-Java/Data/Output/sample.vsdx
deleted file mode 100644
index cc53cfc..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Output/sample.vsdx and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Output/sample.xlsx b/Examples/GroupDocs.Watermark-for-Java/Data/Output/sample.xlsx
deleted file mode 100644
index 978fc4d..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Output/sample.xlsx and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Screenshots/Files.png b/Examples/GroupDocs.Watermark-for-Java/Data/Screenshots/Files.png
deleted file mode 100644
index 5078410..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Screenshots/Files.png and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Screenshots/ProjectInEclipse.png b/Examples/GroupDocs.Watermark-for-Java/Data/Screenshots/ProjectInEclipse.png
deleted file mode 100644
index fa3aa73..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Screenshots/ProjectInEclipse.png and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Screenshots/imagewatermark.jpg b/Examples/GroupDocs.Watermark-for-Java/Data/Screenshots/imagewatermark.jpg
deleted file mode 100644
index c24a0d3..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Screenshots/imagewatermark.jpg and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Screenshots/parent_margins.png b/Examples/GroupDocs.Watermark-for-Java/Data/Screenshots/parent_margins.png
deleted file mode 100644
index 22e800f..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Screenshots/parent_margins.png and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Screenshots/parent_margins_2.png b/Examples/GroupDocs.Watermark-for-Java/Data/Screenshots/parent_margins_2.png
deleted file mode 100644
index 9ebd99e..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Screenshots/parent_margins_2.png and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Screenshots/rotation.png b/Examples/GroupDocs.Watermark-for-Java/Data/Screenshots/rotation.png
deleted file mode 100644
index ee26c65..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Screenshots/rotation.png and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Screenshots/textwatermark.jpg b/Examples/GroupDocs.Watermark-for-Java/Data/Screenshots/textwatermark.jpg
deleted file mode 100644
index 701490e..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Screenshots/textwatermark.jpg and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.docx b/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.docx
deleted file mode 100644
index d6ecf8b..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.docx and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.gif b/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.gif
deleted file mode 100644
index cc85865..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.gif and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.jpg b/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.jpg
deleted file mode 100644
index c24a0d3..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.jpg and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.pdf b/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.pdf
deleted file mode 100644
index b240cab..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.pdf and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.png b/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.png
deleted file mode 100644
index e561f94..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.png and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.vsdx b/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.vsdx
deleted file mode 100644
index 88fb4f2..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.vsdx and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.xlsx b/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.xlsx
deleted file mode 100644
index 3e67df6..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.xlsx and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample_with_Artifact_watermark.pdf b/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample_with_Artifact_watermark.pdf
deleted file mode 100644
index be55d34..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample_with_Artifact_watermark.pdf and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample_with_watermark.docx b/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample_with_watermark.docx
deleted file mode 100644
index eb17e63..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample_with_watermark.docx and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/watermark.jpg b/Examples/GroupDocs.Watermark-for-Java/Data/watermark.jpg
deleted file mode 100644
index 35ecc51..0000000
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/watermark.jpg and /dev/null differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/src/main/java/com/groupdocs/watermark/examples/Common.java b/Examples/GroupDocs.Watermark-for-Java/src/main/java/com/groupdocs/watermark/examples/Common.java
deleted file mode 100644
index 95e2d4b..0000000
--- a/Examples/GroupDocs.Watermark-for-Java/src/main/java/com/groupdocs/watermark/examples/Common.java
+++ /dev/null
@@ -1,254 +0,0 @@
-package com.groupdocs.watermark.examples;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.file.FileSystems;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Properties;
-import java.util.regex.Pattern;
-
-import com.groupdocs.watermark.*;
-
-public class Common {
-
- public static final Path STORAGE_PATH = getProjectBaseDir().resolve("Data/Source");
- public static final Path OUTPUT_PATH = getProjectBaseDir().resolve("Data/Output");
- public static final String WATERMARK_IMAGE_PATH = getProjectBaseDir().resolve("Data/watermark.jpg").toString();
- public static final String ATTACHMENTS_PATH = getProjectBaseDir().resolve("Data/Attachments/").toString();
- public static String LICENSE_PATH = "D:\\GroupDocs.Total.Java.lic";
- public static String publicKey = "Public key for your account";
- public static String privateKey = "Private key for your account";
-
- // applies product license
- public static void applyLicenseFromFile() {
- try {
- // ExStart:ApplyLicenseFromFile
- // Setup license
- License lic = new License();
- lic.setLicense(LICENSE_PATH);
- // ExEnd:ApplyLicenseFromFile
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- // applies product license
- public static void applyLicenseFromStream() {
- try {
- // ExStart:ApplyLicenseFromStream
- // Setup license
- License lic = new License();
- lic.setLicense(new java.io.FileInputStream(LICENSE_PATH));
- // ExEnd:ApplyLicenseFromStream
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- // returns project base directory
- public static Path getProjectBaseDir() {
- return Paths.get(System.getProperty("user.dir"));
- }
-
- // returns source file path
- public static String mapSourceFilePath(String inputFileName) {
- try {
- return STORAGE_PATH + "/" + inputFileName;
- } catch (Exception e) {
- e.printStackTrace();
- return e.getMessage();
- }
- }
-
- // returns output file path
- public static String mapOutputFilePath(String outputFileName) {
- try {
- return OUTPUT_PATH + "/" + outputFileName;
- } catch (Exception e) {
- e.printStackTrace();
- return e.getMessage();
- }
- }
-
- // shows how to use library in licensed mode using Dynabic.Metered account
- public static void useDynabicMeteredAccount() {
- // ExStart:ApplyMeteredLicense
- // initialize Metered API
- Metered metered = new Metered();
- // set-up credentials
- try {
- metered.setMeteredKey(publicKey, privateKey);
- } catch (Exception e) {
- e.printStackTrace();
- }
- // ExEnd:ApplyMeteredLicense
- // do some work:
- }
-
- public static void loadDocument(String fileName) {
- try {
- // ExStart:LoadDocument
- Document doc = Document.load(Common.mapSourceFilePath(fileName));
-
- // Here we can use document instance to add or remove watermarks
-
- doc.close();
- // ExEnd:LoadDocument
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- public static void loadDocumentFromStream(String fileName) {
- try {
- // ExStart:loadDocumentFromStream
- InputStream inputStream = new FileInputStream(Common.mapSourceFilePath(fileName));
- Document doc = Document.load(inputStream);
-
- // Here we can use document instance to add or remove watermarks
-
- doc.close();
- inputStream.close();
- // ExEnd:loadDocumentFromStream
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- public static void saveDocument(String fileName) {
- try {
- // ExStart:loadDocumentFromStream
- ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
- Document doc = Document.load(Common.mapSourceFilePath(fileName));
- // Watermarking goes here
- // ...
-
- // Save the document to the specified location
- doc.save("D:\\result.doc");
-
- // Save the document to the specified stream
- doc.save(outputStream);
-
- doc.close();
-
- // Use the stream containing the document
- // ...
- outputStream.close();
- // Document class implements Closeable interface. Therefore, it is
- // necessary to call close method when you are done working with the
- // document. Alternatively, you can use try-with-resources
- // statement.
- // ExEnd:loadDocumentFromStream
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- public static void loadPasswordProtectedDocument(String fileName) {
- try {
- // ExStart:loadPasswordProtectedDocument
- // Use LoadOptions instance to pass the password
- LoadOptions loadOptions = new LoadOptions();
- loadOptions.setPassword("123");
- Document doc = Document.load(Common.mapSourceFilePath(fileName), loadOptions);
-
- doc.close();
- // ExEnd:loadPasswordProtectedDocument
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- public static void getDocumentInformation(String fileName) {
- try {
- // ExStart:getDocumentInformation
- DocumentInfo documentInfo = Document.getInfo(Common.mapSourceFilePath(fileName));
- System.out.println(documentInfo.getFileFormat());
- System.out.println(documentInfo.isEncrypted());
- // ExEnd:getDocumentInformation
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- public static void AddWatermarkToAllDocumentsInFolder() {
- // ExStart:AddWatermarkToAllDocumentsInFolderBusinessCase
- String inputFolder = "D:\\docs\\input\\";
- String outputFolder = "D:\\docs\\output\\";
-
- File[] files = new File(inputFolder).listFiles();
-
- Font font = new Font("Arial", 8, FontStyle.Bold);
- TextWatermark watermark = new TextWatermark("CONFIDENTIAL", font);
- watermark.setHorizontalAlignment(HorizontalAlignment.Center);
- watermark.setVerticalAlignment(VerticalAlignment.Center);
- watermark.setRotateAngle(-45);
- watermark.setSizingType(SizingType.ScaleToParentDimensions);
- watermark.setScaleFactor(0.8);
- watermark.setOpacity(0.5);
- watermark.setForegroundColor(Color.getRed());
-
- for (File file : files) {
- if (file.isFile()) {
- Document doc = null;
- try {
- doc = Document.load(file.getAbsolutePath());
- doc.addWatermark(watermark);
- doc.save(outputFolder + file.getName());
- } catch (UnsupportedFileTypeException exception) {
- System.out.println("File format is not supported. File = " + file.getName());
- } finally {
- if (doc != null) {
- doc.close();
- }
- }
- }
- }
- // ExEnd:AddWatermarkToAllDocumentsInFolderBusinessCase
- }
-
- public static void RemoveCompanyLogoWatermarkFromDocuments() {
- // ExStart:RemoveCompanyLogoWatermarkFromDocumentsBusinessCase
- String inputFolder = "D:\\docs\\input\\";
- String outputFolder = "D:\\docs\\output\\";
- String logo = "D:\\docs\\logo.png";
-
- File[] files = new File(inputFolder).listFiles();
-
- ImageSearchCriteria imageSearchCriteria = new ImageDctHashSearchCriteria(logo);
- Pattern pattern = Pattern.compile("^Company\\s+Name$", Pattern.CASE_INSENSITIVE);
- TextSearchCriteria textSearchCriteria = new TextSearchCriteria(pattern);
-
- for (File file : files) {
- if (file.isFile()) {
- Document doc = null;
- try {
- doc = Document.load(file.getAbsolutePath());
- PossibleWatermarkCollection watermarks = doc
- .findWatermarks(textSearchCriteria.or(imageSearchCriteria));
- watermarks.clear();
- doc.save(outputFolder + file.getName());
- } catch (UnsupportedFileTypeException exception) {
- System.out.println("File format is not supported. File = " + file.getName());
- } finally {
- if (doc != null) {
- doc.close();
- }
- }
- }
- }
- // ExEnd:RemoveCompanyLogoWatermarkFromDocumentsBusinessCase
- }
-
-}
diff --git a/Examples/GroupDocs.Watermark-for-Java/src/main/java/com/groupdocs/watermark/examples/Documents.java b/Examples/GroupDocs.Watermark-for-Java/src/main/java/com/groupdocs/watermark/examples/Documents.java
deleted file mode 100644
index d139d7f..0000000
--- a/Examples/GroupDocs.Watermark-for-Java/src/main/java/com/groupdocs/watermark/examples/Documents.java
+++ /dev/null
@@ -1,4540 +0,0 @@
-package com.groupdocs.watermark.examples;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-
-import com.groupdocs.watermark.CellsAttachment;
-import com.groupdocs.watermark.CellsChart;
-import com.groupdocs.watermark.CellsDocument;
-import com.groupdocs.watermark.CellsHeaderFooter;
-import com.groupdocs.watermark.CellsHeaderFooterSection;
-import com.groupdocs.watermark.CellsHeaderFooterSectionCollection;
-import com.groupdocs.watermark.CellsHeaderFooterSectionType;
-import com.groupdocs.watermark.CellsImageEffects;
-import com.groupdocs.watermark.CellsMsoDrawingType;
-import com.groupdocs.watermark.CellsSearchableObjects;
-import com.groupdocs.watermark.CellsShape;
-import com.groupdocs.watermark.CellsShapeCollection;
-import com.groupdocs.watermark.CellsShapeSettings;
-import com.groupdocs.watermark.CellsTextEffects;
-import com.groupdocs.watermark.CellsWatermarkableImage;
-import com.groupdocs.watermark.CellsWorksheet;
-import com.groupdocs.watermark.Color;
-import com.groupdocs.watermark.DiagramDocument;
-import com.groupdocs.watermark.DiagramHyperlink;
-import com.groupdocs.watermark.DiagramPage;
-import com.groupdocs.watermark.DiagramShape;
-import com.groupdocs.watermark.DiagramShapeSettings;
-import com.groupdocs.watermark.DiagramWatermarkPlacementType;
-import com.groupdocs.watermark.DiagramWatermarkableImage;
-import com.groupdocs.watermark.Document;
-import com.groupdocs.watermark.EmailAddress;
-import com.groupdocs.watermark.EmailAttachment;
-import com.groupdocs.watermark.EmailDocument;
-import com.groupdocs.watermark.EmailEmbeddedObject;
-import com.groupdocs.watermark.EmailSearchableObjects;
-import com.groupdocs.watermark.FileFormat;
-import com.groupdocs.watermark.Font;
-import com.groupdocs.watermark.FontStyle;
-import com.groupdocs.watermark.FormattedTextFragment;
-import com.groupdocs.watermark.HorizontalAlignment;
-import com.groupdocs.watermark.ISlidesHyperlinkContainer;
-import com.groupdocs.watermark.ImageDctHashSearchCriteria;
-import com.groupdocs.watermark.ImageSearchCriteria;
-import com.groupdocs.watermark.ImageWatermark;
-import com.groupdocs.watermark.OfficeDashStyle;
-import com.groupdocs.watermark.OfficeHeaderFooterType;
-import com.groupdocs.watermark.OfficeLineStyle;
-import com.groupdocs.watermark.PdfAnnotation;
-import com.groupdocs.watermark.PdfArtifact;
-import com.groupdocs.watermark.PdfAttachment;
-import com.groupdocs.watermark.PdfDocument;
-import com.groupdocs.watermark.PdfImageConversionFormat;
-import com.groupdocs.watermark.PdfPage;
-import com.groupdocs.watermark.PdfPageMarginType;
-import com.groupdocs.watermark.PdfSearchableObjects;
-import com.groupdocs.watermark.PdfWatermarkableImage;
-import com.groupdocs.watermark.PdfXObject;
-import com.groupdocs.watermark.PossibleWatermarkCollection;
-import com.groupdocs.watermark.SearchCriteria;
-import com.groupdocs.watermark.SizingType;
-import com.groupdocs.watermark.SlidesChart;
-import com.groupdocs.watermark.SlidesDocument;
-import com.groupdocs.watermark.SlidesHyperlinkActionType;
-import com.groupdocs.watermark.SlidesImageEffects;
-import com.groupdocs.watermark.SlidesImageFillFormat;
-import com.groupdocs.watermark.SlidesLayoutSlide;
-import com.groupdocs.watermark.SlidesMasterSlide;
-import com.groupdocs.watermark.SlidesSearchableObjects;
-import com.groupdocs.watermark.SlidesShape;
-import com.groupdocs.watermark.SlidesShapeSettings;
-import com.groupdocs.watermark.SlidesSlide;
-import com.groupdocs.watermark.SlidesTextEffects;
-import com.groupdocs.watermark.SlidesWatermarkableImage;
-import com.groupdocs.watermark.TextSearchCriteria;
-import com.groupdocs.watermark.TextWatermark;
-import com.groupdocs.watermark.VerticalAlignment;
-import com.groupdocs.watermark.WatermarkableImage;
-import com.groupdocs.watermark.WatermarkableImageCollection;
-import com.groupdocs.watermark.WordsDocument;
-import com.groupdocs.watermark.WordsImageEffects;
-import com.groupdocs.watermark.WordsLockType;
-import com.groupdocs.watermark.WordsPageSetup;
-import com.groupdocs.watermark.WordsProtectionType;
-import com.groupdocs.watermark.WordsSection;
-import com.groupdocs.watermark.WordsShape;
-import com.groupdocs.watermark.WordsShapeSettings;
-import com.groupdocs.watermark.WordsTextEffects;
-
-public class Documents {
- public static class PDF {
- // initialize file path
- // ExStart:SourcePDFFilePath
- private final static String FILE_PATH = "sample.pdf";
- // ExEnd:SourcePDFFilePath
-
- /**
- * Adds watermark to a PDF document
- */
- public static void addWatermark() {
- try {
- // ExStart:AddWatermarkToPDF
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Add text watermark
- TextWatermark textWatermark = new TextWatermark("Test watermark", new Font("Arial", 8));
- doc.getPages().get_Item(0).addWatermark(textWatermark);
-
- // Add image watermark
- ImageWatermark imageWatermark = new ImageWatermark(Common.WATERMARK_IMAGE_PATH);
- doc.getPages().get_Item(1).addWatermark(imageWatermark);
- imageWatermark.close();
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToPDF
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Gets dimensions of a PDF document
- */
- public static void getDimensions() {
- try {
- // ExStart:GetDimensionsPDF
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
- System.out.println(doc.getPages().get_Item(0).getWidth());
- System.out.println(doc.getPages().get_Item(0).getHeight());
-
- doc.close();
- // ExEnd:GetDimensionsPDF
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to all images inside a PDF document
- */
- public static void addWatermarkToImages() {
- try {
- // ExStart:AddWatermarkToImagesPDF
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Initialize image or text watermark
- TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
- watermark.setHorizontalAlignment(HorizontalAlignment.Center);
- watermark.setVerticalAlignment(VerticalAlignment.Center);
- watermark.setRotateAngle(45);
- watermark.setSizingType(SizingType.ScaleToParentDimensions);
- watermark.setScaleFactor(1);
-
- // Get all images from the first page
- WatermarkableImageCollection images = doc.getPages().get_Item(0).findImages();
-
- // Add watermark to all found images
- for (WatermarkableImage image : images) {
- image.addWatermark(watermark);
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToImagesPDF
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds artifact watermark to a PDF document
- */
- public static void addArtifactWatermark() {
- try {
- // ExStart:AddArtifactWatermarkPDF
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Add image watermark
- ImageWatermark imageWatermark = new ImageWatermark(Common.WATERMARK_IMAGE_PATH);
- doc.addArtifactWatermark(imageWatermark);
- imageWatermark.close();
-
- // Add text watermark
- TextWatermark textWatermark = new TextWatermark("Test watermark", new Font("Arial", 8));
- doc.addArtifactWatermark(textWatermark);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddArtifactWatermarkPDF
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds annotation watermark to a PDF document
- */
- public static void addAnnotationWatermark() {
- try {
- // ExStart:AddAnnotationWatermarkPDF
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Add image watermark
- ImageWatermark imageWatermark = new ImageWatermark(Common.WATERMARK_IMAGE_PATH);
- doc.addAnnotationWatermark(imageWatermark);
- imageWatermark.close();
-
- // Add text watermark
- TextWatermark textWatermark = new TextWatermark("Test watermark", new Font("Arial", 8));
- doc.addAnnotationWatermark(textWatermark);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddAnnotationWatermarkPDF
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds print only annotation watermark to a PDF document
- */
- public static void addPrintOnlyAnnotationWatermark() {
- try {
- // ExStart:AddPrintOnlyAnnotationWatermarkPDF
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- TextWatermark textWatermark = new TextWatermark("This is a test watermark", new Font("Arial", 8));
- boolean isPrintOnly = true;
-
- // Annotation will be printed, but not displayed in pdf viewing
- // application
- doc.getPages().get_Item(0).addAnnotationWatermark(textWatermark, isPrintOnly);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddPrintOnlyAnnotationWatermarkPDF
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes watermark from a PDF document
- */
- public static void removeWatermark() {
- try {
- // ExStart:RemoveWatermarkFromPDF
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Initialize search criteria
- ImageSearchCriteria imageSearchCriteria = new ImageDctHashSearchCriteria(Common.WATERMARK_IMAGE_PATH);
- TextSearchCriteria textSearchCriteria = new TextSearchCriteria("This is a test watermark");
-
- PossibleWatermarkCollection possibleWatermarks = doc.getPages().get_Item(0)
- .findWatermarks(imageSearchCriteria.or(textSearchCriteria));
-
- // Remove all found watermarks
- for (int i = possibleWatermarks.getCount() - 1; i >= 0; i--) {
- possibleWatermarks.removeAt(i);
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveWatermarkFromPDF
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Gets information about all XObjects in a PDF document
- */
- public static void extractXObjectInformation() {
- try {
- // ExStart:ExtractXObjectInformationPDF
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (PdfPage page : doc.getPages()) {
- for (PdfXObject xObject : page.getXObjects()) {
- if (xObject.getImage() != null) {
- System.out.println(xObject.getImage().getWidth());
- System.out.println(xObject.getImage().getHeight());
- System.out.println(xObject.getImage().getBytes().length);
- }
- for (FormattedTextFragment fragment : xObject.getFormattedTextFragments()) {
- System.out.println(fragment.getText());
- System.out.println(fragment.getFont().getFamilyName());
- System.out.println(fragment.getFont().getSize());
- System.out.println(fragment.getForegroundColor().toArgb());
- System.out.println(fragment.getBackgroundColor().toArgb());
- }
- System.out.println(xObject.getText());
- System.out.println(xObject.getX());
- System.out.println(xObject.getY());
- System.out.println(xObject.getWidth());
- System.out.println(xObject.getHeight());
- System.out.println(xObject.getRotateAngle());
- }
- }
- doc.close();
- // ExEnd:ExtractXObjectInformationPDF
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes XObject from a PDF document
- */
- public static void removeXObject() {
- try {
- // ExStart:RemoveXObjectPDF
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Remove XObject by index
- doc.getPages().get_Item(0).getXObjects().removeAt(0);
-
- // Remove XObject by reference
- doc.getPages().get_Item(0).getXObjects().remove(doc.getPages().get_Item(0).getXObjects().get_Item(0));
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveXObjectPDF
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes XObject with particular text formatting
- */
- public static void removeXObjectWithParticularTextFormatting() {
- try {
- // ExStart:RemoveXObjectWithParticularTextFormatting_1
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (PdfPage page : doc.getPages()) {
- for (int i = page.getXObjects().getCount() - 1; i >= 0; i--) {
- for (FormattedTextFragment fragment : page.getXObjects().get_Item(i)
- .getFormattedTextFragments()) {
- if (Color.getRed().equals(fragment.getForegroundColor())) {
- page.getXObjects().removeAt(i);
- break;
- }
- }
- }
-
- }
-
- // Save document
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveXObjectWithParticularTextFormatting_1
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to all images XObjects inside a PDF document
- */
- public static void addWatermarkToXObjects() {
- try {
- // ExStart:AddWatermarkToXObjectsPDF
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Initialize image or text watermark
- TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
- watermark.setHorizontalAlignment(HorizontalAlignment.Center);
- watermark.setVerticalAlignment(VerticalAlignment.Center);
- watermark.setRotateAngle(45);
- watermark.setSizingType(SizingType.ScaleToParentDimensions);
- watermark.setScaleFactor(1);
-
- for (PdfPage page : doc.getPages()) {
- for (PdfXObject xObject : page.getXObjects()) {
- if (xObject.getImage() != null) {
- // Add watermark to the image
- xObject.getImage().addWatermark(watermark);
- }
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToXObjectsPDF
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Gets information about all artifacts in a PDF document
- */
- public static void extractArtifactInformation() {
- try {
- // ExStart:ExtractArtifactInformationPDF
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (PdfPage page : doc.getPages()) {
- for (PdfArtifact artifact : page.getArtifacts()) {
- System.out.println(artifact.getArtifactType());
- System.out.println(artifact.getArtifactSubtype());
- if (artifact.getImage() != null) {
- System.out.println(artifact.getImage().getWidth());
- System.out.println(artifact.getImage().getHeight());
- System.out.println(artifact.getImage().getBytes().length);
- }
- for (FormattedTextFragment fragment : artifact.getFormattedTextFragments()) {
- System.out.println(fragment.getText());
- System.out.println(fragment.getFont().getFamilyName());
- System.out.println(fragment.getFont().getSize());
- System.out.println(fragment.getForegroundColor().toArgb());
- System.out.println(fragment.getBackgroundColor().toArgb());
- }
- System.out.println(artifact.getText());
- System.out.println(artifact.getOpacity());
- System.out.println(artifact.getX());
- System.out.println(artifact.getY());
- System.out.println(artifact.getWidth());
- System.out.println(artifact.getHeight());
- System.out.println(artifact.getRotateAngle());
- }
- }
- doc.close();
- // ExEnd:ExtractArtifactInformationPDF
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes artifact from a PDF document
- */
- public static void removeArtifact() {
- try {
- // ExStart:RemoveArtifactPDF
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Remove Artifact by index
- doc.getPages().get_Item(0).getArtifacts().removeAt(0);
-
- // Remove Artifact by reference
- doc.getPages().get_Item(0).getArtifacts().remove(doc.getPages().get_Item(0).getArtifacts().get_Item(0));
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveArtifactPDF
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes artifact containing particular text formatting
- */
- public static void removeArtifactWithParticularTextFormatting() {
- try {
- // ExStart:RemoveArtifactsWithParticularTextFormatting_1
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (PdfPage page : doc.getPages()) {
- for (int i = page.getArtifacts().getCount() - 1; i >= 0; i--) {
- for (FormattedTextFragment fragment : page.getArtifacts().get_Item(i)
- .getFormattedTextFragments()) {
- if (fragment.getFont().getSize() > 42) {
- page.getArtifacts().removeAt(i);
- break;
- }
- }
- }
-
- }
-
- // Save document
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveArtifactsWithParticularTextFormatting_1
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to all images Artifacts inside a PDF document
- */
- public static void addWatermarkToArtifacts() {
- try {
- // ExStart:AddWatermarkToArtifactsPDF
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Initialize image or text watermark
- TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
- watermark.setHorizontalAlignment(HorizontalAlignment.Center);
- watermark.setVerticalAlignment(VerticalAlignment.Center);
- watermark.setRotateAngle(45);
- watermark.setSizingType(SizingType.ScaleToParentDimensions);
- watermark.setScaleFactor(1);
-
- for (PdfPage page : doc.getPages()) {
- for (PdfArtifact artifact : page.getArtifacts()) {
- if (artifact.getImage() != null) {
- // Add watermark to the image
- artifact.getImage().addWatermark(watermark);
- }
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToArtifactsPDF
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Gets information about all annotations in a PDF document
- */
- public static void extractAnnotationInformation() {
- try {
- // ExStart:ExtractAnnotationInformationPDF
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (PdfPage page : doc.getPages()) {
- for (PdfAnnotation annotation : page.getAnnotations()) {
- System.out.println(annotation.getAnnotationType());
- if (annotation.getImage() != null) {
- System.out.println(annotation.getImage().getWidth());
- System.out.println(annotation.getImage().getHeight());
- System.out.println(annotation.getImage().getBytes().length);
- }
- for (FormattedTextFragment fragment : annotation.getFormattedTextFragments()) {
- System.out.println(fragment.getText());
- System.out.println(fragment.getFont().getFamilyName());
- System.out.println(fragment.getFont().getSize());
- System.out.println(fragment.getForegroundColor().toArgb());
- System.out.println(fragment.getBackgroundColor().toArgb());
- }
- System.out.println(annotation.getText());
- System.out.println(annotation.getX());
- System.out.println(annotation.getY());
- System.out.println(annotation.getWidth());
- System.out.println(annotation.getHeight());
- System.out.println(annotation.getRotateAngle());
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:ExtractAnnotationInformationPDF
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes annotation from a PDF document
- */
- public static void removeAnnotation() {
- try {
- // ExStart:RemoveAnnotationPDF
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Remove Annotation by index
- doc.getPages().get_Item(0).getAnnotations().removeAt(0);
-
- // Remove Annotation by reference
- doc.getPages().get_Item(0).getAnnotations()
- .remove(doc.getPages().get_Item(0).getAnnotations().get_Item(0));
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveAnnotationPDF
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes annotation with particular text formatting
- */
- public static void removeAnnotationWithParticularTextFormatting() {
- try {
- // ExStart:RemoveAnnotationsWithParticularTextFormatting_1
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (PdfPage page : doc.getPages()) {
- for (int i = page.getAnnotations().getCount() - 1; i >= 0; i--) {
- for (FormattedTextFragment fragment : page.getAnnotations().get_Item(i)
- .getFormattedTextFragments()) {
- if ("Verdana".equals(fragment.getFont().getFamilyName())) {
- page.getAnnotations().removeAt(i);
- break;
- }
- }
- }
-
- }
-
- // Save document
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveAnnotationsWithParticularTextFormatting_1
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to all images Annotations inside a PDF document
- */
- public static void addWatermarkToAnnotations() {
- try {
- // ExStart:AddWatermarkToAnnotationsPDF
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Initialize image or text watermark
- TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
- watermark.setHorizontalAlignment(HorizontalAlignment.Center);
- watermark.setVerticalAlignment(VerticalAlignment.Center);
- watermark.setRotateAngle(45);
- watermark.setSizingType(SizingType.ScaleToParentDimensions);
- watermark.setScaleFactor(1);
-
- for (PdfPage page : doc.getPages()) {
- for (PdfAnnotation annotation : page.getAnnotations()) {
- if (annotation.getImage() != null) {
- // Add watermark to the image
- annotation.getImage().addWatermark(watermark);
- }
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToAnnotationsPDF
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Rasterizes a PDF document
- */
- public static void rasterizePDFDocument() {
- try {
- // ExStart:RasterizePDFDocumentPDF
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Initialize image or text watermark
- TextWatermark watermark = new TextWatermark("Do not copy", new Font("Arial", 8));
- watermark.setHorizontalAlignment(HorizontalAlignment.Center);
- watermark.setVerticalAlignment(VerticalAlignment.Center);
- watermark.setRotateAngle(45);
- watermark.setSizingType(SizingType.ScaleToParentDimensions);
- watermark.setScaleFactor(1);
- watermark.setOpacity(0.5);
-
- // Add watermark of any type first
- doc.addWatermark(watermark);
-
- // Rasterize all pages
- doc.rasterize(100, 100, PdfImageConversionFormat.Png);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RasterizePDFDocumentPDF
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Rasterizes a particular page of a PDF document
- */
- public static void rasterizeParticularPageOfPDFDocument() {
- try {
- // ExStart:RasterizeParticularPageOfPDFDocumentPDF
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Initialize image or text watermark
- TextWatermark watermark = new TextWatermark("Do not copy", new Font("Arial", 8));
- watermark.setHorizontalAlignment(HorizontalAlignment.Center);
- watermark.setVerticalAlignment(VerticalAlignment.Center);
- watermark.setRotateAngle(45);
- watermark.setSizingType(SizingType.ScaleToParentDimensions);
- watermark.setScaleFactor(1);
- watermark.setOpacity(0.5);
-
- // Add watermark of any type first
- doc.getPages().get_Item(0).addWatermark(watermark);
-
- // Rasterize the first page
- doc.getPages().get_Item(0).rasterize(100, 100, PdfImageConversionFormat.Png);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RasterizeParticularPageOfPDFDocumentPDF
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to a PDF document specifying page margin type
- */
- public static void addWatermarkWithPageMrginType() {
- try {
- // ExStart:AddWatermarkWithPageMrginTypePDF
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 42));
- watermark.setHorizontalAlignment(HorizontalAlignment.Right);
- watermark.setVerticalAlignment(VerticalAlignment.Top);
- watermark.setSizingType(SizingType.ScaleToParentDimensions);
- watermark.setScaleFactor(1);
-
- doc.setPageMarginType(PdfPageMarginType.BleedBox);
- watermark.setConsiderParentMargins(true);
- doc.addWatermark(watermark);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkWithPageMrginTypePDF
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Extracts attachments from PDF document
- */
- public static void extractAttachments() {
- try {
- // ExStart:extractAttachmentsPDF
- String targetFolder = Common.ATTACHMENTS_PATH;
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (PdfAttachment attachment : doc.getAttachments()) {
- System.out.println("Name: " + attachment.getName());
- System.out.println("Description: " + attachment.getDescription());
- System.out.println("File format: " + attachment.getDocumentInfo().getFileFormat());
-
- // Save the attached file on disk
- FileOutputStream fileStream = new FileOutputStream(targetFolder + "\\" + attachment.getName());
- fileStream.write(attachment.getContent());
- fileStream.close();
- }
- doc.close();
- // ExEnd:extractAttachmentsPDF
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes particular attachment from PDF document
- */
- public static void removeAttachment() {
- try {
- // ExStart:removeAttachmentPDF
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (int i = doc.getAttachments().getCount() - 1; i >= 0; i--) {
- PdfAttachment attachment = doc.getAttachments().get_Item(i);
-
- // Remove all attached pdf files with a particular name
- if (attachment.getName().contains("EULA")
- && attachment.getDocumentInfo().getFileFormat() == FileFormat.Pdf) {
- doc.getAttachments().removeAt(i);
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:removeAttachmentPDF
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to all attached files of supported types
- */
- public static void addWatermarkToAttachments() {
- try {
- // ExStart:addWatermarkToAttachmentsPDF
- TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 19));
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (PdfAttachment attachment : doc.getAttachments()) {
- // Check if the attached file is supported by
- // GroupDocs.Watermark
- if (attachment.getDocumentInfo().getFileFormat() != FileFormat.Undefined
- && !attachment.getDocumentInfo().isEncrypted()) {
- // Load the attached document
- Document attachedDocument = attachment.loadDocument();
-
- // Add wateramrk
- attachedDocument.addWatermark(watermark);
-
- // Save changes in the attached file
- attachment.updateDocument(attachedDocument);
-
- // Close the attached document
- attachedDocument.close();
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:addWatermarkToAttachmentsPDF
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Searches for images in attached files
- */
- public static void searchImagesInAttachments() {
- try {
- // ExStart:searchImagesInAttachmentsPDF
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Consider only the attached images
- doc.getSearchableObjects().setPdfSearchableObjects(PdfSearchableObjects.AttachedImages);
-
- // Specify sample image to compare document images with
- ImageSearchCriteria criteria = new ImageDctHashSearchCriteria(Common.WATERMARK_IMAGE_PATH);
-
- // Search for similar images
- PossibleWatermarkCollection possibleWatermarks = doc.findWatermarks(criteria);
-
- // Remove found image watermarks
- possibleWatermarks.clear();
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:searchImagesInAttachmentsPDF
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds attachment to PDF file
- */
- public static void addAttachments() {
- try {
- // ExStart:addAttachmentsPDF
- String attachmentPath = Common.mapSourceFilePath("sample.docx");
- File attachmentFile = new File(attachmentPath);
- byte[] attachmentBytes = new byte[(int) attachmentFile.length()];
- InputStream attachmentInputStream = new FileInputStream(attachmentFile);
- attachmentInputStream.read(attachmentBytes);
- attachmentInputStream.close();
-
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Add the attachment
- doc.getAttachments().add(attachmentBytes, "License Agreement.doc", "end-user license agreement");
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:addAttachmentsPDF
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Replaces text for particular XObject
- */
- public static void replaceTextForParticularXObject() {
- try {
- // ExStart:ReplaceTextForParticularXObject_18.3
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
- for (PdfXObject xObject : doc.getPages().get_Item(0).getXObjects()) {
- if (xObject.getText().contains("Test")) {
- xObject.setText("Passed");
- }
- }
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:ReplaceTextForParticularXObject_18.3
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Replaces text for particular artifact
- */
- public static void replaceTextForParticularArtifact() {
- try {
- // ExStart:ReplaceTextForParticularArtifact_18.3
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
- for (PdfArtifact artifact : doc.getPages().get_Item(0).getArtifacts()) {
- if (artifact.getText().contains("Test")) {
- artifact.setText("Passed");
- }
- }
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:ReplaceTextForParticularArtifact_18.3
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Replaces text for particular annotation
- */
- public static void replaceTextForParticularAnnotation() {
- try {
- // ExStart:ReplaceTextForParticularAnnotation_18.3
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
- for (PdfAnnotation annotation : doc.getPages().get_Item(0).getAnnotations()) {
- if (annotation.getText().contains("Test")) {
- annotation.setText("Passed");
- }
- }
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:ReplaceTextForParticularAnnotation_18.3
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Replaces text for particular XObject with formatting
- */
- public static void replaceTextForParticularXObjectWithFormatting() {
- try {
- // ExStart:ReplaceTextForParticularXObjectWithFormatting_18.3
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
- for (PdfXObject xObject : doc.getPages().get_Item(0).getXObjects()) {
- if (xObject.getText().contains("Test")) {
- xObject.getFormattedTextFragments().clear();
- xObject.getFormattedTextFragments().add("Passed", new Font("Calibri", 19, FontStyle.Bold),
- Color.getRed(), Color.getAqua());
- }
- }
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:ReplaceTextForParticularXObjectWithFormatting_18.3
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Replaces text for particular artifact with formatting
- */
- public static void replaceTextForParticularArtifactWithFormatting() {
- try {
- // ExStart:ReplaceTextForParticularArtifactWithFormatting_18.3
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
- for (PdfArtifact artifact : doc.getPages().get_Item(0).getArtifacts()) {
- if (artifact.getText().contains("Test")) {
- artifact.getFormattedTextFragments().clear();
- artifact.getFormattedTextFragments().add("Passed", new Font("Calibri", 19, FontStyle.Bold),
- Color.getRed(), Color.getAqua());
- }
- }
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:ReplaceTextForParticularArtifactWithFormatting_18.3
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Replaces text for particular annotation with formatting
- */
- public static void replaceTextForParticularAnnotationWithFormatting() {
- try {
- // ExStart:ReplaceTextForParticularAnnotationWithFormatting_18.3
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
- for (PdfAnnotation annotation : doc.getPages().get_Item(0).getAnnotations()) {
- if (annotation.getText().contains("Test")) {
- annotation.getFormattedTextFragments().clear();
- annotation.getFormattedTextFragments().add("Passed", new Font("Calibri", 19, FontStyle.Bold),
- Color.getRed(), Color.getAqua());
- }
- }
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:ReplaceTextForParticularAnnotationWithFormatting_18.3
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Replaces image for particular XObject
- */
- public static void replaceImageForParticularXObject() {
- try {
- // ExStart:ReplaceImageForParticularXObject_18.3
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
- String imagePath = "D:\\test.png";
- File imageFile = new File(imagePath);
- byte[] imageBytes = new byte[(int) imageFile.length()];
- InputStream imageInputStream = new FileInputStream(imageFile);
- imageInputStream.read(imageBytes);
- imageInputStream.close();
-
- for (PdfXObject xObject : doc.getPages().get_Item(0).getXObjects()) {
- if (xObject.getImage() != null) {
- xObject.setImage(new PdfWatermarkableImage(imageBytes));
- }
- }
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:ReplaceImageForParticularXObject_18.3
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Replaces image for particular artifact
- */
- public static void replaceImageForParticularArtifact() {
- try {
- // ExStart:ReplaceImageForParticularArtifact_18.3
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
- String imagePath = "D:\\test.png";
- File imageFile = new File(imagePath);
- byte[] imageBytes = new byte[(int) imageFile.length()];
- InputStream imageInputStream = new FileInputStream(imageFile);
- imageInputStream.read(imageBytes);
- imageInputStream.close();
-
- for (PdfArtifact artifact : doc.getPages().get_Item(0).getArtifacts()) {
- if (artifact.getImage() != null) {
- artifact.setImage(new PdfWatermarkableImage(imageBytes));
- }
- }
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:ReplaceImageForParticularArtifact_18.3
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Replaces image for particular annotation
- */
- public static void replaceImageForParticularAnnotation() {
- try {
- // ExStart:ReplaceImageForParticularAnnotation_18.3
- PdfDocument doc = Document.load(PdfDocument.class, Common.mapSourceFilePath(FILE_PATH));
- String imagePath = "D:\\test.png";
- File imageFile = new File(imagePath);
- byte[] imageBytes = new byte[(int) imageFile.length()];
- InputStream imageInputStream = new FileInputStream(imageFile);
- imageInputStream.read(imageBytes);
- imageInputStream.close();
-
- for (PdfAnnotation annotation : doc.getPages().get_Item(0).getAnnotations()) {
- if (annotation.getImage() != null) {
- annotation.setImage(new PdfWatermarkableImage(imageBytes));
- }
- }
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:ReplaceImageForParticularAnnotation_18.3
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- }
-
- public static class Word {
- // initialize file path
- // ExStart:SourceWordFilePath
- private final static String FILE_PATH = "sample_with_watermark.docx";
-
- // ExEnd:SourceWordFilePath
- /**
- * Adds watermark to a section of Word document
- */
- public static void addWatermarkToSection() {
- try {
- // ExStart:AddWatermarkToSection
- WordsDocument doc = Document.load(WordsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 19));
-
- // Add watermark to all visible headers of the first section
- doc.getSections().get_Item(0).addWatermark(watermark);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToSection
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to a particular page of Word document
- */
- public static void addWatermarkToParticuarPage() {
- try {
- // ExStart:AddWatermarkToParticuarPageWord
- WordsDocument doc = Document.load(WordsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- TextWatermark textWatermark = new TextWatermark("DRAFT", new Font("Arial", 42));
-
- // Add watermark to the last page
- doc.addWatermark(textWatermark, doc.getPageCount());
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToParticuarPageWord
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds locked watermark to a section of Word document
- **/
- public static void addLockedWatermarkToSection() {
- try {
- // ExStart:AddLockedWatermarkToSection_18.6
- WordsDocument doc = Document.load(WordsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- TextWatermark watermark = new TextWatermark("Watermark text", new Font("Arial", 19));
- watermark.setForegroundColor(Color.getRed());
-
- WordsShapeSettings settings = new WordsShapeSettings();
- settings.setLocked(true);
- settings.setLockType(WordsLockType.ReadOnlyWithEditableContent);
- settings.setPassword("7654321");
-
- doc.getSections().get_Item(0).addWatermark(watermark, settings);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddLockedWatermarkToSection_18.6
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds locked watermark to all pages of Word document
- **/
- public static void addLockedWatermarkToAllPages() {
- try {
- // ExStart:AddLockedWatermarkToAllPages_18.6
- WordsDocument doc = Document.load(WordsDocument.class, Common.mapSourceFilePath(FILE_PATH));
- TextWatermark watermark = new TextWatermark("Watermark text", new Font("Arial", 19));
- watermark.setForegroundColor(Color.getRed());
-
- WordsShapeSettings settings = new WordsShapeSettings();
- settings.setLocked(true);
- settings.setLockType(WordsLockType.AllowOnlyFormFields);
- settings.setPassword("7654321");
-
- doc.addWatermark(watermark, settings);
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddLockedWatermarkToAllPages_18.6
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds locked watermark to particular pages of Word document
- **/
- public static void addLockedWatermarkToParticularPages() {
- try {
- // ExStart:AddLockedWatermarkToParticularPages_18.6
- WordsDocument doc = Document.load(WordsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- TextWatermark watermark = new TextWatermark("Watermark text", new Font("Arial", 19));
- watermark.setForegroundColor(Color.getRed());
-
- WordsShapeSettings settings = new WordsShapeSettings();
- settings.setPageNumbers(new int[] { 1, 3 });
- settings.setLocked(true);
- settings.setLockType(WordsLockType.AllowOnlyComments);
- settings.setPassword("7654321");
-
- doc.addWatermark(watermark, settings);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddLockedWatermarkToParticularPages_18.6
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Gets properties of a section of Word document
- */
- public static void getSectionProperties() {
- try {
- // ExStart:GetSectionProperties
- WordsDocument doc = Document.load(WordsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- WordsPageSetup pageSetup = doc.getSections().get_Item(0).getPageSetup();
-
- System.out.println(pageSetup.getWidth());
- System.out.println(pageSetup.getHeight());
- System.out.println(pageSetup.getTopMargin());
- System.out.println(pageSetup.getRightMargin());
- System.out.println(pageSetup.getBottomMargin());
- System.out.println(pageSetup.getLeftMargin());
-
- doc.close();
- // ExEnd:GetSectionProperties
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Links header/footer to the previous section of Word document
- */
- public static void linkHeaderFooterInSection() {
- try {
- // ExStart:LinkHeaderFooterInSection
- WordsDocument doc = Document.load(WordsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Link footer for even numbered pages to corresponding footer
- // in previous section
- doc.getSections().get_Item(0).getHeadersFooters()
- .getByOfficeHeaderFooterType(OfficeHeaderFooterType.FooterEven).setLinkedToPrevious(true);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:LinkHeaderFooterInSection
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Links all header/footer to the previous section of Word document
- */
- public static void linkAllHeaderFooterInSection() {
- try {
- // ExStart:LinkAllHeaderFooterInSection
- WordsDocument doc = Document.load(WordsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Link all headers and footers to the corresponding headers and
- // footers in the previous section.
- doc.getSections().get_Item(0).getHeadersFooters().linkToPrevious(true);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:LinkAllHeaderFooterInSection
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Links all header/footer to the previous section and adds watermark
- */
- public static void linkAllHeaderFooterInSectionAndAddsWatermark() {
- try {
- // ExStart:LinkAllHeaderFooterInSection
- WordsDocument doc = Document.load(WordsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- ImageWatermark watermark = new ImageWatermark(Common.WATERMARK_IMAGE_PATH);
-
- // Add watermark to all visible headers of the first section
- doc.getSections().get_Item(0).addWatermark(watermark);
-
- watermark.close();
-
- // Link all other headers&footers to corresponding
- // headers&footers of the first section
- for (int i = 1; i < doc.getSections().getCount(); i++) {
- doc.getSections().get_Item(i).getHeadersFooters().linkToPrevious(true);
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:LinkAllHeaderFooterInSection
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Sets different headers/footers for even/odd numbered pages and for
- * the first page of the document
- */
- public static void setDifferentFirstPageHeaderFooter() {
- try {
- // ExStart:SetDifferentFirstPageHeaderFooter
- WordsDocument doc = Document.load(WordsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- doc.getSections().get_Item(0).getPageSetup().setDifferentFirstPageHeaderFooter(true);
- doc.getSections().get_Item(0).getPageSetup().setOddAndEvenPagesHeaderFooter(true);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:SetDifferentFirstPageHeaderFooter
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds image watermark to a word document
- */
- public static void addImageWatermark() {
- try {
- // ExStart:AddImageWatermarkToWord
- WordsDocument doc = Document.load(WordsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- ImageWatermark watermark = new ImageWatermark(Common.WATERMARK_IMAGE_PATH);
-
- // Add watermark to all visible headers of the first section
- doc.getSections().get_Item(0).addWatermark(watermark);
-
- watermark.close();
-
- // Link all other headers&footers to corresponding
- // headers&footers of the first section
- for (int i = 1; i < doc.getSections().getCount(); i++) {
- doc.getSections().get_Item(i).getHeadersFooters().linkToPrevious(true);
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddImageWatermarkToWord
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to all images inside a section of Word document
- */
- public static void addWatermarkToImages() {
- try {
- // ExStart:AddWatermarkToImagesWordSection
- WordsDocument doc = Document.load(WordsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Initialize image or text watermark
- TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
- watermark.setHorizontalAlignment(HorizontalAlignment.Center);
- watermark.setVerticalAlignment(VerticalAlignment.Center);
- watermark.setRotateAngle(45);
- watermark.setSizingType(SizingType.ScaleToParentDimensions);
- watermark.setScaleFactor(1);
-
- // Get all images belonging to the first section
- WatermarkableImageCollection images = doc.getSections().get_Item(0).findImages();
-
- // Add watermark to all found images
- for (WatermarkableImage image : images) {
- image.addWatermark(watermark);
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToImagesWordSection
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to Word document with Words Shape Settings
- */
- public static void addWatermarkWithWordsShapeSettings() {
- try {
- // ExStart:AddWatermarkWithWordsShapeSettings
- WordsDocument doc = Document.load(WordsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- TextWatermark watermark = new TextWatermark("This is test watermark", new Font("Arial", 19));
- WordsShapeSettings shapeSettings = new WordsShapeSettings();
-
- // Set the shape name
- shapeSettings.setName("Shape 1");
-
- // Set the descriptive (alternative) text that will be
- // associated with the shape
- shapeSettings.setAlternativeText("Test watermark");
-
- doc.addWatermark(watermark, shapeSettings);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkWithWordsShapeSettings
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to Word document with text effects
- */
- public static void addWatermarkWithTextEffects() {
- try {
- // ExStart:AddWatermarkWithTextEffectsWord
- WordsDocument doc = Document.load(WordsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 19));
-
- WordsTextEffects effects = new WordsTextEffects();
- effects.getLineFormat().setEnabled(true);
- effects.getLineFormat().setColor(Color.getRed());
- effects.getLineFormat().setDashStyle(OfficeDashStyle.DashDotDot);
- effects.getLineFormat().setLineStyle(OfficeLineStyle.Triple);
- effects.getLineFormat().setWeight(1);
- doc.addTextWatermark(watermark, effects);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkWithTextEffectsWord
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to Word document with image effects
- */
- public static void addWatermarkWithImageEffects() {
- try {
- // ExStart:AddWatermarkWithImageEffectsWord
- WordsDocument doc = Document.load(WordsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- ImageWatermark watermark = new ImageWatermark(Common.WATERMARK_IMAGE_PATH);
-
- WordsImageEffects effects = new WordsImageEffects();
- effects.setBrightness(0.7);
- effects.setContrast(0.6);
- effects.setChromaKey(Color.getWhite());
- effects.getBorderLineFormat().setEnabled(true);
- effects.getBorderLineFormat().setWeight(1);
- doc.addImageWatermark(watermark, effects);
- watermark.close();
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkWithImageEffectsWord
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes watermark from a particular section of Word document
- */
- public static void removeWatermarkFromSection() {
- try {
- // ExStart:RemoveWatermarkFromSection
- WordsDocument doc = Document.load(WordsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Initialize search criteria
- ImageSearchCriteria imageSearchCriteria = new ImageDctHashSearchCriteria(Common.WATERMARK_IMAGE_PATH);
- TextSearchCriteria textSearchCriteria = new TextSearchCriteria("This is test watermark");
-
- // Call findWatermarks method for a section
- PossibleWatermarkCollection possibleWatermarks = doc.getSections().get_Item(0)
- .findWatermarks(textSearchCriteria.or(imageSearchCriteria));
-
- // Remove all found watermarks
- for (int i = possibleWatermarks.getCount() - 1; i >= 0; i--) {
- possibleWatermarks.removeAt(i);
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveWatermarkFromSection
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Finds watermarks in a header/footer of Word document
- */
- public static void findWatermarkInHeaderFooter() {
- try {
- // ExStart:FindWatermarkInHeaderFooter
- WordsDocument doc = Document.load(WordsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- ImageSearchCriteria imageSearchCriteria = new ImageDctHashSearchCriteria(Common.WATERMARK_IMAGE_PATH);
- TextSearchCriteria textSearchCriteria = new TextSearchCriteria("Company Name");
-
- PossibleWatermarkCollection possibleWatermarks = doc.getSections().get_Item(0).getHeadersFooters()
- .getByOfficeHeaderFooterType(OfficeHeaderFooterType.HeaderPrimary)
- .findWatermarks(textSearchCriteria.or(imageSearchCriteria));
-
- System.out.println(possibleWatermarks.getCount());
- doc.close();
- // ExEnd:FindWatermarkInHeaderFooter
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Extracts information about all the shapes is a Word document
- */
- public static void getShapesInformation() {
- try {
- // ExStart:GetShapesInformationWord
- WordsDocument doc = Document.load(WordsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (WordsSection section : doc.getSections()) {
- for (WordsShape shape : section.getShapes()) {
- if (shape.getHeaderFooter() != null) {
- System.out.println("In header/footer");
- }
-
- System.out.println(shape.getShapeType());
- System.out.println(shape.getWidth());
- System.out.println(shape.getHeight());
- System.out.println(shape.isWordArt());
- System.out.println(shape.getRotateAngle());
- System.out.println(shape.getAlternativeText());
- System.out.println(shape.getName());
- System.out.println(shape.getX());
- System.out.println(shape.getY());
- System.out.println(shape.getText());
- if (shape.getImage() != null) {
- System.out.println(shape.getImage().getWidth());
- System.out.println(shape.getImage().getHeight());
- System.out.println(shape.getImage().getBytes().length);
- }
-
- for (FormattedTextFragment fragment : shape.getFormattedTextFragments()) {
- System.out.println(fragment.getText());
- System.out.println(fragment.getFont().getFamilyName());
- System.out.println(fragment.getFont().getSize());
- System.out.println(fragment.getForegroundColor().toArgb());
- System.out.println(fragment.getBackgroundColor().toArgb());
- }
-
- System.out.println(shape.getHorizontalAlignment());
- System.out.println(shape.getVerticalAlignment());
- System.out.println(shape.getRelativeHorizontalPosition());
- System.out.println(shape.getRelativeVerticalPosition());
- System.out.println(shape.getHyperlink());
- }
- }
-
- doc.close();
- // ExEnd:GetShapesInformationWord
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes shape in a Word document
- */
- public static void removeShape() {
- try {
- // ExStart:RemoveShapeWordDocument
- WordsDocument doc = Document.load(WordsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Remove shape by index
- doc.getSections().get_Item(0).getShapes().removeAt(0);
-
- // Remove shape by reference
- doc.getSections().get_Item(0).getShapes().remove(doc.getSections().get_Item(0).getShapes().get_Item(0));
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveShapeWordDocument
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes shape with particular text formatting
- */
- public static void removeShapeWithParticularTextFormatting() {
- try {
- // ExStart:RemoveTextShapesWithParticularTextFormattingWord_1
- WordsDocument doc = Document.load(WordsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (WordsSection section : doc.getSections()) {
- for (int i = section.getShapes().getCount() - 1; i >= 0; i--) {
- for (FormattedTextFragment fragment : section.getShapes().get_Item(i)
- .getFormattedTextFragments()) {
- if ("Arial".equals(fragment.getFont().getFamilyName())
- && Color.getRed().equals(fragment.getForegroundColor())) {
- section.getShapes().removeAt(i);
- break;
- }
- }
- }
-
- }
-
- // Save document
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveTextShapesWithParticularTextFormattingWord_1
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to all image shapes in a Word document
- */
- public static void addWatermarkToImageShapes() {
- try {
- // ExStart:AddWatermarkToImageShapesWordDocument
- WordsDocument doc = Document.load(WordsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Initialize image or text watermark
- TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
- watermark.setHorizontalAlignment(HorizontalAlignment.Center);
- watermark.setVerticalAlignment(VerticalAlignment.Center);
- watermark.setRotateAngle(45);
- watermark.setSizingType(SizingType.ScaleToParentDimensions);
- watermark.setScaleFactor(1);
-
- for (WordsSection section : doc.getSections()) {
- for (WordsShape shape : section.getShapes()) {
- // Headers&Footers usually contains only service
- // information.
- // So, we skip images in headers/footers, expecting that
- // they are probably watermarks or backgrounds
- if (shape.getHeaderFooter() == null && shape.getImage() != null) {
- shape.getImage().addWatermark(watermark);
- }
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToImageShapesWordDocument
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes/replaces hyperlink associated with a particular shape
- */
- public static void removeHyperlinkAssociatedWithParticularShape() {
- try {
- // ExStart:RemoveHyperlinksWord_1
- WordsDocument doc = Document.load(WordsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Replace hyperlink
- doc.getSections().get_Item(0).getShapes().get_Item(0).setHyperlink("https://www.groupdocs.com/");
-
- // Remove hyperlink
- doc.getSections().get_Item(0).getShapes().get_Item(1).setHyperlink(null);
-
- // Save document
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveHyperlinksWord_1
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Protects a Word document
- */
- public static void protectWordDocument() {
- try {
- // ExStart:ProtectWordDocument_18.6
- WordsDocument doc = Document.load(WordsDocument.class, Common.mapSourceFilePath(FILE_PATH));
- doc.protect(WordsProtectionType.ReadOnly, "7654321");
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:ProtectWordDocument_18.6
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes protection from Word document
- */
- public static void unprotectWordDocument() {
- try {
- // ExStart:UnProtectWordDocument_18.6
- WordsDocument doc = Document.load(WordsDocument.class, Common.mapSourceFilePath(FILE_PATH));
- doc.unprotect();
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:UnProtectWordDocument_18.6
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
- }
-
- public static class Excel {
- // initialize file path
- // ExStart:SourceExcelFilePath
- private final static String FILE_PATH = "sample.xlsx";
- // ExEnd:SourceExcelFilePath
-
- /**
- * Adds watermark to Excel spreadsheet
- */
- public static void addWatermark() {
- try {
- // ExStart:AddWatermarkToExcel
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Add text watermark
- TextWatermark textWatermark = new TextWatermark("Test watermark", new Font("Arial", 8));
- doc.getWorksheets().get_Item(0).addWatermark(textWatermark);
-
- // Add image watermark
- ImageWatermark imageWatermark = new ImageWatermark(Common.WATERMARK_IMAGE_PATH);
- doc.getWorksheets().get_Item(0).addWatermark(imageWatermark);
- imageWatermark.close();
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToExcel
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Gets content area dimensions of Excel worksheet
- */
- public static void getContentAreaDimensions() {
- try {
- // ExStart:GetContentAreaDimensionsExcel
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Get the size of content area
- System.out.println(doc.getWorksheets().get_Item(0).getContentAreaHeight());
- System.out.println(doc.getWorksheets().get_Item(0).getContentAreaWidth());
-
- // Get the size of particular cell
- System.out.println(doc.getWorksheets().get_Item(0).getColumnWidth(0));
- System.out.println(doc.getWorksheets().get_Item(0).getRowHeight(0));
-
- doc.close();
- // ExEnd:GetContentAreaDimensionsExcel
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to all images inside an Excel worksheet
- */
- public static void addWatermarkToImages() {
- try {
- // ExStart:AddWatermarkToImagesExcelWorksheet
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Initialize image or text watermark
- TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
- watermark.setHorizontalAlignment(HorizontalAlignment.Center);
- watermark.setVerticalAlignment(VerticalAlignment.Center);
- watermark.setRotateAngle(45);
- watermark.setSizingType(SizingType.ScaleToParentDimensions);
- watermark.setScaleFactor(1);
-
- // Get all images from the first worksheet
- WatermarkableImageCollection images = doc.getWorksheets().get_Item(0).findImages();
-
- // Add watermark to all found images
- for (WatermarkableImage image : images) {
- image.addWatermark(watermark);
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
-
- // ExEnd:AddWatermarkToImagesExcelWorksheet
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds modern word art watermark to Excel worksheet
- */
- public static void addModernWordArdWatermark() {
- try {
- // ExStart:AddModernWordArdWatermarkToExcel
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- TextWatermark textWatermark = new TextWatermark("Test watermark", new Font("Arial", 36));
- doc.getWorksheets().get_Item(0).addModernWordArtWatermark(textWatermark);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddModernWordArdWatermarkToExcel
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to Excel worksheet with additional shape settings
- */
- public static void addWatermarkUsingCellsShapeSettings() {
- try {
- // ExStart:AddWatermarkUsingCellsShapeSettings
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- TextWatermark textWatermark = new TextWatermark("Test watermark", new Font("Arial", 36));
- CellsShapeSettings shapeSettings = new CellsShapeSettings();
-
- // Set the shape name
- shapeSettings.setName("Shape 1");
-
- // Set the descriptive (alternative) text that will be
- // associated with the shape
- shapeSettings.setAlternativeText("Test watermark");
-
- // Editing of the shape in Excel is forbidden
- shapeSettings.setLocked(true);
- doc.addModernWordArtWatermark(textWatermark, shapeSettings);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkUsingCellsShapeSettings
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark with text effects to Excel worksheet
- */
- public static void addWatermarkWithTextEffects() {
- try {
- // ExStart:AddWatermarkWithTextEffectsToExcel
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- TextWatermark watermark = new TextWatermark("Test watermark", new Font("Segoe UI", 19));
-
- CellsTextEffects effects = new CellsTextEffects();
- effects.getLineFormat().setEnabled(true);
- effects.getLineFormat().setColor(Color.getRed());
- effects.getLineFormat().setDashStyle(OfficeDashStyle.DashDotDot);
- effects.getLineFormat().setLineStyle(OfficeLineStyle.Triple);
- effects.getLineFormat().setWeight(1);
-
- doc.addTextWatermark(watermark, effects);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkWithTextEffectsToExcel
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark with image effects to Excel worksheet
- */
- public static void addWatermarkWithImageEffects() {
- try {
- // ExStart:AddWatermarkWithImageEffectsToExcel
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- ImageWatermark watermark = new ImageWatermark(Common.WATERMARK_IMAGE_PATH);
-
- CellsImageEffects effects = new CellsImageEffects();
- effects.setBrightness(0.7);
- effects.setContrast(0.6);
- effects.setChromaKey(Color.getWhite());
- effects.getBorderLineFormat().setEnabled(true);
- effects.getBorderLineFormat().setWeight(1);
-
- doc.addImageWatermark(watermark, effects);
- watermark.close();
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkWithImageEffectsToExcel
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark as background to Excel worksheet
- */
- public static void addWatermarkAsBackground() {
- try {
- // ExStart:AddWatermarkAsBackgroundToExcel
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- ImageWatermark watermark = new ImageWatermark(Common.WATERMARK_IMAGE_PATH);
- doc.addWatermarkAsBackground(watermark);
- watermark.close();
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkAsBackgroundToExcel
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark as background with relative size and position to Excel
- * worksheet
- */
- public static void addWatermarkAsBackgroundWithRelativeSizeAndPosition() {
- try {
- // ExStart:AddWatermarkAsBackgroundWithRelativeSizeAndPosition
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- ImageWatermark watermark = new ImageWatermark(Common.WATERMARK_IMAGE_PATH);
- watermark.setHorizontalAlignment(HorizontalAlignment.Center);
- watermark.setVerticalAlignment(VerticalAlignment.Center);
- watermark.setRotateAngle(90);
- watermark.setSizingType(SizingType.ScaleToParentDimensions);
- watermark.setScaleFactor(0.5);
- doc.getWorksheets().get_Item(0).addWatermarkAsBackground(watermark, doc.getWorksheets().get_Item(0)
- .getContentAreaWidthPx() /* set background width */,
- doc.getWorksheets().get_Item(0)
- .getContentAreaHeightPx() /*
- * set background
- * height
- */);
- watermark.close();
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkAsBackgroundWithRelativeSizeAndPosition
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark text as background to Excel worksheet
- *
- */
- public static void addWatermarkAsBackground(String WatermarkText) {
- try {
- // ExStart:AddWatermarkTextAsBackgroundToExcel
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 19));
- watermark.setHorizontalAlignment(HorizontalAlignment.Center);
- watermark.setVerticalAlignment(VerticalAlignment.Center);
- watermark.setRotateAngle(45);
- watermark.setSizingType(SizingType.ScaleToParentDimensions);
- watermark.setScaleFactor(0.5);
- watermark.setOpacity(0.5);
- doc.getWorksheets().get_Item(0).addWatermarkAsBackground(watermark, doc.getWorksheets().get_Item(0)
- .getContentAreaWidthPx() /* set background width */,
- doc.getWorksheets().get_Item(0)
- .getContentAreaHeightPx() /*
- * set background
- * height
- */);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkTextAsBackgroundToExcel
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds image watermark into header/footer of Excel worksheet
- */
- public static void addWatermarkIntoHeaderFooter() {
- try {
- // ExStart:AddImageWatermarkIntoHeaderFooter
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- ImageWatermark watermark = new ImageWatermark(Common.WATERMARK_IMAGE_PATH);
-
- watermark.setVerticalAlignment(VerticalAlignment.Top);
- watermark.setHorizontalAlignment(HorizontalAlignment.Center);
- watermark.setSizingType(SizingType.ScaleToParentDimensions);
- watermark.setScaleFactor(1);
- doc.getWorksheets().get_Item(0).addWatermarkIntoHeaderFooter(watermark);
- watermark.close();
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddImageWatermarkIntoHeaderFooter
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds text watermark into header/footer of Excel worksheet
- *
- */
- public static void addWatermarkIntoHeaderFooter(String WatermarkText) {
- try {
- // ExStart:AddTextWatermarkIntoHeaderFooter
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- TextWatermark watermark = new TextWatermark("Test watermark", new Font("Segoe UI", 19, FontStyle.Bold));
- watermark.setForegroundColor(Color.getRed());
- watermark.setVerticalAlignment(VerticalAlignment.Top);
- watermark.setHorizontalAlignment(HorizontalAlignment.Center);
- doc.getWorksheets().get_Item(0).addWatermarkIntoHeaderFooter(watermark);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddTextWatermarkIntoHeaderFooter
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes watermark from Excel worksheet
- */
- public static void removeWatermark() {
- try {
- // ExStart:RemoveWatermarkExcelWorksheet
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Initialize search criteria
- ImageSearchCriteria imageSearchCriteria = new ImageDctHashSearchCriteria(Common.WATERMARK_IMAGE_PATH);
- TextSearchCriteria textSearchCriteria = new TextSearchCriteria("Test watermark");
-
- // Call findWatermarks method for a worksheet
- PossibleWatermarkCollection possibleWatermarks = doc.getWorksheets().get_Item(0)
- .findWatermarks(textSearchCriteria.or(imageSearchCriteria));
-
- // Remove all found watermarks
- for (int i = possibleWatermarks.getCount() - 1; i >= 0; i--) {
- possibleWatermarks.removeAt(i);
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveWatermarkExcelWorksheet
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Extracts information about all the shapes is a Excel document
- */
- public static void getShapesInformation() {
- try {
- // ExStart:GetShapesInformationExcel
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (CellsWorksheet worksheet : doc.getWorksheets()) {
- for (CellsShape shape : worksheet.getShapes()) {
- System.out.println(shape.getAutoShapeType());
- System.out.println(shape.getMsoDrawingType());
- System.out.println(shape.getText());
- if (shape.getImage() != null) {
- System.out.println(shape.getImage().getWidth());
- System.out.println(shape.getImage().getHeight());
- System.out.println(shape.getImage().getBytes().length);
- }
- for (FormattedTextFragment fragment : shape.getFormattedTextFragments()) {
- System.out.println(fragment.getText());
- System.out.println(fragment.getFont().getFamilyName());
- System.out.println(fragment.getFont().getSize());
- System.out.println(fragment.getForegroundColor().toArgb());
- System.out.println(fragment.getBackgroundColor().toArgb());
- }
- System.out.println(shape.getHyperlink());
- System.out.println(shape.getId());
- System.out.println(shape.getAlternativeText());
- System.out.println(shape.getX());
- System.out.println(shape.getY());
- System.out.println(shape.getWidth());
- System.out.println(shape.getHeight());
- System.out.println(shape.getRotateAngle());
- System.out.println(shape.isWordArt());
- System.out.println(shape.getName());
- }
- }
-
- doc.close();
- // ExEnd:GetShapesInformationExcel
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes shape in an Excel worksheet
- */
- public static void removeShape() {
- try {
- // ExStart:RemoveShapeExcelWorksheet
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Remove shape by index
- doc.getWorksheets().get_Item(0).getShapes().removeAt(0);
-
- // Remove shape by reference
- doc.getWorksheets().get_Item(0).getShapes()
- .remove(doc.getWorksheets().get_Item(0).getShapes().get_Item(0));
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveShapeExcelWorksheet
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes shape with particular text formatting
- */
- public static void removeShapeWithParticularTextFormatting() {
- try {
- // ExStart:RemoveTextShapesWithParticularTextFormattingExcel_1
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (CellsWorksheet worksheet : doc.getWorksheets()) {
- for (int i = worksheet.getShapes().getCount() - 1; i >= 0; i--) {
- for (FormattedTextFragment fragment : worksheet.getShapes().get_Item(i)
- .getFormattedTextFragments()) {
- if ("Arial".equals(fragment.getFont().getFamilyName())
- && Color.getRed().equals(fragment.getForegroundColor())) {
- worksheet.getShapes().removeAt(i);
- break;
- }
- }
- }
- }
-
- // Save document
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveTextShapesWithParticularTextFormattingExcel_1
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to all image shapes in a Excel document
- */
- public static void addWatermarkToImageShapes() {
- try {
- // ExStart:AddWatermarkToImageShapesExcelDocument
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Initialize image or text watermark
- TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
- watermark.setHorizontalAlignment(HorizontalAlignment.Center);
- watermark.setVerticalAlignment(VerticalAlignment.Center);
- watermark.setRotateAngle(45);
- watermark.setSizingType(SizingType.ScaleToParentDimensions);
- watermark.setScaleFactor(1);
-
- for (CellsWorksheet worksheet : doc.getWorksheets()) {
- for (CellsShape shape : worksheet.getShapes()) {
- if (shape.getImage() != null) {
- // Add watermark to the image
- shape.getImage().addWatermark(watermark);
- }
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToImageShapesExcelDocument
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Replaces text for particular shapes
- */
- public static void replaceTextForParticularShapes() {
- try {
- // ExStart:ReplaceTextForParticularShapes_17.12
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (CellsShape shape : doc.getWorksheets().get_Item(0).getShapes()) {
- if (" Aspose 2016".equals(shape.getText())) {
- shape.setText(" GroupDocs 2017");
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:ReplaceTextForParticularShapes_17.12
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
-
- }
-
- /**
- * Replaces text with formatting for particular shapes
- */
- public static void replaceTextWithParticularFormatting() {
-
- try {
- // ExStart:ReplaceTextWithFormattingForParticularShapes_17.12
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (CellsShape shape : doc.getWorksheets().get_Item(0).getShapes()) {
- if (" Aspose 2016".equals(shape.getText())) {
- shape.getFormattedTextFragments().clear();
- shape.getFormattedTextFragments().add(" GroupDocs 2017",
- new Font("Calibri", 19, FontStyle.Bold), Color.getRed(), Color.getAqua());
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:ReplaceTextWithFormattingForParticularShapes_17.12
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
-
- }
-
- /**
- * Replaces image of particular shapes
- */
- public static void replaceImageOfParticularShapes() {
- try {
- // ExStart:ReplaceImageOfParticularShapes_17.12
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- String imagePath = Common.WATERMARK_IMAGE_PATH;
- File imageFile = new File(imagePath);
- byte[] imageBytes = new byte[(int) imageFile.length()];
- InputStream imageInputStream = new FileInputStream(imageFile);
- imageInputStream.read(imageBytes);
- imageInputStream.close();
-
- for (CellsShape shape : doc.getWorksheets().get_Item(0).getShapes()) {
- if (shape.getImage() != null) {
- shape.setImage(new CellsWatermarkableImage(imageBytes));
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:ReplaceImageOfParticularShapes_17.12
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Sets background image for particular shapes
- */
- public static void setBackgroundImageForParticularShapes() {
- try {
- // ExStart:SetBackgroundImageForParticularShapes_17.12
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- String imagePath = Common.WATERMARK_IMAGE_PATH;
- File imageFile = new File(imagePath);
- byte[] imageBytes = new byte[(int) imageFile.length()];
- InputStream imageInputStream = new FileInputStream(imageFile);
- imageInputStream.read(imageBytes);
- imageInputStream.close();
-
- for (CellsShape shape : doc.getWorksheets().get_Item(0).getShapes()) {
- if (" Aspose 2016".equals(shape.getText())) {
- shape.getImageFillFormat().setBackgroundImage(new CellsWatermarkableImage(imageBytes));
- shape.getImageFillFormat().setTransparency(0.5);
- shape.getImageFillFormat().setTileAsTexture(true);
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:SetBackgroundImageForParticularShapes_17.12
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Updates shape properties
- */
- public static void updateShapeProperties() {
- try {
- // ExStart:UpdateShapeProperties_17.12
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (CellsShape shape : doc.getWorksheets().get_Item(0).getShapes()) {
- if (" Aspose 2016".equals(shape.getText())) {
- shape.setAlternativeText("watermark");
- shape.setRotateAngle(30);
- shape.setX(200);
- shape.setY(200);
- shape.setWidth(400);
- shape.setHeight(100);
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:UpdateShapeProperties_17.12
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Gets information about all worksheet backgrounds in a Excel document
- */
- public static void getInformationOfWorksheetBackgrounds() {
- try {
- // ExStart:GetInformationOfWorksheetBackgrounds
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (CellsWorksheet worksheet : doc.getWorksheets()) {
- if (worksheet.getBackgroundImage() != null) {
- System.out.println(worksheet.getBackgroundImage().getWidth());
- System.out.println(worksheet.getBackgroundImage().getHeight());
- System.out.println(worksheet.getBackgroundImage().getBytes().length);
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:GetInformationOfWorksheetBackgrounds
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes background in a Excel worksheet
- */
- public static void removeWorksheetBackground() {
- try {
- // ExStart:RemoveWorksheetBackground
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- doc.getWorksheets().get_Item(0).setBackgroundImage(null);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveWorksheetBackground
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to all background images in a Excel worksheet
- */
- public static void addWatermarkToBackgroundImages() {
- try {
- // ExStart:AddWatermarkToBackgroundImagesExcel
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
- watermark.setHorizontalAlignment(HorizontalAlignment.Center);
- watermark.setVerticalAlignment(VerticalAlignment.Center);
- watermark.setRotateAngle(45);
- watermark.setSizingType(SizingType.ScaleToParentDimensions);
- watermark.setScaleFactor(1);
-
- for (CellsWorksheet worksheet : doc.getWorksheets()) {
- if (worksheet.getBackgroundImage() != null) {
- // Add watermark to the image
- worksheet.getBackgroundImage().addWatermark(watermark);
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToBackgroundImagesExcel
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Gets information about all headers/footers in a Excel document
- */
- public static void getHeaderFooterInformation() {
- try {
- // ExStart:GetHeaderFooterInformationExcel
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (CellsWorksheet worksheet : doc.getWorksheets()) {
- for (CellsHeaderFooter headerFooter : worksheet.getHeadersFooters()) {
- System.out.println(headerFooter.getHeaderFooterType());
- for (CellsHeaderFooterSection section : headerFooter.getSections()) {
- System.out.println(section.getSectionType());
- if (section.getImage() != null) {
- System.out.println(section.getImage().getWidth());
- System.out.println(section.getImage().getHeight());
- System.out.println(section.getImage().getBytes().length);
- }
- System.out.println(section.getScript());
- }
- }
- }
-
- doc.close();
- // ExEnd:GetHeaderFooterInformationExcel
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Clears particular headers/footers in a Excel worksheet
- */
- public static void clearHeaderFooter() {
- try {
- // ExStart:ClearHeaderFooterExcel
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- CellsHeaderFooterSectionCollection sections = doc.getWorksheets().get_Item(0).getHeadersFooters()
- .getByOfficeHeaderFooterType(OfficeHeaderFooterType.HeaderPrimary).getSections();
- for (CellsHeaderFooterSection section : sections) {
- section.setScript(null);
- section.setImage(null);
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:ClearHeaderFooterExcel
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Clears particular section of headers/footers in a Excel worksheet
- */
- public static void clearSectionOfHeaderFooter() {
- try {
- // ExStart:ClearSectionOfHeaderFooterExcel
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- CellsHeaderFooterSection section = doc.getWorksheets().get_Item(0).getHeadersFooters()
- .getByOfficeHeaderFooterType(OfficeHeaderFooterType.HeaderPrimary).getSections()
- .getByCellsHeaderFooterSectionType(CellsHeaderFooterSectionType.Left);
-
- section.setScript(null);
- section.setImage(null);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:ClearSectionOfHeaderFooterExcel
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to all images of headers/footers in a Excel worksheet
- */
- public static void addWatermarkToImagesInHeaderFooter() {
- try {
- // ExStart:AddWatermarkToImagesInHeaderFooterExcel
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Initialize image or text watermark
- TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
- watermark.setHorizontalAlignment(HorizontalAlignment.Center);
- watermark.setVerticalAlignment(VerticalAlignment.Center);
- watermark.setRotateAngle(45);
- watermark.setSizingType(SizingType.ScaleToParentDimensions);
- watermark.setScaleFactor(1);
-
- for (CellsWorksheet worksheet : doc.getWorksheets()) {
- for (CellsHeaderFooter headerFooter : worksheet.getHeadersFooters()) {
- for (CellsHeaderFooterSection section : headerFooter.getSections()) {
- if (section.getImage() != null) {
- // Add watermark to the image
- section.getImage().addWatermark(watermark);
- }
- }
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToImagesInHeaderFooterExcel
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Sets background image for a chart in a Excel worksheet
- */
- public static void setBackgroundImageForChart() {
- try {
- // ExStart:SetBackgroundImageForChart
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- String imagePath = Common.WATERMARK_IMAGE_PATH;
- File imageFile = new File(imagePath);
- byte[] imageBytes = new byte[(int) imageFile.length()];
- InputStream imageInputStream = new FileInputStream(imageFile);
- imageInputStream.read(imageBytes);
- imageInputStream.close();
-
- CellsChart chart = doc.getWorksheets().get_Item(0).getCharts().get_Item(0);
- chart.getImageFillFormat().setBackgroundImage(new CellsWatermarkableImage(imageBytes));
- chart.getImageFillFormat().setTransparency(0.5);
- chart.getImageFillFormat().setTileAsTexture(true);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:SetBackgroundImageForChart
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Gets information about all charts on a worksheet
- */
- public static void getInformationAboutAllChart() {
- try {
- // ExStart:getInformationAboutAllChart
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (CellsChart chart : doc.getWorksheets().get_Item(0).getCharts()) {
- System.out.println(chart.getWidth());
- System.out.println(chart.getHeight());
- System.out.println(chart.getX());
- System.out.println(chart.getY());
- System.out.println(chart.getAlternativeText());
- System.out.println(chart.getId());
- System.out.println(chart.getName());
- System.out.println(chart.getHyperlink());
- }
-
- doc.close();
- // ExEnd:getInformationAboutAllChart
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Extract information about all attachments in an Excel document
- */
- public static void extractAttachmentsInfo() {
- try {
- // ExStart:extractAttachmentsInfo
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (CellsWorksheet worksheet : doc.getWorksheets()) {
- for (CellsAttachment attachment : worksheet.getAttachments()) {
- System.out.println("Alternative text: " + attachment.getAlternativeText());
- System.out.println("Attachment frame x-coordinate: " + attachment.getX());
- System.out.println("Attachment frame y-coordinate: " + attachment.getY());
- System.out.println("Attachment frame width: " + attachment.getWidth());
- System.out.println("Attachment frame height: " + attachment.getHeight());
- System.out.println("Preview image size: " + attachment.getPreviewImageContent() != null
- ? attachment.getPreviewImageContent().length : 0);
-
- if (attachment.isLink()) {
- // The document contains only a link to the attached
- // file
- System.out.println("Full path to the attached file: " + attachment.getSourceFullName());
- } else {
- // The attached file is stored in the document
- System.out.println("File format: " + attachment.getDocumentInfo().getFileFormat());
- System.out.println("Name of the source file: " + attachment.getSourceFullName());
- System.out.println("File size: " + attachment.getContent().length);
- }
- }
- }
-
- doc.close();
- // ExEnd:extractAttachmentsInfo
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Add an attachment to an Excel document
- */
- public static void addAttachment() {
- try {
- // ExStart:AddAttachmentExcel
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- String attachmentPath = Common.mapSourceFilePath("sample.docx");
- File file = new File(attachmentPath);
- byte[] attachmentBytes = new byte[(int) file.length()];
- InputStream inputStream = new FileInputStream(file);
- inputStream.read(attachmentBytes);
- inputStream.close();
-
- String previewImagePath = Common.mapSourceFilePath("sample.png");
- file = new File(previewImagePath);
- byte[] previewImageBytes = new byte[(int) file.length()];
- inputStream = new FileInputStream(file);
- inputStream.read(previewImageBytes);
- inputStream.close();
-
- CellsWorksheet worksheet = doc.getWorksheets().get_Item(0);
-
- // Add the attachment
- worksheet.getAttachments().addAttachment(attachmentBytes, // File
- // content
- attachmentPath, // Source file full name (the extension
- // is used to determine appropriate
- // application to open the file)
- previewImageBytes, // Preview image content
- 50, // X-coordinate of the attachment frame
- 100, // Y-coordinate of the attachment frame
- 200, // Attachment frame width
- 400); // Attachment frame height
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddAttachmentExcel
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Add a linked file to an Excel document
- */
- public static void addLinkedAttachment() {
- try {
- // ExStart:AddLinkedAttachment
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- String attachmentPath = Common.mapSourceFilePath("sample.docx");
- String previewImagePath = Common.mapSourceFilePath("sample.png");
- File file = new File(previewImagePath);
- byte[] previewImageBytes = new byte[(int) file.length()];
- FileInputStream inputStream = new FileInputStream(file);
- inputStream.read(previewImageBytes);
- inputStream.close();
-
- CellsWorksheet worksheet = doc.getWorksheets().get_Item(0);
-
- // Add the attachment
- worksheet.getAttachments().addLink(attachmentPath, // Source
- // file path
- previewImageBytes, // Preview image content
- 50, // X-coordinate of the attachment frame
- 100, // Y-coordinate of the attachment frame
- 200, // Attachment frame width
- 400); // Attachment frame height
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddLinkedAttachment
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Remove particular attachments from an Excel document
- */
- public static void removeAttachment() {
- try {
- // ExStart:RemoveAttachment
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (CellsWorksheet worksheet : doc.getWorksheets()) {
- for (int i = worksheet.getAttachments().getCount() - 1; i >= 0; i--) {
- CellsAttachment attachment = worksheet.getAttachments().get_Item(i);
- if (attachment.isLink() && !new File(attachment.getSourceFullName()).exists() || // Linked
- // file
- // that
- // is
- // not
- // available
- // at
- // this
- // moment
- attachment.getDocumentInfo().isEncrypted()) // Attached
- // file
- // protected
- // with
- // a
- // password
- {
- // Remove the file if it meets at least one of the
- // conditions above
- worksheet.getAttachments().removeAt(i);
- }
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveAttachment
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Add watermark to all attached files of supported types
- */
- public static void addWatermarkToAttachments() {
- try {
- // ExStart:AddWatermarkToAttachment
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 19));
-
- for (CellsWorksheet worksheet : doc.getWorksheets()) {
- for (CellsAttachment attachment : worksheet.getAttachments()) {
- // Check if the attached file is supported by
- // GroupDocs.Watermark
- if (attachment.getDocumentInfo().getFileFormat() != FileFormat.Undefined
- && !attachment.getDocumentInfo().isEncrypted()) {
- // Load the attached document
- Document attachedDocument = attachment.loadDocument();
-
- // Add wateramrk
- attachedDocument.addWatermark(watermark);
-
- // Save changes in the attached file
- attachment.updateDocument(attachedDocument);
-
- attachedDocument.close();
- }
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToAttachment
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Search for images in the attached files using FindImages or
- * FindWatermarks method
- */
- public static void searchImagesInAttachments() {
- try {
- // ExStart:SearchImageInAttachment
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Consider only the attached images
- doc.getSearchableObjects().setCellsSearchableObjects(CellsSearchableObjects.AttachedImages);
-
- // Specify sample image to compare document images with
- ImageSearchCriteria criteria = new ImageDctHashSearchCriteria("D:\\watermark.jpg");
-
- // Search for similar images
- PossibleWatermarkCollection possibleWatermarks = doc.findWatermarks(criteria);
-
- // Remove found image watermarks
- possibleWatermarks.clear();
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:SearchImageInAttachment
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes/replaces hyperlink associated with particular shape
- */
- public static void removeHyperlinkAssociatedWithParticularShape() {
- try {
- // ExStart:RemoveHyperlinksExcel_1
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Replace hyperlink
- doc.getWorksheets().get_Item(0).getCharts().get_Item(0).setHyperlink("https://www.aspose.com/");
- doc.getWorksheets().get_Item(0).getShapes().get_Item(0).setHyperlink("https://www.groupdocs.com/");
-
- // Remove hyperlink
- doc.getWorksheets().get_Item(1).getCharts().get_Item(0).setHyperlink(null);
- doc.getWorksheets().get_Item(1).getShapes().get_Item(0).setHyperlink(null);
-
- // Save document
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveHyperlinksExcel_1
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes shape in an Excel worksheet
- */
- public static void RemoveSmartArtAndCustomXmlShapes() {
- try {
- // ExStart:RemoveSmartArtAndCustomXmlShapes_18.8
- CellsDocument doc = Document.load(CellsDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Get shapes
- CellsShapeCollection shapes = doc.getWorksheets().get_Item(0).getShapes();
- for (int i = shapes.getCount() - 1; i >= 0; i--) {
- CellsShape shape = shapes.get_Item(i);
- // Check if the shape is SmartArt or CustomXml
- if (shape.getMsoDrawingType() == CellsMsoDrawingType.SmartArt
- || shape.getMsoDrawingType() == CellsMsoDrawingType.CustomXml) {
- shapes.removeAt(i);
- }
- }
- // Save document
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveSmartArtAndCustomXmlShapes_18.8
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- }
-
- public static class PowerPoint {
- // initialize file path
- // ExStart:SourcePowerPointFilePath
- private final static String FILE_PATH = "sample.pptx";
- // ExEnd:SourcePowerPointFilePath
-
- /**
- * Adds watermark to a PowerPoint slide
- */
- public static void addWatermark() {
- try {
- // ExStart:AddWatermarkToPowerPointSlide
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Add text watermark
- TextWatermark textWatermark = new TextWatermark("Test watermark", new Font("Arial", 8));
- doc.getSlides().get_Item(0).addWatermark(textWatermark);
-
- // Add image watermark
- ImageWatermark imageWatermark = new ImageWatermark(Common.WATERMARK_IMAGE_PATH);
- doc.getSlides().get_Item(1).addWatermark(imageWatermark);
- imageWatermark.close();
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToPowerPointSlide
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Gets dimensions of a PowerPoint slide
- */
- public static void getDimensionsOfSlide() {
- try {
- // ExStart:GetDimensionsOfSlide
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- System.out.println(doc.getSlideWidth());
- System.out.println(doc.getSlideHeight());
-
- doc.close();
- // ExEnd:GetDimensionsOfSlide
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to all images of a PowerPoint slide
- */
- public static void addWatermarkToImages() {
- try {
- // ExStart:AddWatermarkToImagesPowerPointSlide
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Initialize image or text watermark
- TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
- watermark.setHorizontalAlignment(HorizontalAlignment.Center);
- watermark.setVerticalAlignment(VerticalAlignment.Center);
- watermark.setRotateAngle(45);
- watermark.setSizingType(SizingType.ScaleToParentDimensions);
- watermark.setScaleFactor(1);
-
- // Get all images from the first slide
- WatermarkableImageCollection images = doc.getSlides().get_Item(0).findImages();
-
- // Add watermark to all found images
- for (WatermarkableImage image : images) {
- image.addWatermark(watermark);
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToImagesPowerPointSlide
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to all slide types of PowerPoint document
- */
- public static void addWatermarkToAllSlideTypes() {
- try {
- // ExStart:AddWatermarkToAllSlideTypes
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 8));
-
- // Add watermark to all master slides
- for (SlidesMasterSlide slide : doc.getMasterSlides()) {
- slide.addWatermark(watermark);
- }
-
- // Add watermark to all layout slides
- if (doc.getLayoutSlides() != null) {
- for (SlidesLayoutSlide slide : doc.getLayoutSlides()) {
- slide.addWatermark(watermark);
- }
- }
-
- // Add watermark to all notes slides
- for (SlidesSlide slide : doc.getSlides()) {
- if (slide.getNotesSlide() != null) {
- slide.getNotesSlide().addWatermark(watermark);
- }
- }
-
- // Add watermark to handout master
- if (doc.getMasterHandoutSlide() != null) {
- doc.getMasterHandoutSlide().addWatermark(watermark);
- }
-
- // Add watermark to notes master
- if (doc.getMasterNotesSlide() != null) {
- doc.getMasterNotesSlide().addWatermark(watermark);
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToAllSlideTypes
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to a PowerPoint slide with Slides Shape Settings
- */
- public static void addWatermarkWithSlidesShapeSettings() {
- try {
- // ExStart:AddWatermarkWithSlidesShapeSettings
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 19));
- watermark.setBackground(true);
- SlidesShapeSettings shapeSettings = new SlidesShapeSettings();
-
- // Set the shape name
- shapeSettings.setName("Shape 1");
-
- // Set the descriptive (alternative) text that will be
- // associated with the shape
- shapeSettings.setAlternativeText("Test watermark");
-
- // Editing of the shape in PowerPoint is forbidden
- shapeSettings.setLocked(true);
-
- doc.addWatermark(watermark, shapeSettings);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkWithSlidesShapeSettings
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark with text effects to a PowerPoint slide
- */
- public static void addWatermarkWithTextEffects() {
- try {
- // ExStart:AddWatermarkWithTextEffectsPowerPointSlide
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- TextWatermark watermark = new TextWatermark("Test watermark", new Font("Segoe UI", 19));
-
- SlidesTextEffects effects = new SlidesTextEffects();
- effects.getLineFormat().setEnabled(true);
- effects.getLineFormat().setColor(Color.getRed());
- effects.getLineFormat().setDashStyle(OfficeDashStyle.DashDotDot);
- effects.getLineFormat().setLineStyle(OfficeLineStyle.Triple);
- effects.getLineFormat().setWeight(1);
- doc.addTextWatermark(watermark, effects);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkWithTextEffectsPowerPointSlide
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark with image effects to a PowerPoint slide
- */
- public static void addWatermarkWithImageEffects() {
- try {
- // ExStart:AddWatermarkWithImageEffectsPowerPointSlide
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- ImageWatermark watermark = new ImageWatermark(Common.WATERMARK_IMAGE_PATH);
-
- SlidesImageEffects effects = new SlidesImageEffects();
- effects.setBrightness(0.7);
- effects.setContrast(0.6);
- effects.setChromaKey(Color.getWhite()); // setChromaKey method
- // doesn't work for ppt
- // files at this moment.
- effects.getBorderLineFormat().setEnabled(true);
- effects.getBorderLineFormat().setWeight(1);
- doc.addImageWatermark(watermark, effects);
- watermark.close();
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkWithImageEffectsPowerPointSlide
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes watermark from PowerPoint slide
- */
- public static void removeWatermark() {
- try {
- // ExStart:RemoveWatermarkPowerPoint
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Initialize search criteria
- ImageSearchCriteria imageSearchCriteria = new ImageDctHashSearchCriteria(Common.WATERMARK_IMAGE_PATH);
- TextSearchCriteria textSearchCriteria = new TextSearchCriteria("This is test watermark");
-
- // Call findWatermarks method for a slide
- PossibleWatermarkCollection possibleWatermarks = doc.getSlides().get_Item(0)
- .findWatermarks(textSearchCriteria.or(imageSearchCriteria));
-
- // Remove all found watermarks
- for (int i = possibleWatermarks.getCount() - 1; i >= 0; i--) {
- possibleWatermarks.removeAt(i);
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveWatermarkPowerPoint
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Extracts information about all the shapes in PowerPoint slide
- */
- public static void getShapesInformation() {
- try {
- // ExStart:GetShapesInformationPowerPoint
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (SlidesSlide slide : doc.getSlides()) {
- for (SlidesShape shape : slide.getShapes()) {
- if (shape.getImage() != null) {
- System.out.println(shape.getImage().getWidth());
- System.out.println(shape.getImage().getHeight());
- System.out.println(shape.getImage().getBytes().length);
- }
-
- for (FormattedTextFragment fragment : shape.getFormattedTextFragments()) {
- System.out.println(fragment.getText());
- System.out.println(fragment.getFont().getFamilyName());
- System.out.println(fragment.getFont().getSize());
- System.out.println(fragment.getForegroundColor().toArgb());
- System.out.println(fragment.getBackgroundColor().toArgb());
- }
-
- System.out.println(shape.getName());
- System.out.println(shape.getAlternativeText());
- System.out.println(shape.getX());
- System.out.println(shape.getY());
- System.out.println(shape.getWidth());
- System.out.println(shape.getHeight());
- System.out.println(shape.getRotateAngle());
- System.out.println(shape.getText());
- System.out.println(shape.getId());
- System.out.println(shape.getShapeType());
- System.out.println(shape.getZOrderPosition());
- System.out.println(shape.getHyperlink(SlidesHyperlinkActionType.MouseClick));
- System.out.println(shape.getHyperlink(SlidesHyperlinkActionType.MouseOver));
- }
- }
-
- doc.close();
- // ExEnd:GetShapesInformationPowerPoint
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes shape from PowerPoint slide
- */
- public static void removeShape() {
- try {
- // ExStart:RemoveShapePowerPoint
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Remove shape by index
- doc.getSlides().get_Item(0).getShapes().removeAt(0);
-
- // Remove shape by reference
- doc.getSlides().get_Item(0).getShapes().remove(doc.getSlides().get_Item(0).getShapes().get_Item(0));
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveShapePowerPoint
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes shape with particular text formatting
- */
- public static void removeShapeWithParticularTextFormatting() {
- try {
- // ExStart:RemoveTextShapesWithParticularTextFormattingPowerPoint_1
- // Load document
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Get and remove shapes from slides
- for (SlidesSlide section : doc.getSlides()) {
- for (int i = section.getShapes().getCount() - 1; i >= 0; i--) {
- for (FormattedTextFragment fragment : section.getShapes().get_Item(i)
- .getFormattedTextFragments()) {
- if ("Arial".equals(fragment.getFont().getFamilyName())
- && Color.getRed().equals(fragment.getForegroundColor())) {
- section.getShapes().removeAt(i);
- break;
- }
- }
- }
- }
-
- // Save document
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveTextShapesWithParticularTextFormattingPowerPoint_1
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to all image shapes in a PowerPoint document
- */
- public static void addWatermarkToImageShapes() {
- try {
- // ExStart:AddWatermarkToImageShapesPowerPointDocument
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Initialize image or text watermark
- TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
- watermark.setHorizontalAlignment(HorizontalAlignment.Center);
- watermark.setVerticalAlignment(VerticalAlignment.Center);
- watermark.setRotateAngle(45);
- watermark.setSizingType(SizingType.ScaleToParentDimensions);
- watermark.setScaleFactor(1);
-
- for (SlidesSlide slide : doc.getSlides()) {
- for (SlidesShape shape : slide.getShapes()) {
- if (shape.getImage() != null) {
- // Add watermark to the image
- shape.getImage().addWatermark(watermark);
- }
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToImageShapesPowerPointDocument
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Gets information of all slide backgrounds of a PowerPoint document
- */
- public static void getInformationOfSlideBackgrounds() {
- try {
- // ExStart:GetInformationOfSlideBackgroundsPowerPointDocument
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (SlidesSlide slide : doc.getSlides()) {
- if (slide.getImageFillFormat().getBackgroundImage() != null) {
- System.out.println(slide.getImageFillFormat().getTileAsTexture());
- System.out.println(slide.getImageFillFormat().getTransparency());
- System.out.println(slide.getImageFillFormat().getBackgroundImage().getWidth());
- System.out.println(slide.getImageFillFormat().getBackgroundImage().getHeight());
- System.out.println(slide.getImageFillFormat().getBackgroundImage().getBytes().length);
- }
- }
-
- doc.close();
- // ExEnd:GetInformationOfSlideBackgroundsPowerPointDocument
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes background of a PowerPoint slide
- */
- public static void removeBackground() {
- try {
- // ExStart:RemoveBackgroundPowerPointSlide
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- doc.getSlides().get_Item(0).getImageFillFormat().setBackgroundImage(null);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveBackgroundPowerPointSlide
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to all background images of a PowerPoint slide
- */
- public static void addWatermarkToAllBackgroundImages() {
- try {
- // ExStart:AddWatermarkToAllBackgroundImagesPowerPointSlide
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Initialize image or text watermark
- TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
- watermark.setHorizontalAlignment(HorizontalAlignment.Center);
- watermark.setVerticalAlignment(VerticalAlignment.Center);
- watermark.setRotateAngle(45);
- watermark.setSizingType(SizingType.ScaleToParentDimensions);
- watermark.setScaleFactor(1);
-
- for (SlidesSlide slide : doc.getSlides()) {
- if (slide.getImageFillFormat().getBackgroundImage() != null) {
- // Add watermark to the image
- slide.getImageFillFormat().getBackgroundImage().addWatermark(watermark);
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToAllBackgroundImagesPowerPointSlide
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Sets additional settings for slide backgrounds
- */
- public static void setAdditionalSettingsForSlideBackgrounds() {
- try {
- // ExStart:SetTiledSemitransparentBackgroundPowerPoint_1
- // Get image
- String imagePath = Common.WATERMARK_IMAGE_PATH;
- File imageFile = new File(imagePath);
- byte[] imageBytes = new byte[(int) imageFile.length()];
- InputStream imageInputStream = new FileInputStream(imageFile);
- imageInputStream.read(imageBytes);
- imageInputStream.close();
-
- // Load document
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Get slide and update background
- SlidesSlide slide = doc.getSlides().get_Item(0);
- slide.getImageFillFormat().setBackgroundImage(new SlidesWatermarkableImage(imageBytes));
- slide.getImageFillFormat().setTileAsTexture(true);
- slide.getImageFillFormat().setTransparency(0.5);
-
- // Save document
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:SetTiledSemitransparentBackgroundPowerPoint_1
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Sets tiled semitransparent image background for a particular slide.
- */
- public static void getChartInformation() {
- try {
- // ExStart:getChartInformation
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (SlidesChart chart : doc.getSlides().get_Item(0).getCharts()) {
- System.out.println(chart.getWidth());
- System.out.println(chart.getHeight());
- System.out.println(chart.getX());
- System.out.println(chart.getY());
- System.out.println(chart.getAlternativeText());
- System.out.println(chart.getId());
- System.out.println(chart.getName());
- System.out.println(chart.getHyperlink(SlidesHyperlinkActionType.MouseClick));
- System.out.println(chart.getHyperlink(SlidesHyperlinkActionType.MouseOver));
- }
-
- doc.close();
- // ExEnd:getChartInformation
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Sets background image for a chart in a PowerPoint presentation
- */
- public static void setBackgroundImageForChart() {
- try {
- // ExStart:SetBackgroundImageForChartPowerPoint
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- String imagePath = Common.WATERMARK_IMAGE_PATH;
- File imageFile = new File(imagePath);
- byte[] imageBytes = new byte[(int) imageFile.length()];
- InputStream imageInputStream = new FileInputStream(imageFile);
- imageInputStream.read(imageBytes);
- imageInputStream.close();
-
- SlidesImageFillFormat imageFillFormat = doc.getSlides().get_Item(0).getCharts().get_Item(0)
- .getImageFillFormat();
- imageFillFormat.setBackgroundImage(new SlidesWatermarkableImage(imageBytes));
- imageFillFormat.setTransparency(0.5);
- imageFillFormat.setTileAsTexture(true);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:SetBackgroundImageForChartPowerPoint
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Replaces text with formatted text
- */
- public static void replaceTextWithFormattedText() {
- try {
- // ExStart:replaceTextWithFormattedTextPowerPoint
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
- for (SlidesShape shape : doc.getSlides().get_Item(0).getShapes()) {
- if (" Aspose 2016".equals(shape.getText())) {
- shape.getFormattedTextFragments().clear();
- shape.getFormattedTextFragments().add(" GroupDocs 2017",
- new Font("Calibri", 19, FontStyle.Bold), Color.getRed(), Color.getAqua());
- }
- }
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:replaceTextWithFormattedTextPowerPoint
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes hyperlink associated with a particular shape or chart inside
- * a PowerPoint document
- */
- public static void replaceHyperlinks() {
- try {
- // ExStart:RemoveHyperlinksPowerPoint
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- String oldUrl = "http://aspose.com/";
-
- // Assign null to remove hyperlink
- String newUrl = "http://groupdocs.com/";
-
- for (SlidesSlide slide : doc.getSlides()) {
- // Replace hyperlinks in shapes
- for (SlidesShape shape : slide.getShapes()) {
- replaceHyperlink(shape, SlidesHyperlinkActionType.MouseOver, oldUrl, newUrl);
- replaceHyperlink(shape, SlidesHyperlinkActionType.MouseClick, oldUrl, newUrl);
-
- // Replace hyperlinks in text fragments
- for (FormattedTextFragment fragment : shape.getFormattedTextFragments()) {
- replaceHyperlink((ISlidesHyperlinkContainer) fragment, SlidesHyperlinkActionType.MouseClick,
- oldUrl, newUrl);
- replaceHyperlink((ISlidesHyperlinkContainer) fragment, SlidesHyperlinkActionType.MouseOver,
- oldUrl, newUrl);
- }
- }
-
- // Replace hyperlinks in charts
- for (SlidesChart chart : slide.getCharts()) {
- replaceHyperlink(chart, SlidesHyperlinkActionType.MouseOver, oldUrl, newUrl);
- replaceHyperlink(chart, SlidesHyperlinkActionType.MouseClick, oldUrl, newUrl);
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveHyperlinksPowerPoint
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- private static void replaceHyperlink(ISlidesHyperlinkContainer hyperlinkContainer, int hyperlinkActionType,
- String oldUrl, String newUrl) {
- if (oldUrl.equals(hyperlinkContainer.getHyperlink(hyperlinkActionType))) {
- hyperlinkContainer.setHyperlink(hyperlinkActionType, newUrl);
- }
- }
-
- /**
- * Replaces text for a particular shape
- */
- public static void replaceTextForParticularShape() {
- try {
- // ExStart:ReplaceTextForParticularShapePowerPoint
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (SlidesShape shape : doc.getSlides().get_Item(0).getShapes()) {
- if (" Aspose 2016".equals(shape.getText())) {
- shape.setText(" GroupDocs 2017");
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:ReplaceTextForParticularShapePowerPoint
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Replaces text with a particular formatting
- */
- public static void replaceTextWithFormattingForParticularShape() {
- try {
- // ExStart:replaceTextWithFormattingForParticularShapePowerPoint
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (SlidesShape shape : doc.getSlides().get_Item(0).getShapes()) {
- if (" Aspose 2016".equals(shape.getText())) {
- shape.getFormattedTextFragments().clear();
- shape.getFormattedTextFragments().add(" GroupDocs 2017",
- new Font("Calibri", 19, FontStyle.Bold), Color.getRed(), Color.getAqua());
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:replaceTextWithFormattingForParticularShapePowerPoint
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Replaces shape image
- */
- public static void replaceShapeImage() {
- try {
- // ExStart:replaceShapeImagePowerPoint
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- String imagePath = Common.WATERMARK_IMAGE_PATH;
- File imageFile = new File(imagePath);
- byte[] imageBytes = new byte[(int) imageFile.length()];
- InputStream imageInputStream = new FileInputStream(imageFile);
- imageInputStream.read(imageBytes);
- imageInputStream.close();
-
- for (SlidesShape shape : doc.getSlides().get_Item(0).getShapes()) {
- if (shape.getImage() != null) {
- shape.setImage(new SlidesWatermarkableImage(imageBytes));
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:replaceShapeImagePowerPoint
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Sets background image for particular shapes
- */
- public static void setBackgroundImageForParticularShapes() {
- try {
- // ExStart:SetBackgroundImageForParticularShapesPowerPoint
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- String imagePath = Common.WATERMARK_IMAGE_PATH;
- File imageFile = new File(imagePath);
- byte[] imageBytes = new byte[(int) imageFile.length()];
- InputStream imageInputStream = new FileInputStream(imageFile);
- imageInputStream.read(imageBytes);
- imageInputStream.close();
-
- for (SlidesShape shape : doc.getSlides().get_Item(0).getShapes()) {
- if (" Aspose 2016".equals(shape.getText())) {
- shape.getImageFillFormat().setBackgroundImage(new SlidesWatermarkableImage(imageBytes));
- shape.getImageFillFormat().setTransparency(0.5);
- shape.getImageFillFormat().setTileAsTexture(true);
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:SetBackgroundImageForParticularShapesPowerPoint
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Modifies shape properties
- */
- public static void modifyShapeProperties() {
- try {
- // ExStart:ModifyShapePropertiesPowerPoint
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (SlidesShape shape : doc.getSlides().get_Item(0).getShapes()) {
- if (" Aspose 2016".equals(shape.getText())) {
- shape.setAlternativeText("watermark");
- shape.setRotateAngle(30);
- shape.setX(200);
- shape.setY(200);
- shape.setWidth(400);
- shape.setHeight(100);
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:ModifyShapePropertiesPowerPoint
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes hyperlinks of all types
- */
- public static void removeHyperlinksOfAllTypes() {
- try {
- // ExStart:RemoveHyperlinksUsingFindWatermarkPowerPoint_1
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(FILE_PATH));
- doc.getSearchableObjects().setSlidesSearchableObjects(SlidesSearchableObjects.Hyperlinks);
-
- // Find all hyperlinks
- PossibleWatermarkCollection watermarks = doc.findWatermarks();
-
- // Remove found watermarks
- watermarks.clear();
-
- // Save document
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveHyperlinksUsingFindWatermarkPowerPoint_1
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Protects watermark using unreadable characters
- */
- public static void ProtectWatermarkUsingUnreadableCharacters() {
- try {
- // ExStart:ProtectWatermarkUsingUnreadableCharacters_18.8
- final SlidesDocument document = Document.load(SlidesDocument.class,
- Common.mapSourceFilePath(FILE_PATH));
-
- TextWatermark watermark = new TextWatermark("Watermark text", new Font("Arial", 19));
-
- SlidesShapeSettings settings = new SlidesShapeSettings();
- settings.setLocked(true);
-
- // Set protection with unreadable characters
- settings.setProtectWithUnreadableCharacters(true);
-
- // Add watermark
- document.addWatermark(watermark, settings);
-
- // Save document
- document.save(Common.mapOutputFilePath(FILE_PATH));
- document.close();
- // ExEnd:ProtectWatermarkUsingUnreadableCharacters_18.8
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
- }
-
- public static class Visio {
- // initialize file path
- // ExStart:SourceVisioFilePath
- private final static String FILE_PATH = "sample.vsdx";
- // ExEnd:SourceVisioFilePath
-
- /**
- * Adds watermark to all pages of a particular type
- */
- public static void addWatermarkToAllPagesOfParticularType() {
- try {
- // ExStart:AddWatermarkToAllPagesOfParticularType
- DiagramDocument doc = Document.load(DiagramDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Initialize text watermark
- TextWatermark textWatermark = new TextWatermark("Test watermark 1", new Font("Calibri", 19));
-
- // Add text watermark to all background pages
- doc.addWatermark(textWatermark, DiagramWatermarkPlacementType.BackgroundPages);
-
- // Initialize image watermark
- ImageWatermark imageWatermark = new ImageWatermark(Common.WATERMARK_IMAGE_PATH);
-
- // Add image watermark to all background pages
- doc.addWatermark(imageWatermark, DiagramWatermarkPlacementType.ForegroundPages);
- imageWatermark.close();
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToAllPagesOfParticularType
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to separate newly created backround pages
- */
- public static void addWatermarkToSeparateBackgroundPage() {
- try {
- // ExStart:AddWatermarkToSeparateBackgroundPage
- DiagramDocument doc = Document.load(DiagramDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Initialize watermark of any supported type
- TextWatermark textWatermark = new TextWatermark("Test watermark 1", new Font("Calibri", 19));
-
- // Create separate background for each page where it is not set.
- // Add watermark to it.
- doc.addWatermark(textWatermark, DiagramWatermarkPlacementType.SeparateBackgrounds);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToSeparateBackgroundPage
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to a particular page
- */
- public static void addWatermarkToParticularPage() {
- try {
- // ExStart:AddWatermarkToParticularPage
- DiagramDocument doc = Document.load(DiagramDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Add text watermark
- TextWatermark textWatermark = new TextWatermark("Test watermark", new Font("Calibri", 19));
- doc.getPages().get_Item(0).addWatermark(textWatermark);
-
- // Add image watermark
- ImageWatermark imageWatermark = new ImageWatermark(Common.WATERMARK_IMAGE_PATH);
- doc.getPages().get_Item(0).addWatermark(imageWatermark);
- imageWatermark.close();
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToParticularPage
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Gets information about the pages
- */
- public static void getPagesInformation() {
- try {
- // ExStart:GetPagesInformationVisio
- DiagramDocument doc = Document.load(DiagramDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (DiagramPage page : doc.getPages()) {
- System.out.println(page.getWidth());
- System.out.println(page.getHeight());
- System.out.println(page.getLeftMargin());
- System.out.println(page.getRightMargin());
- System.out.println(page.getTopMargin());
- System.out.println(page.getBottomMargin());
- System.out.println(page.getName());
- System.out.println(page.isBackground());
- System.out.println(page.isVisible());
- if (page.getBackgroundPage() != null) {
- System.out.println(page.getBackgroundPage().getName());
- }
- }
-
- doc.close();
- // ExEnd:GetPagesInformationVisio
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to all images of a particular page
- */
- public static void addWatermarkToImages() {
- try {
- // ExStart:AddWatermarkToImagesVisio
- DiagramDocument doc = Document.load(DiagramDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Initialize image or text watermark
- TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
- watermark.setHorizontalAlignment(HorizontalAlignment.Center);
- watermark.setVerticalAlignment(VerticalAlignment.Center);
- watermark.setRotateAngle(45);
- watermark.setSizingType(SizingType.ScaleToParentDimensions);
- watermark.setScaleFactor(1);
-
- // Get all images from the first slide
- WatermarkableImageCollection images = doc.getPages().get_Item(0).findImages();
-
- // Add watermark to all found images
- for (WatermarkableImage image : images) {
- image.addWatermark(watermark);
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToImagesVisio
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Locks the watermark shape to prevent editing in MS Visio
- */
- public static void lockWatermarkShape() {
- try {
- // ExStart:LockWatermarkShape
- DiagramDocument doc = Document.load(DiagramDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 19));
-
- DiagramShapeSettings shapeSettings = new DiagramShapeSettings();
- shapeSettings.setLocked(true);
-
- // Editing of the shape in Visio is forbidden
- doc.addWatermark(watermark, shapeSettings);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:LockWatermarkShape
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes watermark from a particular page
- */
- public static void removeWatermark() {
- try {
- // ExStart:RemoveWatermarkVisio
- DiagramDocument doc = Document.load(DiagramDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Initialize search criteria
- ImageSearchCriteria imageSearchCriteria = new ImageDctHashSearchCriteria(Common.WATERMARK_IMAGE_PATH);
- TextSearchCriteria textSearchCriteria = new TextSearchCriteria("Test watermark");
-
- // Call findWatermarks method for the first page
- PossibleWatermarkCollection possibleWatermarks = doc.getPages().get_Item(0)
- .findWatermarks(textSearchCriteria.or(imageSearchCriteria));
-
- // Remove all found watermarks
- possibleWatermarks.clear();
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveWatermarkVisio
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Extracts information about the shapes
- */
- public static void getShapesInformation() {
- try {
- // ExStart:GetShapesInformationVisio
- DiagramDocument doc = Document.load(DiagramDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (DiagramPage page : doc.getPages()) {
- for (DiagramShape shape : page.getShapes()) {
- if (shape.getImage() != null) {
- System.out.println(shape.getImage().getWidth());
- System.out.println(shape.getImage().getHeight());
- System.out.println(shape.getImage().getBytes().length);
- }
-
- for (FormattedTextFragment fragment : shape.getFormattedTextFragments()) {
- System.out.println(fragment.getText());
- System.out.println(fragment.getFont().getFamilyName());
- System.out.println(fragment.getFont().getSize());
- System.out.println(fragment.getForegroundColor().toArgb());
- System.out.println(fragment.getBackgroundColor().toArgb());
- }
-
- System.out.println(shape.getName());
- System.out.println(shape.getX());
- System.out.println(shape.getY());
- System.out.println(shape.getWidth());
- System.out.println(shape.getHeight());
- System.out.println(shape.getRotateAngle());
- System.out.println(shape.getText());
- System.out.println(shape.getId());
-
- for (DiagramHyperlink hyperlink : shape.getHyperlinks()) {
- System.out.println(hyperlink.getAddress());
- System.out.println(hyperlink.getSubAddress());
- System.out.println(hyperlink.getDescription());
- }
- }
- }
-
- doc.close();
- // ExEnd:GetShapesInformationVisio
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes a particular shape
- */
- public static void removeShape() {
- try {
- // ExStart:RemoveShapeVisio
- DiagramDocument doc = Document.load(DiagramDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Remove shape by index
- doc.getPages().get_Item(0).getShapes().removeAt(0);
-
- // Remove shape by reference
- doc.getPages().get_Item(0).getShapes().remove(doc.getPages().get_Item(0).getShapes().get_Item(0));
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveShapeVisio
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes shapes with particular text formatting
- */
- public static void removeShapeWithParticularTextFormatting() {
- try {
- // ExStart:RemoveTextShapesWithParticularTextFormattingVisio_1
- DiagramDocument doc = Document.load(DiagramDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Get pages and remove shapes with particular text formatting
- for (DiagramPage section : doc.getPages()) {
- for (int i = section.getShapes().getCount() - 1; i >= 0; i--) {
- for (FormattedTextFragment fragment : section.getShapes().get_Item(i)
- .getFormattedTextFragments()) {
- if ("Arial".equals(fragment.getFont().getFamilyName())
- && Color.getRed().equals(fragment.getForegroundColor())) {
- section.getShapes().removeAt(i);
- break;
- }
- }
- }
- }
-
- // Save document
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveTextShapesWithParticularTextFormattingVisio_1
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Extracts information about all the headers&footers
- */
- public static void getHeaderFooterInformation() {
- try {
- // ExStart:GetHeaderFooterInformationVisio
- DiagramDocument doc = Document.load(DiagramDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Get header&footer font settings
- System.out.println(doc.getHeaderFooter().getFont().getFamilyName());
- System.out.println(doc.getHeaderFooter().getFont().getSize());
- System.out.println(doc.getHeaderFooter().getFont().getBold());
- System.out.println(doc.getHeaderFooter().getFont().getItalic());
- System.out.println(doc.getHeaderFooter().getFont().getUnderline());
- System.out.println(doc.getHeaderFooter().getFont().getStrikeout());
-
- // Get text contained in headers&footers
- System.out.println(doc.getHeaderFooter().getHeaderLeft());
- System.out.println(doc.getHeaderFooter().getHeaderCenter());
- System.out.println(doc.getHeaderFooter().getHeaderRight());
- System.out.println(doc.getHeaderFooter().getFooterLeft());
- System.out.println(doc.getHeaderFooter().getFooterCenter());
- System.out.println(doc.getHeaderFooter().getFooterRight());
-
- // Get text color
- System.out.println(doc.getHeaderFooter().getTextColor().toArgb());
-
- // Get header&footer margins
- System.out.println(doc.getHeaderFooter().getFooterMargin());
- System.out.println(doc.getHeaderFooter().getHeaderMargin());
-
- doc.close();
- // ExEnd:GetHeaderFooterInformationVisio
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes or replaces particular header&footer
- */
- public static void removeOrReplaceHeaderFooter() {
- try {
- // ExStart:RemoveOrReplaceHeaderFooter
- DiagramDocument doc = Document.load(DiagramDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Remove header
- doc.getHeaderFooter().setHeaderCenter(null);
-
- // Replace footer
- doc.getHeaderFooter().setFooterCenter("Footer center");
- doc.getHeaderFooter().getFont().setSize(19);
- doc.getHeaderFooter().getFont().setFamilyName("Times New Roman");
- doc.getHeaderFooter().setTextColor(Color.getBlack());
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveOrReplaceHeaderFooter
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Replaces text for particular shapes
- */
- public static void replaceTextForParticularShapes() {
- try {
- // ExStart:ReplaceTextForParticularShapesVisio
- DiagramDocument doc = Document.load(DiagramDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (DiagramShape shape : doc.getPages().get_Item(0).getShapes()) {
- if (shape.getText() != null && shape.getText().contains(" Aspose 2016")) {
- shape.setText(" GroupDocs 2017");
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:ReplaceTextForParticularShapesVisio
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Replaces text with formatting
- */
- public static void replaceTextWithFormatting() {
- try {
- // ExStart:ReplaceTextWithFormattingVisio
- DiagramDocument doc = Document.load(DiagramDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (DiagramShape shape : doc.getPages().get_Item(0).getShapes()) {
- if (shape.getText() != null && shape.getText().contains(" Aspose 2016")) {
- shape.getFormattedTextFragments().clear();
- shape.getFormattedTextFragments().add(" GroupDocs 2017",
- new Font("Calibri", 19, FontStyle.Bold), Color.getRed(), Color.getAqua());
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:ReplaceTextWithFormattingVisio
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Replaces shape image
- */
- public static void replaceShapeImage() {
- try {
- // ExStart:ReplaceShapeImageVisio
- DiagramDocument doc = Document.load(DiagramDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- String imagePath = Common.WATERMARK_IMAGE_PATH;
- File imageFile = new File(imagePath);
- byte[] imageBytes = new byte[(int) imageFile.length()];
- InputStream imageInputStream = new FileInputStream(imageFile);
- imageInputStream.read(imageBytes);
- imageInputStream.close();
-
- for (DiagramShape shape : doc.getPages().get_Item(0).getShapes()) {
- if (shape.getImage() != null) {
- shape.setImage(new DiagramWatermarkableImage(imageBytes));
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:ReplaceShapeImageVisio
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes/replaces hyperlink associated with particular shape
- */
- public static void removeHyperlinkAssociatedWithParticularShape() {
- try {
- // ExStart:RemoveHyperlinksVisio_1
- DiagramDocument doc = Document.load(DiagramDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- DiagramShape shape = doc.getPages().get_Item(0).getShapes().get_Item(0);
- for (int i = shape.getHyperlinks().getCount() - 1; i >= 0; i--) {
-
- if (shape.getHyperlinks().get_Item(i).getAddress().contains("http://someurl.com")) {
- shape.getHyperlinks().removeAt(i);
- }
- }
- // Save document
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveHyperlinksVisio_1
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- }
-
- public static class Email {
- // initialize file path
- // ExStart:SourceVisioFilePath
- private final static String FILE_PATH = "sample.msg";
- // ExEnd:SourceVisioFilePath
-
- /**
- * Loads an email message
- */
- public static void loadEmailMessage() {
- try {
- // ExStart:LoadEmailMessage
- EmailDocument doc = Document.load(EmailDocument.class, Common.mapSourceFilePath(FILE_PATH));
- // Do something...
- doc.close();
- // ExEnd:LoadEmailMessage
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Extract all attachments from an email message
- */
- public static void extractAllAttachments() {
- try {
- // ExStart:ExtractAllAttachments
- EmailDocument doc = Document.load(EmailDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- String targetFolder = Common.ATTACHMENTS_PATH;
-
- for (EmailAttachment attachment : doc.getAttachments()) {
- System.out.println("Name: " + attachment.getName());
- System.out.println("File format: " + attachment.getDocumentInfo().getFileFormat());
-
- FileOutputStream outputStream = new FileOutputStream(targetFolder + "\\" + attachment.getName());
- outputStream.write(attachment.getContent());
- outputStream.close();
- }
-
- doc.close();
- // ExEnd:ExtractAllAttachments
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes particular attachments from an email message
- */
- public static void removeAttachment() {
- try {
- // ExStart:RemoveAttachment
- EmailDocument doc = Document.load(EmailDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (int i = doc.getAttachments().getCount() - 1; i >= 0; i--) {
- EmailAttachment attachment = doc.getAttachments().get_Item(i);
-
- // Remove all attached pdf files with a particular name
- if (attachment.getName().contains("sample")
- && attachment.getDocumentInfo().getFileFormat() == FileFormat.Msg) {
- doc.getAttachments().removeAt(i);
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveAttachment
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds watermark to all attached files of supported types
- */
- public static void addWatermarkToAllAttachment() {
- try {
- // ExStart:AddWatermarkToAllAttachment
- EmailDocument doc = Document.load(EmailDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 19));
-
- for (EmailAttachment attachment : doc.getAttachments()) {
- // Check if the attached file is supported by
- // GroupDocs.Watermark
- if (attachment.getDocumentInfo().getFileFormat() != FileFormat.Undefined
- && !attachment.getDocumentInfo().isEncrypted()) {
- // Load the attached document
- Document attachedDocument = attachment.loadDocument();
-
- // Add watermark
- attachedDocument.addWatermark(watermark);
-
- // Save changes in the attached file
- attachment.updateDocument(attachedDocument);
-
- attachedDocument.close();
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToAllAttachment
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Adds an attachment to an email message
- */
- public static void addAttachment() {
- try {
- // ExStart:AddAttachment
- EmailDocument doc = Document.load(EmailDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- String attachmentPath = Common.mapSourceFilePath("sample.docx");
- File attachmentFile = new File(attachmentPath);
- byte[] attachmentBytes = new byte[(int) attachmentFile.length()];
- InputStream attachmentInputStream = new FileInputStream(attachmentFile);
- attachmentInputStream.read(attachmentBytes);
- attachmentInputStream.close();
-
- doc.getAttachments().add(attachmentBytes, "sample.docx");
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddAttachment
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes all embedded jpeg images from an email message
- */
- public static void removeEmbeddedImages() {
- try {
- // ExStart:RemoveEmbeddedImages
- EmailDocument doc = Document.load(EmailDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- for (int i = doc.getEmbeddedObjects().getCount() - 1; i >= 0; i--) {
- if (doc.getEmbeddedObjects().get_Item(i).getDocumentInfo().getFileFormat() == FileFormat.Jpeg) {
- // Remove reference to the image from html body
- String pattern = "
]*src=\"cid:" + doc.getEmbeddedObjects().get_Item(i).getContentId()
- + "\"[^>]*>";
- doc.setHtmlBody(doc.getHtmlBody().replaceAll(pattern, ""));
-
- // Remove the image
- doc.getEmbeddedObjects().removeAt(i);
- }
- }
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:RemoveEmbeddedImages
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Embeds image into email message body
- */
- public static void addEmbeddedImage() {
- try {
- // ExStart:AddEmbeddedImage
- EmailDocument doc = Document.load(EmailDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- String imagePath = Common.WATERMARK_IMAGE_PATH;
- File imageFile = new File(imagePath);
- byte[] imageBytes = new byte[(int) imageFile.length()];
- InputStream imageInputStream = new FileInputStream(imageFile);
- imageInputStream.read(imageBytes);
- imageInputStream.close();
-
- doc.getEmbeddedObjects().add(imageBytes, imagePath);
- EmailEmbeddedObject embeddedObject = doc.getEmbeddedObjects()
- .get_Item(doc.getEmbeddedObjects().getCount() - 1);
- doc.setHtmlBody("
This is an embedded image:
");
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddEmbeddedImage
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Modifies email bosy and subject
- */
- public static void modifyEmailBodyAndSubject() {
- try {
- // ExStart:modifyEmailBodyAndSubject
- EmailDocument doc = Document.load(EmailDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // Set the plain text body
- doc.setBody("Test plain text body");
-
- // Set the html body
- doc.setHtmlBody("Test html body");
-
- // Set the email subject
- doc.setSubject("Test subject");
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:modifyEmailBodyAndSubject
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Lists all email recipients
- */
- public static void listAllRecipients() {
- try {
- // ExStart:listAllRecipients
- EmailDocument doc = Document.load(EmailDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- // List all direct recipients
- for (EmailAddress address : doc.getTo()) {
- System.out.println(address.getAddress());
- }
-
- // List all CC recipients
- for (EmailAddress address : doc.getCc()) {
- System.out.println(address.getAddress());
- }
-
- // List all BCC recipients
- for (EmailAddress address : doc.getBcc()) {
- System.out.println(address.getAddress());
- }
- doc.close();
- // ExEnd:listAllRecipients
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Finds text fragment in email message
- */
- public static void findTextFragmentInEmailMessage() {
- try {
- // ExStart:findTextFragmentInEmailMessage
- EmailDocument doc = Document.load(EmailDocument.class, Common.mapSourceFilePath(FILE_PATH));
-
- SearchCriteria criteria = new TextSearchCriteria("test", false);
-
- // Specify search locations
- doc.getSearchableObjects().setEmailSearchableObjects(EmailSearchableObjects.Subject
- | EmailSearchableObjects.HtmlBody | EmailSearchableObjects.PlainTextBody);
-
- // Note, search is performed only if you pass TextSearchCriteria
- // instance to findWatermarks method
- PossibleWatermarkCollection watermarks = doc.findWatermarks(criteria);
-
- // Remove found text fragments
- watermarks.clear();
-
- // Save document
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:findTextFragmentInEmailMessage
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
- }
-}
diff --git a/Examples/GroupDocs.Watermark-for-Java/src/main/java/com/groupdocs/watermark/examples/Images.java b/Examples/GroupDocs.Watermark-for-Java/src/main/java/com/groupdocs/watermark/examples/Images.java
deleted file mode 100644
index 29ae9ac..0000000
--- a/Examples/GroupDocs.Watermark-for-Java/src/main/java/com/groupdocs/watermark/examples/Images.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.groupdocs.watermark.examples;
-
-import com.groupdocs.watermark.Document;
-import com.groupdocs.watermark.Font;
-import com.groupdocs.watermark.ImageWatermark;
-import com.groupdocs.watermark.MultiframeImageDocument;
-import com.groupdocs.watermark.TextWatermark;
-
-public class Images {
- // ExStart:SourcePDFFilePath
- private final static String FILE_PATH = "sample.gif";
- // ExEnd:SourcePDFFilePath
-
- /**
- * Adds watermark to a multi frame image
- */
- public static void addWatermarkToMultiframeImageDocument() {
- try {
- // ExStart:AddWatermarkToMultiframeImageDocument
- MultiframeImageDocument doc = Document.load(MultiframeImageDocument.class,
- Common.mapSourceFilePath(FILE_PATH));
-
- // Initialize text or image watermark
- TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 19));
-
- ImageWatermark imageWatermark = new ImageWatermark(Common.WATERMARK_IMAGE_PATH);
-
- // Add watermark to the first frame
- doc.getFrames().get_Item(0).addWatermark(watermark);
- doc.getFrames().get_Item(0).addWatermark(imageWatermark);
-
- doc.save(Common.mapOutputFilePath(FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToMultiframeImageDocument
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
-}
diff --git a/Examples/GroupDocs.Watermark-for-Java/src/main/java/com/groupdocs/watermark/examples/MainClass.java b/Examples/GroupDocs.Watermark-for-Java/src/main/java/com/groupdocs/watermark/examples/MainClass.java
deleted file mode 100644
index 1b392b9..0000000
--- a/Examples/GroupDocs.Watermark-for-Java/src/main/java/com/groupdocs/watermark/examples/MainClass.java
+++ /dev/null
@@ -1,392 +0,0 @@
-package com.groupdocs.watermark.examples;
-
-public class MainClass {
- public static void main(String[] args) throws Throwable {
-
- // Uncomment following code if you have license file
- //Common.applyLicenseFromFile();
-
- // Using metered license
- // Common.useDynabicMeteredAccount();
-
- // Working with Watermark Operations
- // Add image watermark to any supported document
- //WatermarkOperations.addImageWatermark();
-
- // Add image watermark to any supported document using stream
- //WatermarkOperations.addImageWatermarkUsingStream();
-
- // Add text watermark to any supported document
- // WatermarkOperations.addTextWatermark();
-
- // Add watermark to absolute position
- // WatermarkOperations.addWatermarkToAbsolutePosition();
-
- // Add watermark to the images inside a document
- // WatermarkOperations.addWatermarkToImagesInsideDocument();
-
- // Add watermark to relative position
- // WatermarkOperations.addWatermarkToRelativePosition();
-
- // Add watermark with absolute margin
- // WatermarkOperations.addWatermarkWithAbsoluteMargin();
-
- // Add watermark with absolute margin
- // WatermarkOperations.addWatermarkWithRelativeMargin();
-
- // Add watermark with size type
- // WatermarkOperations.addWatermarkWithSizeType();
-
- // Add watermark specifying parent margin
- // WatermarkOperations.addWatermarkWithParentMargin();
-
- // Remove watermark
- // WatermarkOperations.removeWatermark();
-
- // Search image watermark
- // WatermarkOperations.searchImageWatermark();
-
- // Search watermark
- // WatermarkOperations.searchWatermark();
-
- // Search watermark with combined search criteria
- // WatermarkOperations.searchWatermarkWithCombinedSearch();
-
- // Search for watermark specifying which objects should be included in
- // the search for all document instances
- // WatermarkOperations.searchWatermarkInParticularObjects();
-
- // Search for watermark specifying which objects should be included in
- // the search for particular document instance
- // WatermarkOperations.searchWatermarkInParticularObjectsForParticularDocument();
-
- // Working with PDF Documents
- // Add annotation watermark
- // Documents.PDF.addAnnotationWatermark();
-
- // Add artifact watermark
- // Documents.PDF.addArtifactWatermark();
-
- // Add print only watermark
- // Documents.PDF.addPrintOnlyAnnotationWatermark();
-
- // Add watermark
- // Documents.PDF.addWatermark();
-
- // Add watermark to annotations
- // Documents.PDF.addWatermarkToAnnotations();
-
- // Add watermark to artifact
- // Documents.PDF.addWatermarkToArtifacts();
-
- // Add watermark to images
- // Documents.PDF.addWatermarkToImages();
-
- // Add watermark to XObjects
- // Documents.PDF.addWatermarkToXObjects();
-
- // Add attachment
- // Documents.PDF.addAttachments();
-
- // Extract attachment
- // Documents.PDF.extractAttachments();
-
- // Add attachment
- // Documents.PDF.removeAttachment();
-
- // Add watermark to the attachments
- // Documents.PDF.addWatermarkToAttachments();
-
- // Extract information of annotations in document
- // Documents.PDF.extractAnnotationInformation();
-
- // Extract information of artifacts in document
- // Documents.PDF.extractArtifactInformation();
-
- // Extract information of XObjects in document
- // Documents.PDF.extractXObjectInformation();
-
- // Get dimension
- // Documents.PDF.getDimensions();
-
- // Rasterize a PDF document
- // Documents.PDF.rasterizePDFDocument();
-
- // Remove annotation
- // Documents.PDF.removeAnnotation();
-
- // Remove artifact
- // Documents.PDF.removeArtifact();
-
- // Remove watermark
- // Documents.PDF.removeWatermark();
-
- // Remove XObject
- // Documents.PDF.removeXObject();
-
- // Add watermark with page margin type
- // Documents.PDF.addWatermarkWithPageMrginType();
-
- // Working with Word Documents
- // Add image watermark
- // Documents.Word.addImageWatermark();
-
- // Add watermark to images inside document
- // Documents.Word.addWatermarkToImages();
-
- // Add watermark to the shapes inside document
- // Documents.Word.addWatermarkToImageShapes();
-
- // Add watermark to a section
- // Documents.Word.addWatermarkToSection();
-
- // Add image watermark with effects
- // Documents.Word.addWatermarkWithImageEffects();
-
- // Add text watermark with effects
- // Documents.Word.addWatermarkWithTextEffects();
-
- // Add watermark with words shape settings
- // Documents.Word.addWatermarkWithWordsShapeSettings();
-
- // Add watermark in header/footer
- // Documents.Word.findWatermarkInHeaderFooter();
-
- // Get section properties
- // Documents.Word.getSectionProperties();
-
- // Get information of shapes inside a document
- // Documents.Word.getShapesInformation();
-
- // Link header footer in section
- // Documents.Word.linkHeaderFooterInSection();
-
- // Link all header/footer in sections
- // Documents.Word.linkAllHeaderFooterInSection();
-
- // Remove shape
- // Documents.Word.removeShape();
-
- // Remove watermark from section
- // Documents.Word.removeWatermarkFromSection();
-
- // Working with Excel Documents
- // Add modern word art watermark
- // Documents.Excel.addModernWordArdWatermark();
-
- // Add watermark
- // Documents.Excel.addWatermark();
-
- // Add watermark as background
- // Documents.Excel.addWatermarkAsBackground();
-
- // Add watermark as background with relative size and position
- // Documents.Excel.addWatermarkAsBackgroundWithRelativeSizeAndPosition();
-
- // Add watermark to header/footer
- // Documents.Excel.addWatermarkIntoHeaderFooter();
-
- // Add watermark to background images
- // Documents.Excel.addWatermarkToBackgroundImages();
-
- // Add watermark to images inside a document
- // Documents.Excel.addWatermarkToImages();
-
- // Add watermark to shapes
- // Documents.Excel.addWatermarkToImageShapes();
-
- // Add watermark to images inside a section
- // Documents.Excel.addWatermarkToImagesInHeaderFooter();
-
- // Add watermark using cells shape settings
- // Documents.Excel.addWatermarkUsingCellsShapeSettings();
-
- // Add watermark with image effects
- // Documents.Excel.addWatermarkWithImageEffects();
-
- // Add watermark with text effects
- // Documents.Excel.addWatermarkWithTextEffects();
-
- // Clear header/footer
- // Documents.Excel.clearHeaderFooter();
-
- // Clear section of header/footer
- // Documents.Excel.clearSectionOfHeaderFooter();
-
- // Get content area dimensions
- // Documents.Excel.getContentAreaDimensions();
-
- // Get header/footer information
- // Documents.Excel.getHeaderFooterInformation();
-
- // Get information of worksheet backgrounds
- // Documents.Excel.getInformationOfWorksheetBackgrounds();
-
- // Get information of shapes inside a document
- // Documents.Excel.getShapesInformation();
-
- // Remove a shape
- // Documents.Excel.removeShape();
-
- // Remove watermark
- // Documents.Excel.removeWatermark();
-
- // Remove worksheet background
- // Documents.Excel.removeWorksheetBackground();
-
- // Extract all attachments from Excel document
- // Documents.Excel.extractAllAttachments();
-
- // Add an attachment to a PDF document
- // Documents.Excel.addAttachment();
-
- // Add a linked file to an Excel document
- // Documents.Excel.addLinkedAttachment();
-
- // Remove particular attachments from an Excel document
- // Documents.Excel.removeAttachment();
-
- // Add watermark to all attached files of supported types
- // Documents.Excel.addWatermarkToAttachment();
-
- // Add watermark to all attached files of supported types
- // Documents.Excel.searchImageInAttachment();
-
- // Working with PowerPoint Documents
- // Add watermark
- // Documents.PowerPoint.addWatermark();
-
- // Add watermark to all background images
- // Documents.PowerPoint.addWatermarkToAllBackgroundImages();
-
- // Add watermark to all slide types
- // Documents.PowerPoint.addWatermarkToAllSlideTypes();
-
- // Add watermark to images inside document
- // Documents.PowerPoint.addWatermarkToImages();
-
- // Add watermark to the shapes
- // Documents.PowerPoint.addWatermarkToImageShapes();
-
- // Add watermark with image effects
- // Documents.PowerPoint.addWatermarkWithImageEffects();
-
- // Add watermark with slides shape settings
- // Documents.PowerPoint.addWatermarkWithSlidesShapeSettings();
-
- // Add watermark with text effects
- // Documents.PowerPoint.addWatermarkWithTextEffects();
-
- // Get dimensions of slide
- // Documents.PowerPoint.getDimensionsOfSlide();
-
- // Get information of the slide background
- // Documents.PowerPoint.getInformationOfSlideBackgrounds();
-
- // Get information of the shapes inside a document
- // Documents.PowerPoint.getShapesInformation();
-
- // Remove background
- // Documents.PowerPoint.removeBackground();
-
- // Remove shape
- // Documents.PowerPoint.removeShape();
-
- // Remove watermark
- // Documents.PowerPoint.removeWatermark();
-
- // Replace hyperlinks that are activated on mouse over
- // Documents.PowerPoint.replaceHyperlinks();
-
- // Working with Visio Documents
-
- // =================================== issue======================
- // Add watermark to a particular page
- // Documents.Visio.addWatermarkToParticularPage();
- // ======================================= issue ======================
-
- // Add watermark to all pages of a particular type
- // Documents.Visio.addWatermarkToAllPagesOfParticularType();
-
- // Add watermark to all images in a particular page
- // Documents.Visio.addWatermarkToImages();
-
- // Add watermark to a separate newly created background pages
- // Documents.Visio.addWatermarkToSeparateBackgroundPage();
-
- // Get information about headers&footers
- // Documents.Visio.getHeaderFooterInformation();
-
- // Get information about pages
- // Documents.Visio.getPagesInformation();
-
- // Get information about shapes
- // Documents.Visio.getShapesInformation();
-
- // Lock watermark shape to prevent editing
- // Documents.Visio.lockWatermarkShape();
-
- // Remove watermark
- // Documents.Visio.removeWatermark();
-
- // Remove or replace a particular header&footer
- // Documents.Visio.removeOrReplaceHeaderFooter();
-
- // Remove a particular shape
- // Documents.Visio.removeShape();
-
- // Working with Emails
- // Load an email message
- // Documents.Email.loadEmailMessage();
-
- // Extract all attachments from an email message
- // Documents.Email.extractAllAttachments();
-
- // Remove particular attachments from an email message
- // Documents.Email.removeAttachment();
-
- // Add watermark to all attached files of supported types
- // Documents.Email.addWatermarkToAllAttachment();
-
- // Add an attachment to an email message
- // Documents.Email.addAttachment();
-
- // Remove all embedded jpeg images from an email message
- // Documents.Email.removeEmbeddedImages();
-
- // Embed image into email message body
- // Documents.Email.addEmbeddedImage();
-
- // Working with images
- // Images.addWatermarkToMultiframeImageDocument();
-
- // Replace text for particular XObject
- // Documents.PDF.replaceTextForParticularXObject();
-
- // Replace text for particular artifact
- // Documents.PDF.replaceTextForParticularArtifact();
-
- // Replace text for particular annotation
- // Documents.PDF.replaceTextForParticularAnnotation();
-
- // Replace text for particular XObject with formatting
- // Documents.PDF.replaceTextForParticularXObjectWithFormatting();
-
- // Replace text for particular artifact with formatting
- // Documents.PDF.replaceTextForParticularArtifactWithFormatting();
-
- // Replace text for particular annotation with formatting
- // Documents.PDF.replaceTextForParticularAnnotationWithFormatting();
-
- // Replace image for particular XObject
- // Documents.PDF.replaceImageForParticularXObject();
-
- // Replace image for particular artifact
- // Documents.PDF.replaceImageForParticularArtifact();
-
- // Replaces image for particular annotation
- // Documents.PDF.replaceImageForParticularAnnotation();
-
- System.out.println("Completed...");
- }
-}
diff --git a/Examples/GroupDocs.Watermark-for-Java/src/main/java/com/groupdocs/watermark/examples/WatermarkOperations.java b/Examples/GroupDocs.Watermark-for-Java/src/main/java/com/groupdocs/watermark/examples/WatermarkOperations.java
deleted file mode 100644
index c8f7542..0000000
--- a/Examples/GroupDocs.Watermark-for-Java/src/main/java/com/groupdocs/watermark/examples/WatermarkOperations.java
+++ /dev/null
@@ -1,733 +0,0 @@
-package com.groupdocs.watermark.examples;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.util.regex.Pattern;
-
-import com.groupdocs.watermark.CellsSearchableObjects;
-import com.groupdocs.watermark.Color;
-import com.groupdocs.watermark.ColorRange;
-import com.groupdocs.watermark.DiagramSearchableObjects;
-import com.groupdocs.watermark.Document;
-import com.groupdocs.watermark.Font;
-import com.groupdocs.watermark.FontStyle;
-import com.groupdocs.watermark.HorizontalAlignment;
-import com.groupdocs.watermark.HyperlinkPossibleWatermark;
-import com.groupdocs.watermark.ImageDctHashSearchCriteria;
-import com.groupdocs.watermark.ImageSearchCriteria;
-import com.groupdocs.watermark.ImageWatermark;
-import com.groupdocs.watermark.MarginType;
-import com.groupdocs.watermark.PdfSearchableObjects;
-import com.groupdocs.watermark.PossibleWatermark;
-import com.groupdocs.watermark.PossibleWatermarkCollection;
-import com.groupdocs.watermark.RotateAngleSearchCriteria;
-import com.groupdocs.watermark.SearchCriteria;
-import com.groupdocs.watermark.SearchableObjects;
-import com.groupdocs.watermark.SizingType;
-import com.groupdocs.watermark.SlidesDocument;
-import com.groupdocs.watermark.SlidesSearchableObjects;
-import com.groupdocs.watermark.TextAlignment;
-import com.groupdocs.watermark.TextFormattingSearchCriteria;
-import com.groupdocs.watermark.TextSearchCriteria;
-import com.groupdocs.watermark.TextWatermark;
-import com.groupdocs.watermark.VerticalAlignment;
-import com.groupdocs.watermark.WatermarkableImageCollection;
-import com.groupdocs.watermark.WordsSearchableObjects;
-
-public class WatermarkOperations {
- // initialize file paths
- // ExStart:SourceDocumentFilesPath
- private final static String PNG_FILE_PATH = "sample.png";
- private final static String DOC_FILE_PATH = "sample.docx";
- private final static String PPT_FILE_PATH = "sample.pptx";
- private final static String XLS_FILE_PATH = "sample.xlsx";
- private final static String PDF_FILE_PATH = "sample.pdf";
- // ExEnd:SourceDocumentFilesPath
-
- public static void addTextWatermark() {
- try {
- // ExStart:AddTextWatermark
- Document doc = Document.load(Common.mapSourceFilePath(PNG_FILE_PATH));
-
- Font font = new Font("Arial", 19, FontStyle.Bold | FontStyle.Italic);
- TextWatermark watermark = new TextWatermark("Test watermark", font);
-
- // Set watermark properties
- watermark.setForegroundColor(Color.getRed());
- watermark.setBackgroundColor(Color.getBlue());
- watermark.setTextAlignment(TextAlignment.Right);
- watermark.setOpacity(0.5);
-
- doc.addWatermark(watermark);
-
- doc.save(Common.mapOutputFilePath(PNG_FILE_PATH));
-
- doc.close();
- // ExEnd:AddTextWatermark
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- public static void addImageWatermark() {
- try {
- // ExStart:AddImageWatermark
- Document doc = Document.load(Common.mapSourceFilePath(DOC_FILE_PATH));
- // Use path to an image as constructor parameter
- ImageWatermark watermark = new ImageWatermark(Common.WATERMARK_IMAGE_PATH);
-
- // Add watermark to the document
- doc.addWatermark(watermark);
- doc.save(Common.mapOutputFilePath(DOC_FILE_PATH));
-
- watermark.close();
- doc.close();
- // ExEnd:AddImageWatermark
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- public static void addImageWatermarkUsingStream() {
- try {
- // ExStart:AddImageWatermarkUsingStream
- Document doc = Document.load(Common.mapSourceFilePath(PPT_FILE_PATH));
- FileInputStream watermarkInputStream = new FileInputStream(Common.WATERMARK_IMAGE_PATH);
-
- // Use stream containing an image as constructor parameter
- ImageWatermark watermark = new ImageWatermark(watermarkInputStream);
-
- // Add watermark to the document
- doc.addWatermark(watermark);
- doc.save(Common.mapOutputFilePath(PPT_FILE_PATH));
-
- watermark.close();
- watermarkInputStream.close();
- doc.close();
- // ExEnd:AddImageWatermarkUsingStream
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- public static void addWatermarkToAbsolutePosition() {
- try {
- // ExStart:AddWatermarkToAbsolutePosition
- Document doc = Document.load(Common.mapSourceFilePath(DOC_FILE_PATH));
- Font font = new Font("Times New Roman", 8);
- TextWatermark watermark = new TextWatermark("Test watermark", font);
-
- // Set watermark coordinates
- watermark.setX(30);
- watermark.setY(40);
-
- // Set watermark size
- watermark.setWidth(100);
- watermark.setHeight(40);
-
- doc.addWatermark(watermark);
- doc.save(Common.mapOutputFilePath(DOC_FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToAbsolutePosition
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- public static void addWatermarkToRelativePosition() {
- try {
- // ExStart:AddWatermarkToRelativePosition
- Document doc = Document.load(Common.mapSourceFilePath(DOC_FILE_PATH));
- Font font = new Font("Calibri", 42);
- TextWatermark watermark = new TextWatermark("Test watermark", font);
- watermark.setHorizontalAlignment(HorizontalAlignment.Right);
- watermark.setVerticalAlignment(VerticalAlignment.Bottom);
-
- watermark.getMargins().setRight(0.1);
- watermark.getMargins().setBottom(0.2);
-
- doc.addWatermark(watermark);
- doc.save(Common.mapOutputFilePath(DOC_FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkToRelativePosition
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- public static void addWatermarkWithAbsoluteMargin() {
- try {
- // ExStart:AddWatermarkWithMarginType
- Document doc = Document.load(Common.mapSourceFilePath(DOC_FILE_PATH));
- Font font = new Font("Calibri", 12);
- TextWatermark watermark = new TextWatermark("Test watermark", font);
- watermark.setHorizontalAlignment(HorizontalAlignment.Right);
- watermark.setVerticalAlignment(VerticalAlignment.Bottom);
-
- // Set absolute margins. Values are measured in document units.
- watermark.getMargins().setRight(10);
- watermark.getMargins().setBottom(5);
-
- doc.addWatermark(watermark);
- doc.save(Common.mapOutputFilePath(DOC_FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkWithMarginType
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- public static void addWatermarkWithRelativeMargin() {
- try {
- // ExStart:AddWatermarkWithMarginType
- Document doc = Document.load(Common.mapSourceFilePath(DOC_FILE_PATH));
- Font font = new Font("Calibri", 12);
- TextWatermark watermark = new TextWatermark("Test watermark", font);
- watermark.setHorizontalAlignment(HorizontalAlignment.Right);
- watermark.setVerticalAlignment(VerticalAlignment.Bottom);
-
- // Set relative margins. Margin value will be interpreted as a
- // portion of appropriate parent dimension.
- // If this type is chosen, margin value must be between 0.0 and 1.0.
- watermark.getMargins().setMarginType(MarginType.RelativeToParentDimensions);
- watermark.getMargins().setRight(0.1);
- watermark.getMargins().setBottom(0.2);
-
- doc.addWatermark(watermark);
- doc.save(Common.mapOutputFilePath(DOC_FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkWithMarginType
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- public static void addWatermarkWithSizeType() {
- try {
- // ExStart:AddWatermarkWithSizeType
- Document doc = Document.load(Common.mapSourceFilePath(DOC_FILE_PATH));
- Font font = new Font("Times New Roman", 12);
- TextWatermark watermark = new TextWatermark("Test watermark", font);
-
- // Set sizing type
- watermark.setSizingType(SizingType.ScaleToParentDimensions);
-
- // Set watermark scale
- watermark.setScaleFactor(0.5);
-
- doc.addWatermark(watermark);
- doc.save(Common.mapOutputFilePath(DOC_FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkWithSizeType
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- public static void addWatermarkWithParentMargin() {
- try {
- // ExStart:AddWatermarkWithParentMargin
- Document doc = Document.load(Common.mapSourceFilePath(DOC_FILE_PATH));
-
- TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 42));
- watermark.setHorizontalAlignment(HorizontalAlignment.Right);
- watermark.setVerticalAlignment(VerticalAlignment.Top);
- watermark.setSizingType(SizingType.ScaleToParentDimensions);
- watermark.setScaleFactor(1);
- watermark.setRotateAngle(45);
- watermark.setForegroundColor(Color.getRed());
- watermark.setBackgroundColor(Color.getAqua());
-
- // Add watermark considering parent margins
- watermark.setConsiderParentMargins(true);
-
- doc.addWatermark(watermark);
- doc.save(Common.mapOutputFilePath(DOC_FILE_PATH));
- doc.close();
- // ExEnd:AddWatermarkWithParentMargin
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- public static void addTextWatermark(int RotationAngle) {
- try {
- // ExStart:AddTextWatermarkWithRotationAngle
- Document doc = Document.load(Common.mapSourceFilePath(XLS_FILE_PATH));
-
- Font font = new Font("Calibri", 8);
- TextWatermark watermark = new TextWatermark("Test watermark", font);
- watermark.setHorizontalAlignment(HorizontalAlignment.Right);
- watermark.setVerticalAlignment(VerticalAlignment.Top);
- watermark.setSizingType(SizingType.ScaleToParentDimensions);
- watermark.setScaleFactor(0.5);
-
- // Set rotation angle
- watermark.setRotateAngle(RotationAngle);
-
- doc.addWatermark(watermark);
-
- doc.save(Common.mapOutputFilePath(XLS_FILE_PATH));
- doc.close();
- // ExEnd:AddTextWatermarkWithRotationAngle
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- public static void addWatermarkToImagesInsideDocument() {
- try {
- // ExStart:AddWatermarkToImagesInsideDocument
- Document doc = Document.load(Common.mapSourceFilePath(PPT_FILE_PATH));
- // Initialize text watermark
- TextWatermark textWatermark = new TextWatermark("Protected image", new Font("Arial", 8));
- textWatermark.setHorizontalAlignment(HorizontalAlignment.Center);
- textWatermark.setVerticalAlignment(VerticalAlignment.Center);
- textWatermark.setRotateAngle(45);
- textWatermark.setSizingType(SizingType.ScaleToParentDimensions);
- textWatermark.setScaleFactor(1);
-
- // Initialize image watermark
- ImageWatermark imageWatermark = new ImageWatermark(Common.WATERMARK_IMAGE_PATH);
- imageWatermark.setHorizontalAlignment(HorizontalAlignment.Center);
- imageWatermark.setVerticalAlignment(VerticalAlignment.Center);
- imageWatermark.setRotateAngle(-45);
- imageWatermark.setSizingType(SizingType.ScaleToParentDimensions);
- imageWatermark.setScaleFactor(1);
-
- // Find all images in a document
- WatermarkableImageCollection images = doc.findImages();
-
- for (int i = 0; i < images.getCount(); i++) {
- if (images.get_Item(i).getWidth() > 100 && images.get_Item(i).getHeight() > 100) {
- if (i % 2 == 0) {
- images.get_Item(i).addWatermark(textWatermark);
- } else {
- images.get_Item(i).addWatermark(imageWatermark);
- }
- }
- }
- doc.save(Common.mapOutputFilePath(PPT_FILE_PATH));
-
- imageWatermark.close();
- doc.close();
- // ExEnd:AddWatermarkToImagesInsideDocument
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- public static void searchWatermark() {
- try {
- // ExStart:SearchWatermark
- Document doc = Document.load(Common.mapSourceFilePath(DOC_FILE_PATH));
-
- PossibleWatermarkCollection possibleWatermarks = doc.findWatermarks();
- for (PossibleWatermark possibleWatermark : possibleWatermarks) {
- if (possibleWatermark.getImageData() != null) {
- System.out.println(possibleWatermark.getImageData().length);
- }
- System.out.println(possibleWatermark.getText());
- System.out.println(possibleWatermark.getX());
- System.out.println(possibleWatermark.getY());
- System.out.println(possibleWatermark.getRotateAngle());
- System.out.println(possibleWatermark.getWidth());
- System.out.println(possibleWatermark.getHeight());
- }
-
- doc.close();
- // ExEnd:SearchWatermark
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Searches for watermark with a particular text
- */
- public static void searchWatermark(String searchString) {
- try {
- // ExStart:SearchWatermarkWithSearchString
- Document doc = Document.load(Common.mapSourceFilePath(DOC_FILE_PATH));
- // Search by exact string
- TextSearchCriteria textSearchCriteria = new TextSearchCriteria(searchString);
-
- // Find all possible watermarks containing some specific text
- PossibleWatermarkCollection possibleWatermarks = doc.findWatermarks(textSearchCriteria);
-
- // ...
-
- doc.close();
- // ExEnd:SearchWatermarkWithSearchString
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Searches for watermark with a regular expression
- */
- public static void searchWatermarkWithRegularExpression() {
- try {
- // ExStart:SearchWatermarkWithRegularExpression
- Document doc = Document.load(Common.mapSourceFilePath(DOC_FILE_PATH));
- Pattern pattern = Pattern.compile(" \\d{4}");
-
- // Search by regular expression
- TextSearchCriteria textSearchCriteria = new TextSearchCriteria(pattern);
-
- // Find possible watermarks using regular expression
- PossibleWatermarkCollection possibleWatermarks = doc.findWatermarks(textSearchCriteria);
-
- // ...
-
- doc.close();
- // ExEnd:SearchWatermarkWithRegularExpression
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Searches for image watermark
- */
- public static void searchImageWatermark() {
- try {
- // ExStart:SearchImageWatermark
- Document doc = Document.load(Common.mapSourceFilePath(DOC_FILE_PATH));
- // Initialize criteria with the image
- ImageSearchCriteria imageSearchCriteria = new ImageDctHashSearchCriteria(Common.WATERMARK_IMAGE_PATH);
-
- // Set maximum allowed difference between images
- imageSearchCriteria.setMaxDifference(0.1);
-
- PossibleWatermarkCollection possibleWatermarks = doc.findWatermarks(imageSearchCriteria);
-
- System.out.println(possibleWatermarks.get_Item(0).getHeight());
- // ...
-
- doc.close();
- // ExEnd:SearchImageWatermark
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Searches for watermark with combination of different search criteria
- */
- public static void searchWatermarkWithCombinedSearch() {
- try {
- // ExStart:SearchWatermarkWithCombinedSearch
- Document doc = Document.load(Common.mapSourceFilePath(DOC_FILE_PATH));
- ImageSearchCriteria imageSearchCriteria = new ImageDctHashSearchCriteria(Common.WATERMARK_IMAGE_PATH);
- imageSearchCriteria.setMaxDifference(0.9);
-
- TextSearchCriteria textSearchCriteria = new TextSearchCriteria("Test watermark");
-
- RotateAngleSearchCriteria rotateAngleSearchCriteria = new RotateAngleSearchCriteria(30, 60);
-
- SearchCriteria combinedSearchCriteria = imageSearchCriteria.or(textSearchCriteria)
- .and(rotateAngleSearchCriteria);
-
- PossibleWatermarkCollection possibleWatermarks = doc.findWatermarks(combinedSearchCriteria);
-
- System.out.println(possibleWatermarks.getCount());
- // ...
-
- doc.close();
- // ExEnd:SearchWatermarkWithCombinedSearch
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Searches watermark with a prticular text formatting
- */
- public static void searchWatermarkWithParticularTextFormatting() {
- try {
- // ExStart:SearchWatermarkWithParticularTextFormatting
- Document doc = Document.load(Common.mapSourceFilePath(DOC_FILE_PATH));
- TextFormattingSearchCriteria criteria = new TextFormattingSearchCriteria();
- criteria.setForegroundColorRange(new ColorRange());
- criteria.getForegroundColorRange().setMinHue(-5);
- criteria.getForegroundColorRange().setMaxHue(10);
- criteria.getForegroundColorRange().setMinBrightness(0.01f);
- criteria.getForegroundColorRange().setMaxBrightness(0.99f);
- criteria.setBackgroundColorRange(new ColorRange());
- criteria.getBackgroundColorRange().setEmpty(true);
- criteria.setFontName("Arial");
- criteria.setMinFontSize(19);
- criteria.setMaxFontSize(42);
- criteria.setFontBold(false);
-
- PossibleWatermarkCollection watermarks = doc.findWatermarks(criteria);
-
- // ...
-
- doc.close();
- // ExEnd:SearchWatermarkWithParticularTextFormatting
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Removes watermark
- */
- public static void removeWatermark() {
- try {
- // ExStart:RemoveWatermark
- Document doc = Document.load(Common.mapSourceFilePath(DOC_FILE_PATH));
- PossibleWatermarkCollection possibleWatermarks = doc.findWatermarks();
-
- // Remove possible watermark at the specified index from the
- // document.
- possibleWatermarks.removeAt(0);
-
- // Remove specified possible watermark from the document.
- // possibleWatermarks.remove(possibleWatermarks.get_Item(0));
-
- doc.save(Common.mapOutputFilePath(DOC_FILE_PATH));
-
- doc.close();
- // ExEnd:RemoveWatermark
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Searches for watermark specifying which objects should be included in the
- * search for all document instances
- */
- public static void searchWatermarkInParticularObjects() {
- try {
- // ExStart:SearchWatermarkInParticularObjectsAllInstances
- SearchableObjects searchableObjects = new SearchableObjects();
- searchableObjects.setWordsSearchableObjects(
- WordsSearchableObjects.Hyperlinks | WordsSearchableObjects.Shapes | WordsSearchableObjects.Text);
- searchableObjects.setCellsSearchableObjects(CellsSearchableObjects.HeadersFooters);
- searchableObjects.setSlidesSearchableObjects(
- SlidesSearchableObjects.SlidesBackgrounds | SlidesSearchableObjects.Shapes);
- searchableObjects.setDiagramSearchableObjects(DiagramSearchableObjects.None);
- searchableObjects.setPdfSearchableObjects(PdfSearchableObjects.All);
-
- Document.setDefaultSearchableObjects(searchableObjects);
-
- File folder = new File(Common.STORAGE_PATH.toString());
- File[] listOfFiles = folder.listFiles();
- for (File file : listOfFiles) {
- if (file.isFile()) {
- Document doc = Document.load(file.getAbsolutePath());
- PossibleWatermarkCollection possibleWatermarks = doc.findWatermarks();
-
- System.out.println(possibleWatermarks.getCount());
- // The code for working with found watermarks goes here.
-
- doc.close();
- }
- }
- // ExEnd:SearchWatermarkInParticularObjectsAllInstances
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Searches for watermark specifying which objects should be included in the
- * search for particular document instance
- */
- public static void searchWatermarkInParticularObjectsForParticularDocument() {
- try {
- // ExStart:SearchWatermarkInParticularObjectsForParticularDocument
- Document doc = Document.load(Common.mapSourceFilePath(PDF_FILE_PATH));
-
- // Search for hyperlinks only.
- doc.getSearchableObjects().setPdfSearchableObjects(PdfSearchableObjects.Hyperlinks);
- PossibleWatermarkCollection possibleWatermarks = doc.findWatermarks();
-
- System.out.println(possibleWatermarks.getCount());
- // The code for working with found watermarks goes here.
-
- doc.close();
- // ExEnd:SearchWatermarkInParticularObjectsForParticularDocument
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Searches and removes hyperlinks
- */
- public static void removeHyperlinksWithParticularURL() {
- try {
- // ExStart:RemoveHyperlinksWithParticularURL_1
- Document doc = Document.load(Common.mapSourceFilePath(DOC_FILE_PATH));
-
- // Find watermark with particular text search criteria
- PossibleWatermarkCollection watermarks = doc
- .findWatermarks(new TextSearchCriteria(Pattern.compile("someurl\\.com")));
- for (int i = watermarks.getCount() - 1; i >= 0; i--) {
- // Ensure that only hyperlinks will be removed
- if (HyperlinkPossibleWatermark.class.isInstance(watermarks.get_Item(i))) {
- // Output the full url of the hyperlink
- System.out.println(watermarks.get_Item(i).getText());
-
- // Remove hyperlink from the document
- watermarks.removeAt(i);
- }
- }
-
- // Save document
- doc.save(Common.mapOutputFilePath(DOC_FILE_PATH));
-
- doc.close();
- // ExEnd:RemoveHyperlinksWithParticularURL_1
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Updates text in the found watermarks
- */
- public static void editTextInFoundWatermarks() {
- try {
- // ExStart:EditTextInFoundWatermarks_18.3
- Document doc = Document.load(Common.mapSourceFilePath(PPT_FILE_PATH));
-
- TextSearchCriteria searchCriteria = new TextSearchCriteria("test", false);
- PossibleWatermarkCollection watermarks = doc.findWatermarks(searchCriteria);
- for (PossibleWatermark watermark : watermarks) {
- try {
- watermark.setText("passed");
- } catch (Exception e) {
- // Found entity may not support text editing
- // Passed argument can have inappropriate value
- // Process such cases here
- }
- }
-
- doc.save(Common.mapOutputFilePath(PPT_FILE_PATH));
- doc.close();
- // ExEnd:EditTextInFoundWatermarks_18.3
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Updates text with formatting in the found watermarks
- */
- public static void editTextWithFormattingInFoundWatermarks() {
- try {
- // ExStart:EditTextWithFormattingInFoundWatermarks_18.3
- Document doc = Document.load(Common.mapSourceFilePath(DOC_FILE_PATH));
-
- TextSearchCriteria searchCriteria = new TextSearchCriteria("test", false);
- PossibleWatermarkCollection watermarks = doc.findWatermarks(searchCriteria);
- for (PossibleWatermark watermark : watermarks) {
- try {
- watermark.getFormattedTextFragments().clear();
- watermark.getFormattedTextFragments().add("passed", new Font("Calibri", 19, FontStyle.Bold),
- Color.getRed(), Color.getAqua());
- } catch (Exception e) {
- // Found entity may not support text editing
- // Passed argument can have inappropriate value
- // Process such cases here
- }
- }
-
- doc.save(Common.mapOutputFilePath(DOC_FILE_PATH));
- doc.close();
- // ExEnd:EditTextWithFormattingInFoundWatermarks_18.3
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Replaces image in the found watermarks
- */
- public static void replacesImageInFoundWatermarks() {
- try {
- // ExStart:ReplacesImageInFoundWatermarks_18.3
- String imagePath = Common.mapSourceFilePath(Common.WATERMARK_IMAGE_PATH);
- File imageFile = new File(imagePath);
- byte[] imageBytes = new byte[(int) imageFile.length()];
- InputStream imageInputStream = new FileInputStream(imageFile);
- imageInputStream.read(imageBytes);
- imageInputStream.close();
-
- Document doc = Document.load(Common.mapSourceFilePath(PDF_FILE_PATH));
-
- SearchCriteria searchCriteria = new ImageDctHashSearchCriteria("D:\\logo.bmp");
- PossibleWatermarkCollection watermarks = doc.findWatermarks(searchCriteria);
- for (PossibleWatermark watermark : watermarks) {
- try {
- watermark.setImageData(imageBytes);
- } catch (Exception e) {
- // Found entity may not support image replacing
- // Passed image can have inappropriate format
- // Process such cases here
- }
- }
-
- doc.save(Common.mapOutputFilePath(PDF_FILE_PATH));
- doc.close();
- // ExEnd:ReplacesImageInFoundWatermarks_18.3
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-
- /**
- * Searches for text watermark skipping unreadable characters
- */
- public static void SearchTextWatermarkSkippingUnreadableCharacters() {
- try {
- // ExStart:SearchTextWatermarkSkippingUnreadableCharacters_18.8
- SlidesDocument doc = Document.load(SlidesDocument.class, Common.mapSourceFilePath(PPT_FILE_PATH));
- String watermarkText = "Company name";
- TextSearchCriteria criterion = new TextSearchCriteria(watermarkText);
-
- // Enabling skipping of unreadable characters
- criterion.setSkipUnreadableCharacters(true);
-
- PossibleWatermarkCollection result = doc.findWatermarks(criterion);
-
- doc.close();
- // ExEnd:SearchTextWatermarkSkippingUnreadableCharacters_18.8
- } catch (Exception exp) {
- System.out.println("Exception: " + exp.getMessage());
- exp.printStackTrace();
- }
- }
-}
diff --git a/Examples/README.md b/Examples/README.md
index ffca78c..fb8e7ec 100644
--- a/Examples/README.md
+++ b/Examples/README.md
@@ -5,7 +5,7 @@
This package contains the code examples of the features offered by [GroupDocs.Watermark for Java](https://products.groupdocs.com/watermark/java) as well as the sample input files used in the examples.
-
+
@@ -25,6 +25,6 @@ You may find following resources helpful:
Follow below steps if you have product license:
-1. Open "Common.java"
-2. Set "LICENSE_PATH" variable to your license file path
-3. Call "applyLicenseFromFile" or "applyLicenseFromStream" method from "MainClass.java" to apply license
+1. Open "Constants.java"
+2. Set "LicenseFilePath" variable to your license file path
+3. Call "run" method from "SetLicenseFromFile.java" or "SetLicenseFromStream.java" to apply license
diff --git a/Examples/Resources/SampleFiles/Documents/diagram.vsdx b/Examples/Resources/SampleFiles/Documents/diagram.vsdx
new file mode 100644
index 0000000..c5bf9ad
Binary files /dev/null and b/Examples/Resources/SampleFiles/Documents/diagram.vsdx differ
diff --git a/Examples/Resources/SampleFiles/Documents/document.docx b/Examples/Resources/SampleFiles/Documents/document.docx
new file mode 100644
index 0000000..0b2e892
Binary files /dev/null and b/Examples/Resources/SampleFiles/Documents/document.docx differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Source/Sample_with_Annotation_watermark.pdf b/Examples/Resources/SampleFiles/Documents/document.pdf
similarity index 92%
rename from Examples/GroupDocs.Watermark-for-Java/Data/Source/Sample_with_Annotation_watermark.pdf
rename to Examples/Resources/SampleFiles/Documents/document.pdf
index 238ad41..e8ceac4 100644
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Source/Sample_with_Annotation_watermark.pdf and b/Examples/Resources/SampleFiles/Documents/document.pdf differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Source/samplewithattachments.msg b/Examples/Resources/SampleFiles/Documents/document.xlsx
similarity index 51%
rename from Examples/GroupDocs.Watermark-for-Java/Data/Source/samplewithattachments.msg
rename to Examples/Resources/SampleFiles/Documents/document.xlsx
index bc72cb7..6711e3a 100644
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Source/samplewithattachments.msg and b/Examples/Resources/SampleFiles/Documents/document.xlsx differ
diff --git a/Examples/Resources/SampleFiles/Documents/image.png b/Examples/Resources/SampleFiles/Documents/image.png
new file mode 100644
index 0000000..69e97e6
Binary files /dev/null and b/Examples/Resources/SampleFiles/Documents/image.png differ
diff --git a/Examples/Resources/SampleFiles/Documents/image.tiff b/Examples/Resources/SampleFiles/Documents/image.tiff
new file mode 100644
index 0000000..ea36525
Binary files /dev/null and b/Examples/Resources/SampleFiles/Documents/image.tiff differ
diff --git a/Examples/Resources/SampleFiles/Documents/input.vsdx b/Examples/Resources/SampleFiles/Documents/input.vsdx
new file mode 100644
index 0000000..a1f0964
Binary files /dev/null and b/Examples/Resources/SampleFiles/Documents/input.vsdx differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Attachments/sample.msg b/Examples/Resources/SampleFiles/Documents/message.msg
similarity index 100%
rename from Examples/GroupDocs.Watermark-for-Java/Data/Attachments/sample.msg
rename to Examples/Resources/SampleFiles/Documents/message.msg
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.pptx b/Examples/Resources/SampleFiles/Documents/presentation.pptx
similarity index 78%
rename from Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.pptx
rename to Examples/Resources/SampleFiles/Documents/presentation.pptx
index abb766a..2f42e76 100644
Binary files a/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.pptx and b/Examples/Resources/SampleFiles/Documents/presentation.pptx differ
diff --git a/Examples/Resources/SampleFiles/Documents/protected-document.docx b/Examples/Resources/SampleFiles/Documents/protected-document.docx
new file mode 100644
index 0000000..02fc44a
Binary files /dev/null and b/Examples/Resources/SampleFiles/Documents/protected-document.docx differ
diff --git a/Examples/Resources/SampleFiles/Documents/protected-spreadsheet.xlsx b/Examples/Resources/SampleFiles/Documents/protected-spreadsheet.xlsx
new file mode 100644
index 0000000..dee910e
Binary files /dev/null and b/Examples/Resources/SampleFiles/Documents/protected-spreadsheet.xlsx differ
diff --git a/Examples/Resources/SampleFiles/Documents/sample.docx b/Examples/Resources/SampleFiles/Documents/sample.docx
new file mode 100644
index 0000000..d27c9ab
Binary files /dev/null and b/Examples/Resources/SampleFiles/Documents/sample.docx differ
diff --git a/Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.msg b/Examples/Resources/SampleFiles/Documents/sample.msg
similarity index 100%
rename from Examples/GroupDocs.Watermark-for-Java/Data/Source/sample.msg
rename to Examples/Resources/SampleFiles/Documents/sample.msg
diff --git a/Examples/Resources/SampleFiles/Documents/source.docx b/Examples/Resources/SampleFiles/Documents/source.docx
new file mode 100644
index 0000000..1a99474
Binary files /dev/null and b/Examples/Resources/SampleFiles/Documents/source.docx differ
diff --git a/Examples/Resources/SampleFiles/Documents/spreadsheet.xlsx b/Examples/Resources/SampleFiles/Documents/spreadsheet.xlsx
new file mode 100644
index 0000000..6ff4b8c
Binary files /dev/null and b/Examples/Resources/SampleFiles/Documents/spreadsheet.xlsx differ
diff --git a/Examples/Resources/SampleFiles/Documents/test.doc b/Examples/Resources/SampleFiles/Documents/test.doc
new file mode 100644
index 0000000..c15ab7a
Binary files /dev/null and b/Examples/Resources/SampleFiles/Documents/test.doc differ
diff --git a/Examples/Resources/SampleFiles/Documents/test.docx b/Examples/Resources/SampleFiles/Documents/test.docx
new file mode 100644
index 0000000..d27c9ab
Binary files /dev/null and b/Examples/Resources/SampleFiles/Documents/test.docx differ
diff --git a/Examples/Resources/SampleFiles/Images/attachment.png b/Examples/Resources/SampleFiles/Images/attachment.png
new file mode 100644
index 0000000..e354d46
Binary files /dev/null and b/Examples/Resources/SampleFiles/Images/attachment.png differ
diff --git a/Examples/Resources/SampleFiles/Images/background.png b/Examples/Resources/SampleFiles/Images/background.png
new file mode 100644
index 0000000..e354d46
Binary files /dev/null and b/Examples/Resources/SampleFiles/Images/background.png differ
diff --git a/Examples/Resources/SampleFiles/Images/document_preview.png b/Examples/Resources/SampleFiles/Images/document_preview.png
new file mode 100644
index 0000000..60e10c8
Binary files /dev/null and b/Examples/Resources/SampleFiles/Images/document_preview.png differ
diff --git a/Examples/Resources/SampleFiles/Images/image.png b/Examples/Resources/SampleFiles/Images/image.png
new file mode 100644
index 0000000..e354d46
Binary files /dev/null and b/Examples/Resources/SampleFiles/Images/image.png differ
diff --git a/Examples/Resources/SampleFiles/Images/large.png b/Examples/Resources/SampleFiles/Images/large.png
new file mode 100644
index 0000000..e354d46
Binary files /dev/null and b/Examples/Resources/SampleFiles/Images/large.png differ
diff --git a/Examples/Resources/SampleFiles/Images/logo.bmp b/Examples/Resources/SampleFiles/Images/logo.bmp
new file mode 100644
index 0000000..bbb2c98
Binary files /dev/null and b/Examples/Resources/SampleFiles/Images/logo.bmp differ
diff --git a/Examples/Resources/SampleFiles/Images/logo.gif b/Examples/Resources/SampleFiles/Images/logo.gif
new file mode 100644
index 0000000..78c84cb
Binary files /dev/null and b/Examples/Resources/SampleFiles/Images/logo.gif differ
diff --git a/Examples/Resources/SampleFiles/Images/logo.jpg b/Examples/Resources/SampleFiles/Images/logo.jpg
new file mode 100644
index 0000000..09e69c0
Binary files /dev/null and b/Examples/Resources/SampleFiles/Images/logo.jpg differ
diff --git a/Examples/Resources/SampleFiles/Images/logo.png b/Examples/Resources/SampleFiles/Images/logo.png
new file mode 100644
index 0000000..e354d46
Binary files /dev/null and b/Examples/Resources/SampleFiles/Images/logo.png differ
diff --git a/Examples/Resources/SampleFiles/Images/protect.jpg b/Examples/Resources/SampleFiles/Images/protect.jpg
new file mode 100644
index 0000000..a49b862
Binary files /dev/null and b/Examples/Resources/SampleFiles/Images/protect.jpg differ
diff --git a/Examples/Resources/SampleFiles/Images/sample.jpg b/Examples/Resources/SampleFiles/Images/sample.jpg
new file mode 100644
index 0000000..c5491e8
Binary files /dev/null and b/Examples/Resources/SampleFiles/Images/sample.jpg differ
diff --git a/Examples/Resources/SampleFiles/Images/test.png b/Examples/Resources/SampleFiles/Images/test.png
new file mode 100644
index 0000000..e354d46
Binary files /dev/null and b/Examples/Resources/SampleFiles/Images/test.png differ
diff --git a/Examples/Resources/SampleFiles/Images/watermark.jpg b/Examples/Resources/SampleFiles/Images/watermark.jpg
new file mode 100644
index 0000000..1690090
Binary files /dev/null and b/Examples/Resources/SampleFiles/Images/watermark.jpg differ
diff --git a/Examples/Resources/SampleFiles/Output/.gitkeep b/Examples/Resources/SampleFiles/Output/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/Examples/GroupDocs.Watermark-for-Java/pom.xml b/Examples/pom.xml
similarity index 78%
rename from Examples/GroupDocs.Watermark-for-Java/pom.xml
rename to Examples/pom.xml
index 2c10e8f..0d7a64f 100644
--- a/Examples/GroupDocs.Watermark-for-Java/pom.xml
+++ b/Examples/pom.xml
@@ -26,23 +26,27 @@
azure-storage
4.3.0
-
org.apache.commons
commons-io
1.3.2
-
- com.groupdocs
- groupdocs-watermark
- 18.8
-
+
+ com.groupdocs
+ groupdocs-watermark
+ 24.11
+
GroupDocsJavaAPI
GroupDocs Java API
- http://artifact.groupdocs.com/repo/
+ https://releases.groupdocs.com/java/repo/
+
+
+ maven-central
+ maven-central
+ https://repo1.maven.org/maven2
@@ -51,8 +55,8 @@
maven-compiler-plugin
3.5.1
- 1.8
- 1.8
+ 1.7
+ 1.7
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/Constants.java b/Examples/src/main/java/com/groupdocs/watermark/examples/Constants.java
new file mode 100644
index 0000000..0524e41
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/Constants.java
@@ -0,0 +1,56 @@
+package com.groupdocs.watermark.examples;
+
+import java.io.File;
+
+public class Constants {
+ public static final String ResourcesPath = "Resources/";
+
+ public static final String LicenseFilePath = new File(ResourcesPath, "GroupDocs.Watermark.Java.lic").getPath();
+
+ public static final String DocumentsPath = new File(ResourcesPath, "SampleFiles/Documents").getPath();
+ public static final String ImagesPath = new File(ResourcesPath, "SampleFiles/Images").getPath();
+ public static final String OutputPath = new File(ResourcesPath, "SampleFiles/Output").getPath();
+ public static final String InDiagramVsdx = new File(DocumentsPath, "diagram.vsdx").getPath();
+ public static final String OutDiagramVsdx = new File(OutputPath, "diagram.vsdx").getPath();
+ public static final String InDocumentDocx = new File(DocumentsPath, "document.docx").getPath();
+ public static final String OutDocumentDocx = new File(OutputPath, "document.docx").getPath();
+ public static final String InDocumentPdf = new File(DocumentsPath, "document.pdf").getPath();
+ public static final String OutDocumentPdf = new File(OutputPath, "document.pdf").getPath();
+ public static final String InDocumentXlsx = new File(DocumentsPath, "document.xlsx").getPath();
+ public static final String OutDocumentXlsx = new File(OutputPath, "document.xlsx").getPath();
+ public static final String InImagePng = new File(DocumentsPath, "image.png").getPath();
+ public static final String OutImagePng = new File(OutputPath, "image.png").getPath();
+ public static final String InImageTiff = new File(DocumentsPath, "image.tiff").getPath();
+ public static final String OutImageTiff = new File(OutputPath, "image.tiff").getPath();
+ public static final String InInputVsdx = new File(DocumentsPath, "input.vsdx").getPath();
+ public static final String OutInputVsdx = new File(OutputPath, "input.vsdx").getPath();
+ public static final String InMessageMsg = new File(DocumentsPath, "message.msg").getPath();
+ public static final String OutMessageMsg = new File(OutputPath, "message.msg").getPath();
+ public static final String InPresentationPptx = new File(DocumentsPath, "presentation.pptx").getPath();
+ public static final String OutPresentationPptx = new File(OutputPath, "presentation.pptx").getPath();
+ public static final String InProtectedDocumentDocx = new File(DocumentsPath, "protected-document.docx").getPath();
+ public static final String OutProtectedDocumentDocx = new File(OutputPath, "protected-document.docx").getPath();
+ public static final String InSampleDocx = new File(DocumentsPath, "sample.docx").getPath();
+ public static final String InSampleMsg = new File(DocumentsPath, "sample.msg").getPath();
+ public static final String InSourceDocx = new File(DocumentsPath, "source.docx").getPath();
+ public static final String InSpreadsheetXlsx = new File(DocumentsPath, "spreadsheet.xlsx").getPath();
+ public static final String OutSpreadsheetXlsx = new File(OutputPath, "spreadsheet.xlsx").getPath();
+ public static final String InTestDoc = new File(DocumentsPath, "test.doc").getPath();
+ public static final String OutTestDoc = new File(OutputPath, "test.doc").getPath();
+ public static final String InTestDocx = new File(DocumentsPath, "test.docx").getPath();
+ public static final String OutTestDocx = new File(OutputPath, "test.docx").getPath();
+
+ public static final String AttachmentPng = new File(ImagesPath, "attachment.png").getPath();
+ public static final String BackgroundPng = new File(ImagesPath, "background.png").getPath();
+ public static final String DocumentPreviewPng = new File(ImagesPath, "document_preview.png").getPath();
+ public static final String ImagePng = new File(ImagesPath, "image.png").getPath();
+ public static final String LargePng = new File(ImagesPath, "large.png").getPath();
+ public static final String LogoBmp = new File(ImagesPath, "logo.bmp").getPath();
+ public static final String LogoGif = new File(ImagesPath, "logo.gif").getPath();
+ public static final String LogoJpg = new File(ImagesPath, "logo.jpg").getPath();
+ public static final String LogoPng = new File(ImagesPath, "logo.png").getPath();
+ public static final String ProtectJpg = new File(ImagesPath, "protect.jpg").getPath();
+ public static final String SampleJpg = new File(ImagesPath, "sample.jpg").getPath();
+ public static final String TestPng = new File(ImagesPath, "test.png").getPath();
+ public static final String WatermarkJpg = new File(ImagesPath, "watermark.jpg").getPath();
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/MainClass.java b/Examples/src/main/java/com/groupdocs/watermark/examples/MainClass.java
new file mode 100644
index 0000000..b9fdf5f
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/MainClass.java
@@ -0,0 +1,302 @@
+package com.groupdocs.watermark.examples;
+
+import com.groupdocs.watermark.examples.quick_start.*;
+import com.groupdocs.watermark.examples.basic_usage.*;
+import com.groupdocs.watermark.examples.advanced_usage.loading_documents.*;
+import com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_email_attachments.*;
+import com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_images.*;
+import com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf.*;
+import com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_presentations.*;
+import com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets.*;
+import com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing.*;
+import com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.adding_image_watermarks.*;
+import com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.adding_text_watermarks.*;
+import com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_diagrams.*;
+import com.groupdocs.watermark.examples.advanced_usage.saving_documents.*;
+import com.groupdocs.watermark.examples.advanced_usage.searching_and_modifying_watermarks.*;
+import org.bouncycastle.util.test.Test;
+
+public class MainClass {
+ public static void main(String[] args) throws Throwable {
+
+ System.out.println("Open MainClass.java.\n");
+ System.out.println("In main() method uncomment the example that you want to run.");
+ System.out.println("=====================================================");
+
+ // NOTE: Please uncomment the example you want to try out
+
+ //region Quick Start
+
+ //SetLicenseFromFile.run();
+// SetLicenseFromStream.run();
+// SetMeteredLicense.run();
+ HelloWorld.run();
+
+ //endregion
+
+ //region Basic Usage
+
+// GetSupportedFileFormats.run();
+// GetDocumentInfoForTheFileFromLocalDisk.run();
+// GetDocumentInfoForTheFileFromStream.run();
+
+// AddATextWatermark.run();
+// AddAnImageWatermark.run();
+
+// GenerateDocumentPreview.run();
+
+ //endregion
+
+ //region Advanced Usage
+
+ //region Loading Documents
+
+// LoadFromLocalDisk.run();
+// LoadFromStream.run();
+// LoadingDocumentOfSpecificFormat.run();
+// LoadPasswordProtectedDocument.run();
+// LoadPasswordProtectedWordProcessingDocument.run();
+
+ //endregion
+
+ //region AddingTextWatermarks
+
+// AddTextWatermark.run();
+// AddWatermarkToAbsolutePosition.run();
+// AddWatermarkToRelativePosition.run();
+// AddWatermarkWithMarginType.run();
+// AddWatermarkWithSizeType.run();
+// AddTextWatermarkWithRotationAngle.run();
+// AddWatermarkWithParentMargin.run();
+
+ //endregion
+
+ //region AddingImageWatermarks
+
+// AddImageWatermark.run();
+// AddImageWatermarkUsingStream.run();
+
+ //endregion
+
+ //region AddWatermarksToDiagrams
+
+// DiagramAddWatermarkToAllPagesOfParticularType.run();
+// DiagramAddWatermarkToSeparateBackgroundPage.run();
+// DiagramAddWatermarkToParticularPage.run();
+// DiagramLockWatermarkShape.run();
+
+// DiagramRemoveWatermark.run();
+// DiagramGetShapesInformation.run();
+// DiagramRemoveShape.run();
+// DiagramRemoveTextShapesWithParticularTextFormatting.run();
+// DiagramRemoveHyperlinks.run();
+// DiagramReplaceTextForParticularShapes.run();
+// DiagramReplaceTextWithFormatting.run();
+// DiagramReplaceShapeImage.run();
+// DiagramGetHeaderFooterInformation.run();
+// DiagramRemoveOrReplaceHeaderFooter.run();
+
+ //endregion
+
+ //region AddWatermarksToEmailAttachments
+
+// EmailAddWatermarkToAllAttachments.run();
+
+// EmailExtractAllAttachments.run();
+// EmailRemoveAttachment.run();
+// EmailAddAttachment.run();
+
+// EmailUpdateBody.run();
+// EmailAddEmbeddedImage.run();
+// EmailRemoveEmbeddedImages.run();
+// EmailSearchTextInBody.run();
+// EmailListRecipients.run();
+
+ //endregion
+
+ //region AddWatermarksToImages
+
+// AddWatermarkToImage.run();
+// AddWatermarkToImagesInsideDocument.run();
+
+ //endregion
+
+ //region AddWatermarksToPdf
+
+// PdfAddWatermarks.run();
+// PdfAddWatermarkToImages.run();
+// PdfGetDimensions.run();
+// PdfAddWatermarkWithPageMarginType.run();
+// PdfAddWatermarkToAllAttachments.run();
+
+// PdfAddArtifactWatermark.run();
+// PdfAddAnnotationWatermark.run();
+// PdfAddPrintOnlyAnnotationWatermark.run();
+
+// PdfRasterizeDocument.run();
+// PdfRasterizePage.run();
+
+// PdfRemoveWatermark.run();
+// PdfExtractXObjectInformation.run();
+// PdfRemoveXObject.run();
+// PdfRemoveXObjectWithParticularTextFormatting.run();
+// PdfAddWatermarkToXObjects.run();
+// PdfReplaceTextForParticularXObject.run();
+// PdfReplaceTextForParticularXObjectWithFormatting.run();
+// PdfReplaceImageForParticularXObject.run();
+// PdfExtractArtifactInformation.run();
+// PdfRemoveArtifact.run();
+// PdfRemoveArtifactsWithParticularTextFormatting.run();
+// PdfAddWatermarkToImageArtifacts.run();
+// PdfReplaceTextForParticularArtifact.run();
+// PdfReplaceTextForParticularArtifactWithFormatting.run();
+// PdfReplaceImageForParticularArtifact.run();
+// PdfExtractAnnotationInformation.run();
+// PdfRemoveAnnotation.run();
+// PdfRemoveAnnotationsWithParticularTextFormatting.run();
+// PdfAddWatermarkToAnnotationImages.run();
+// PdfReplaceTextForParticularAnnotation.run();
+// PdfReplaceTextForParticularAnnotationWithFormatting.run();
+// PdfReplaceImageForParticularAnnotation.run();
+
+// PdfExtractAllAttachments.run();
+// PdfAddAttachment.run();
+// PdfRemoveAttachment.run();
+// PdfSearchImageInAttachment.run();
+
+ //endregion
+
+ //region AddWatermarksToPresentations
+
+// PresentationAddWatermarkToSlide.run();
+// PresentationProtectWatermarkUsingUnreadableCharacters.run();
+// PresentationGetSlideDimensions.run();
+// PresentationAddWatermarkToSlideImages.run();
+// PresentationAddWatermarkToAllSlideTypes.run();
+// PresentationAddWatermarkWithSlidesShapeSettings.run();
+// PresentationAddWatermarkWithTextEffects.run();
+// PresentationAddWatermarkWithImageEffects.run();
+
+// PresentationGetSlideBackgroundsInformation.run();
+// PresentationRemoveSlideBackground.run();
+// PresentationAddWatermarkToSlideBackgroundImages.run();
+// PresentationSetTiledSemitransparentBackground.run();
+// PresentationSetBackgroundImageForChart.run();
+
+ //endregion
+
+ //region AddWatermarksToSpreadsheets
+
+// SpreadsheetAddWatermarkToWorksheet.run();
+// SpreadsheetGetContentAreaDimensions.run();
+// SpreadsheetAddWatermarkToWorksheetImages.run();
+// SpreadsheetAddModernWordArtWatermark.run();
+// SpreadsheetAddWatermarkUsingShapeSettings.run();
+// SpreadsheetAddWatermarkWithTextEffects.run();
+// SpreadsheetAddWatermarkWithImageEffects.run();
+// SpreadsheetAddWatermarkAsBackground.run();
+// SpreadsheetAddWatermarkAsBackgroundWithRelativeSizeAndPosition.run();
+// SpreadsheetAddTextWatermarkAsBackground.run();
+// SpreadsheetAddImageWatermarkIntoHeaderFooter.run();
+// SpreadsheetAddTextWatermarkIntoHeaderFooter.run();
+
+// SpreadsheetGetInformationOfWorksheetBackgrounds.run();
+// SpreadsheetRemoveWorksheetBackground.run();
+// SpreadsheetAddWatermarkToBackgroundImages.run();
+// SpreadsheetSetBackgroundImageForChart.run();
+
+// SpreadsheetGetHeaderFooterInformation.run();
+// SpreadsheetClearHeaderFooter.run();
+// SpreadsheetClearSectionOfHeaderFooter.run();
+// SpreadsheetAddWatermarkToImagesInHeaderFooter.run();
+
+// SpreadsheetExtractAllAttachments.run();
+// SpreadsheetAddAttachment.run();
+// SpreadsheetAddLinkedAttachment.run();
+// SpreadsheetRemoveAttachment.run();
+// SpreadsheetAddWatermarkToAttachment.run();
+// SpreadsheetSearchImageInAttachment.run();
+
+// SpreadsheetGetShapesInformation.run();
+// SpreadsheetRemoveShape.run();
+// SpreadsheetRemoveTextShapesWithParticularTextFormatting.run();
+// SpreadsheetRemoveHyperlinks.run();
+// SpreadsheetReplaceTextForParticularShapes.run();
+// SpreadsheetReplaceTextWithFormattingForParticularShapes.run();
+// SpreadsheetReplaceImageOfParticularShapes.run();
+// SpreadsheetSetBackgroundImageForParticularShapes.run();
+// SpreadsheetUpdateShapeProperties.run();
+
+ //endregion
+
+ //region AddWatermarksToWordProcessing
+
+// WordProcessingAddWatermarkToSection.run();
+// WordProcessingGetSectionProperties.run();
+// WordProcessingAddWatermarkToSectionImages.run();
+// WordProcessingAddWatermarkToShapeImages.run();
+// WordProcessingAddWatermarkToParticularPage.run();
+// WordProcessingLinkHeaderFooterInSection.run();
+// WordProcessingLinkAllHeaderFooterInSection.run();
+// WordProcessingAddImageWatermarkToAllHeaders.run();
+// WordProcessingSetDifferentFirstPageHeaderFooter.run();
+
+// WordProcessingAddLockedWatermarkToAllPages.run();
+// WordProcessingAddLockedWatermarkToParticularPages.run();
+// WordProcessingAddLockedWatermarkToSection.run();
+
+// WordProcessingAddWatermarkWithShapeSettings.run();
+// WordProcessingAddWatermarkWithTextEffects.run();
+// WordProcessingAddWatermarkWithImageEffects.run();
+
+// WordProcessingRemoveWatermarkFromSection.run();
+// WordProcessingFindWatermarkInHeaderFooter.run();
+// WordProcessingGetShapesInformation.run();
+// WordProcessingShapeTypeUsage.run();
+// WordProcessingRemoveShape.run();
+// WordProcessingRemoveShapesWithParticularTextFormatting.run();
+// WordProcessingRemoveHyperlinks.run();
+// WordProcessingReplaceTextForParticularShape.run();
+// WordProcessingReplaceShapeTextWithFormattedText.run();
+// WordProcessingReplaceShapeImage.run();
+// WordProcessingModifyShapeProperties.run();
+
+// WordProcessingProtectDocument.run();
+// WordProcessingUnProtectDocument.run();
+
+ //endregion
+
+ //region SavingDocuments
+
+// SaveDocumentToTheSpecifiedLocation.run();
+// SaveDocumentToTheSpecifiedStream.run();
+
+ //endregion
+
+ //region SearchAndRemoveWatermarks
+
+// SearchWatermark.run();
+// SearchWatermarkWithSearchString.run();
+// SearchWatermarkWithRegularExpression.run();
+// SearchImageWatermark.run();
+// SearchWatermarkWithCombinedSearch.run();
+// SearchWatermarkWithParticularTextFormatting.run();
+// SearchWatermarkInParticularObjectsAllInstances.run();
+// SearchWatermarkInParticularObjectsForParticularDocument.run();
+// SearchTextWatermarkSkippingUnreadableCharacters.run();
+
+// RemoveWatermark.run();
+// RemoveWatermarkWithParticularTextFormatting.run();
+// RemoveHyperlinksWithParticularUrl.run();
+
+// ModifyTextInFoundWatermarks.run();
+// ModifyTextWithFormattingInFoundWatermarks.run();
+// ModifyImageInFoundWatermarks.run();
+
+ //endregion
+
+ //endregion
+
+ System.out.println("\nAll done.");
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramAddWatermarkToAllPagesOfParticularType.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramAddWatermarkToAllPagesOfParticularType.java
new file mode 100644
index 0000000..8eb3d5a
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramAddWatermarkToAllPagesOfParticularType.java
@@ -0,0 +1,43 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_diagrams;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.DiagramWatermarkPlacementType;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.DiagramLoadOptions;
+import com.groupdocs.watermark.options.DiagramShapeWatermarkOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.ImageWatermark;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class DiagramAddWatermarkToAllPagesOfParticularType {
+ /**
+ * This example shows how to add watermark to a particular type of the pages.
+ */
+ public static void run() {
+ DiagramLoadOptions loadOptions = new DiagramLoadOptions();
+ // Constants.InDiagramVsdx is an absolute or relative path to your document. Ex: "C:\\Docs\\diagram.vsdx"
+ Watermarker watermarker = new Watermarker(Constants.InDiagramVsdx, loadOptions);
+
+ // Initialize text watermark
+ TextWatermark textWatermark = new TextWatermark("Test watermark 1", new Font("Calibri", 19));
+
+ DiagramShapeWatermarkOptions textWatermarkOptions = new DiagramShapeWatermarkOptions();
+ textWatermarkOptions.setPlacementType(DiagramWatermarkPlacementType.BackgroundPages);
+
+ // Add text watermark to all background pages
+ watermarker.add(textWatermark, textWatermarkOptions);
+
+ // Initialize image watermark
+ ImageWatermark imageWatermark = new ImageWatermark(Constants.LogoJpg);
+
+ DiagramShapeWatermarkOptions imageWatermarkOptions = new DiagramShapeWatermarkOptions();
+ imageWatermarkOptions.setPlacementType(DiagramWatermarkPlacementType.ForegroundPages);
+
+ // Add image watermark to all foreground pages
+ watermarker.add(imageWatermark, imageWatermarkOptions);
+
+ watermarker.save(Constants.OutDiagramVsdx);
+ imageWatermark.close();
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramAddWatermarkToParticularPage.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramAddWatermarkToParticularPage.java
new file mode 100644
index 0000000..7fc73ca
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramAddWatermarkToParticularPage.java
@@ -0,0 +1,41 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_diagrams;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.DiagramLoadOptions;
+import com.groupdocs.watermark.options.DiagramPageWatermarkOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.ImageWatermark;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class DiagramAddWatermarkToParticularPage {
+ /**
+ * This example shows how to add watermark to a particular page of the document.
+ */
+ public static void run() {
+ DiagramLoadOptions loadOptions = new DiagramLoadOptions();
+ // Constants.InDiagramVsdx is an absolute or relative path to your document. Ex: "C:\\Docs\\diagram.vsdx"
+ Watermarker watermarker = new Watermarker(Constants.InDiagramVsdx, loadOptions);
+
+ TextWatermark textWatermark = new TextWatermark("Test watermark", new Font("Calibri", 19));
+
+ DiagramPageWatermarkOptions textWatermarkOptions = new DiagramPageWatermarkOptions();
+ textWatermarkOptions.setPageIndex(0);
+
+ // Add text watermark to the first page
+ watermarker.add(textWatermark, textWatermarkOptions);
+
+ ImageWatermark imageWatermark = new ImageWatermark(Constants.LogoJpg);
+
+ DiagramPageWatermarkOptions imageWatermarkOptions = new DiagramPageWatermarkOptions();
+ imageWatermarkOptions.setPageIndex(1);
+
+ // Add image watermark to the second page
+ watermarker.add(imageWatermark, imageWatermarkOptions);
+
+ watermarker.save(Constants.OutDiagramVsdx);
+
+ watermarker.close();
+ imageWatermark.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramAddWatermarkToSeparateBackgroundPage.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramAddWatermarkToSeparateBackgroundPage.java
new file mode 100644
index 0000000..24de8a6
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramAddWatermarkToSeparateBackgroundPage.java
@@ -0,0 +1,33 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_diagrams;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.DiagramWatermarkPlacementType;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.DiagramLoadOptions;
+import com.groupdocs.watermark.options.DiagramShapeWatermarkOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class DiagramAddWatermarkToSeparateBackgroundPage {
+ /**
+ * This example shows how to place the watermark on separate newly created background pages.
+ */
+ public static void run() {
+ DiagramLoadOptions loadOptions = new DiagramLoadOptions();
+ // Constants.InDiagramVsdx is an absolute or relative path to your document. Ex: "C:\\Docs\\diagram.vsdx"
+ Watermarker watermarker = new Watermarker(Constants.InDiagramVsdx, loadOptions);
+
+ // Initialize watermark of any supported type
+ TextWatermark textWatermark = new TextWatermark("Test watermark 1", new Font("Calibri", 19));
+
+ DiagramShapeWatermarkOptions options = new DiagramShapeWatermarkOptions();
+ options.setPlacementType(DiagramWatermarkPlacementType.SeparateBackgrounds);
+
+ // Create separate background for each page where it is not set. Add watermark to it.
+ watermarker.add(textWatermark, options);
+
+ watermarker.save(Constants.OutDiagramVsdx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramGetHeaderFooterInformation.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramGetHeaderFooterInformation.java
new file mode 100644
index 0000000..0948d85
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramGetHeaderFooterInformation.java
@@ -0,0 +1,44 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_diagrams;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.DiagramContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.DiagramLoadOptions;
+
+public class DiagramGetHeaderFooterInformation {
+ /**
+ * This example shows how to extract information about all the headers and footers in a Diagram document.
+ */
+ public static void run() {
+ DiagramLoadOptions loadOptions = new DiagramLoadOptions();
+ // Constants.InDiagramVsdx is an absolute or relative path to your document. Ex: "C:\\Docs\\diagram.vsdx"
+ Watermarker watermarker = new Watermarker(Constants.InDiagramVsdx, loadOptions);
+
+ DiagramContent content = watermarker.getContent(DiagramContent.class);
+
+ // Get header&footer font settings
+ System.out.println(content.getHeaderFooter().getFont().getFamilyName());
+ System.out.println(content.getHeaderFooter().getFont().getSize());
+ System.out.println(content.getHeaderFooter().getFont().getBold());
+ System.out.println(content.getHeaderFooter().getFont().getItalic());
+ System.out.println(content.getHeaderFooter().getFont().getUnderline());
+ System.out.println(content.getHeaderFooter().getFont().getStrikeout());
+
+ // Get text contained in headers&footers
+ System.out.println(content.getHeaderFooter().getHeaderLeft());
+ System.out.println(content.getHeaderFooter().getHeaderCenter());
+ System.out.println(content.getHeaderFooter().getHeaderRight());
+ System.out.println(content.getHeaderFooter().getFooterLeft());
+ System.out.println(content.getHeaderFooter().getFooterCenter());
+ System.out.println(content.getHeaderFooter().getFooterRight());
+
+ // Get text color
+ System.out.println(content.getHeaderFooter().getTextColor().toArgb());
+
+ // Get header&footer margins
+ System.out.println(content.getHeaderFooter().getFooterMargin());
+ System.out.println(content.getHeaderFooter().getHeaderMargin());
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramGetShapesInformation.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramGetShapesInformation.java
new file mode 100644
index 0000000..004852a
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramGetShapesInformation.java
@@ -0,0 +1,44 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_diagrams;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.DiagramContent;
+import com.groupdocs.watermark.contents.DiagramPage;
+import com.groupdocs.watermark.contents.DiagramShape;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.DiagramLoadOptions;
+
+public class DiagramGetShapesInformation {
+ /**
+ * This example shows how to get information about all the shapes in a Diagram document.
+ */
+ public static void run() {
+ DiagramLoadOptions loadOptions = new DiagramLoadOptions();
+ // Constants.InDiagramVsdx is an absolute or relative path to your document. Ex: "C:\\Docs\\diagram.vsdx"
+ Watermarker watermarker = new Watermarker(Constants.InDiagramVsdx, loadOptions);
+
+ DiagramContent content = watermarker.getContent(DiagramContent.class);
+ for (DiagramPage page : content.getPages())
+ {
+ for (DiagramShape shape : page.getShapes())
+ {
+ if (shape.getImage() != null)
+ {
+ System.out.println(shape.getImage().getWidth());
+ System.out.println(shape.getImage().getHeight());
+ System.out.println(shape.getImage().getBytes().length);
+ }
+
+ System.out.println(shape.getName());
+ System.out.println(shape.getX());
+ System.out.println(shape.getY());
+ System.out.println(shape.getWidth());
+ System.out.println(shape.getHeight());
+ System.out.println(shape.getRotateAngle());
+ System.out.println(shape.getText());
+ System.out.println(shape.getId());
+ }
+ }
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramLockWatermarkShape.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramLockWatermarkShape.java
new file mode 100644
index 0000000..eeafa7e
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramLockWatermarkShape.java
@@ -0,0 +1,31 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_diagrams;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.DiagramLoadOptions;
+import com.groupdocs.watermark.options.DiagramShapeWatermarkOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class DiagramLockWatermarkShape {
+ /**
+ * This example shows how to protect watermark from editing.
+ */
+ public static void run() {
+ DiagramLoadOptions loadOptions = new DiagramLoadOptions();
+ // Constants.InDiagramVsdx is an absolute or relative path to your document. Ex: "C:\\Docs\\diagram.vsdx"
+ Watermarker watermarker = new Watermarker(Constants.InDiagramVsdx, loadOptions);
+
+ TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 19));
+
+ DiagramShapeWatermarkOptions options = new DiagramShapeWatermarkOptions();
+ options.setLocked(true);
+
+ // Editing of the shape in Visio is forbidden
+ watermarker.add(watermark, options);
+
+ watermarker.save(Constants.OutDiagramVsdx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramRemoveHyperlinks.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramRemoveHyperlinks.java
new file mode 100644
index 0000000..5a10f48
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramRemoveHyperlinks.java
@@ -0,0 +1,32 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_diagrams;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.DiagramContent;
+import com.groupdocs.watermark.contents.DiagramShape;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.DiagramLoadOptions;
+
+public class DiagramRemoveHyperlinks {
+ /**
+ * This example shows how to remove hyperlink associated with a particular shape.
+ */
+ public static void run() {
+ DiagramLoadOptions loadOptions = new DiagramLoadOptions();
+ // Constants.InDiagramVsdx is an absolute or relative path to your document. Ex: "C:\\Docs\\diagram.vsdx"
+ Watermarker watermarker = new Watermarker(Constants.InDiagramVsdx, loadOptions);
+
+ DiagramContent content = watermarker.getContent(DiagramContent.class);
+ DiagramShape shape = content.getPages().get_Item(0).getShapes().get_Item(0);
+ for (int i = shape.getHyperlinks().getCount() - 1; i >= 0; i--)
+ {
+ if (shape.getHyperlinks().get_Item(i).getAddress().contains("http://someurl.com"))
+ {
+ shape.getHyperlinks().removeAt(i);
+ }
+ }
+
+ watermarker.save(Constants.OutDiagramVsdx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramRemoveOrReplaceHeaderFooter.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramRemoveOrReplaceHeaderFooter.java
new file mode 100644
index 0000000..43864d7
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramRemoveOrReplaceHeaderFooter.java
@@ -0,0 +1,33 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_diagrams;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.DiagramContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.DiagramLoadOptions;
+import com.groupdocs.watermark.watermarks.Color;
+
+public class DiagramRemoveOrReplaceHeaderFooter {
+ /**
+ * This example shows how to remove and replace a particular header and footer in a Diagram document.
+ */
+ public static void run() {
+ DiagramLoadOptions loadOptions = new DiagramLoadOptions();
+ // Constants.InDiagramVsdx is an absolute or relative path to your document. Ex: "C:\\Docs\\diagram.vsdx"
+ Watermarker watermarker = new Watermarker(Constants.InDiagramVsdx, loadOptions);
+
+ DiagramContent content = watermarker.getContent(DiagramContent.class);
+
+ // Remove header
+ content.getHeaderFooter().setHeaderCenter(null);
+
+ // Replace footer
+ content.getHeaderFooter().setFooterCenter("Footer center");
+ content.getHeaderFooter().getFont().setSize(19);
+ content.getHeaderFooter().getFont().setFamilyName("Calibri");
+ content.getHeaderFooter().setTextColor(Color.getRed());
+
+ watermarker.save(Constants.OutDiagramVsdx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramRemoveShape.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramRemoveShape.java
new file mode 100644
index 0000000..b1751e6
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramRemoveShape.java
@@ -0,0 +1,29 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_diagrams;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.DiagramContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.DiagramLoadOptions;
+
+public class DiagramRemoveShape {
+ /**
+ * This example shows how to remove a particular shape from a page.
+ */
+ public static void run() {
+ DiagramLoadOptions loadOptions = new DiagramLoadOptions();
+ // Constants.InDiagramVsdx is an absolute or relative path to your document. Ex: @"C:\Docs\diagram.vsdx"
+ Watermarker watermarker = new Watermarker(Constants.InDiagramVsdx, loadOptions);
+
+ DiagramContent content = watermarker.getContent(DiagramContent.class);
+
+ // Remove shape by index
+ content.getPages().get_Item(0).getShapes().removeAt(0);
+
+ // Remove shape by reference
+ content.getPages().get_Item(0).getShapes().remove(content.getPages().get_Item(0).getShapes().get_Item(0));
+
+ watermarker.save(Constants.OutDiagramVsdx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramRemoveTextShapesWithParticularTextFormatting.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramRemoveTextShapesWithParticularTextFormatting.java
new file mode 100644
index 0000000..521091a
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramRemoveTextShapesWithParticularTextFormatting.java
@@ -0,0 +1,40 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_diagrams;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.DiagramContent;
+import com.groupdocs.watermark.contents.DiagramPage;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.DiagramLoadOptions;
+import com.groupdocs.watermark.search.FormattedTextFragment;
+import com.groupdocs.watermark.watermarks.Color;
+
+public class DiagramRemoveTextShapesWithParticularTextFormatting {
+ /**
+ * This example shows how to find and remove the shapes with a particular text formatting.
+ */
+ public static void run() {
+ DiagramLoadOptions loadOptions = new DiagramLoadOptions();
+ // Constants.InDiagramVsdx is an absolute or relative path to your document. Ex: "C:\\Docs\\diagram.vsdx"
+ Watermarker watermarker = new Watermarker(Constants.InDiagramVsdx, loadOptions);
+
+ DiagramContent content = watermarker.getContent(DiagramContent.class);
+ for (DiagramPage page : content.getPages())
+ {
+ for (int i = page.getShapes().getCount() - 1; i >= 0; i--)
+ {
+ for (FormattedTextFragment fragment : page.getShapes().get_Item(i).getFormattedTextFragments())
+ {
+ if (fragment.getForegroundColor().equals(Color.getRed()) && fragment.getFont().getFamilyName() == "Arial")
+ {
+ page.getShapes().removeAt(i);
+ break;
+ }
+ }
+ }
+ }
+
+ watermarker.save(Constants.OutDiagramVsdx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramRemoveWatermark.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramRemoveWatermark.java
new file mode 100644
index 0000000..69b17b9
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramRemoveWatermark.java
@@ -0,0 +1,37 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_diagrams;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.DiagramContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.DiagramLoadOptions;
+import com.groupdocs.watermark.search.ImageDctHashSearchCriteria;
+import com.groupdocs.watermark.search.ImageSearchCriteria;
+import com.groupdocs.watermark.search.PossibleWatermarkCollection;
+import com.groupdocs.watermark.search.TextSearchCriteria;
+
+public class DiagramRemoveWatermark {
+ /**
+ * This example shows how to remove watermark from a particular page.
+ */
+ public static void run() {
+ DiagramLoadOptions loadOptions = new DiagramLoadOptions();
+ // Constants.InDiagramVsdx is an absolute or relative path to your document. Ex: "C:\\Docs\\diagram.vsdx"
+ Watermarker watermarker = new Watermarker(Constants.InDiagramVsdx, loadOptions);
+
+ DiagramContent content = watermarker.getContent(DiagramContent.class);
+
+ // Initialize search criteria
+ ImageSearchCriteria imageSearchCriteria = new ImageDctHashSearchCriteria(Constants.LogoPng);
+ TextSearchCriteria textSearchCriteria = new TextSearchCriteria("Company Name");
+
+ // Call FindWatermarks method for the first page
+ PossibleWatermarkCollection possibleWatermarks = content.getPages().get_Item(0).search(textSearchCriteria.or(imageSearchCriteria));
+
+ // Remove all found watermarks
+ possibleWatermarks.clear();
+
+ watermarker.save(Constants.OutDiagramVsdx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramReplaceShapeImage.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramReplaceShapeImage.java
new file mode 100644
index 0000000..3ec28fe
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramReplaceShapeImage.java
@@ -0,0 +1,43 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_diagrams;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.DiagramContent;
+import com.groupdocs.watermark.contents.DiagramShape;
+import com.groupdocs.watermark.contents.DiagramWatermarkableImage;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.DiagramLoadOptions;
+
+public class DiagramReplaceShapeImage {
+ /**
+ * This example shows how to replace the image of particular shapes.
+ */
+ public static void run() throws Exception {
+ DiagramLoadOptions loadOptions = new DiagramLoadOptions();
+ // Constants.InDiagramVsdx is an absolute or relative path to your document. Ex: "C:\\Docs\\diagram.vsdx"
+ Watermarker watermarker = new Watermarker(Constants.InDiagramVsdx, loadOptions);
+
+ DiagramContent content = watermarker.getContent(DiagramContent.class);
+ for (DiagramShape shape : content.getPages().get_Item(0).getShapes())
+ {
+ if (shape.getImage() != null)
+ {
+ File imageFile = new File(Constants.TestPng);
+ byte[] imageBytes = new byte[(int) imageFile.length()];
+ InputStream imageInputStream = new FileInputStream(imageFile);
+ imageInputStream.read(imageBytes);
+ imageInputStream.close();
+
+ shape.setImage(new DiagramWatermarkableImage(imageBytes));
+ }
+ }
+
+ // Save changes
+ watermarker.save(Constants.OutDiagramVsdx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramReplaceTextForParticularShapes.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramReplaceTextForParticularShapes.java
new file mode 100644
index 0000000..a22e924
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramReplaceTextForParticularShapes.java
@@ -0,0 +1,32 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_diagrams;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.DiagramContent;
+import com.groupdocs.watermark.contents.DiagramShape;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.DiagramLoadOptions;
+
+public class DiagramReplaceTextForParticularShapes {
+ /**
+ * This example shows how to replace shapes' text.
+ */
+ public static void run() {
+ DiagramLoadOptions loadOptions = new DiagramLoadOptions();
+ // Constants.InDiagramVsdx is an absolute or relative path to your document. Ex: @"C:\Docs\diagram.vsdx"
+ Watermarker watermarker = new Watermarker(Constants.InDiagramVsdx, loadOptions);
+
+ DiagramContent content = watermarker.getContent(DiagramContent.class);
+ for (DiagramShape shape : content.getPages().get_Item(0).getShapes())
+ {
+ if (shape.getText() != null && shape.getText().contains(" Aspose 2016"))
+ {
+ shape.setText(" GroupDocs 2017");
+ }
+ }
+
+ // Save changes
+ watermarker.save(Constants.OutDiagramVsdx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramReplaceTextWithFormatting.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramReplaceTextWithFormatting.java
new file mode 100644
index 0000000..644866b
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_diagrams/DiagramReplaceTextWithFormatting.java
@@ -0,0 +1,36 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_diagrams;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.DiagramContent;
+import com.groupdocs.watermark.contents.DiagramShape;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.DiagramLoadOptions;
+import com.groupdocs.watermark.watermarks.Color;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.FontStyle;
+
+public class DiagramReplaceTextWithFormatting {
+ /**
+ * This example shows how to replace the text with a formatted text.
+ */
+ public static void run() {
+ DiagramLoadOptions loadOptions = new DiagramLoadOptions();
+ // Constants.InDiagramVsdx is an absolute or relative path to your document. Ex: "C:\\Docs\\diagram.vsdx"
+ Watermarker watermarker = new Watermarker(Constants.InDiagramVsdx, loadOptions);
+
+ DiagramContent content = watermarker.getContent(DiagramContent.class);
+ for (DiagramShape shape : content.getPages().get_Item(0).getShapes())
+ {
+ if (shape.getText() != null && shape.getText().contains(" Aspose 2016"))
+ {
+ shape.getFormattedTextFragments().clear();
+ shape.getFormattedTextFragments().add(" GroupDocs 2017", new Font("Calibri", 19, FontStyle.Bold), Color.getRed(), Color.getAqua());
+ }
+ }
+
+ // Save changes
+ watermarker.save(Constants.OutDiagramVsdx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailAddAttachment.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailAddAttachment.java
new file mode 100644
index 0000000..55abc68
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailAddAttachment.java
@@ -0,0 +1,36 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_email_attachments;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.EmailContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.EmailLoadOptions;
+
+public class EmailAddAttachment {
+ /**
+ * This example shows how to add attachments to the email messages.
+ */
+ public static void run() throws Exception {
+ EmailLoadOptions loadOptions = new EmailLoadOptions();
+ // Constants.InMessageMsg is an absolute or relative path to your document. Ex: "C:\\Docs\\message.msg"
+ Watermarker watermarker = new Watermarker(Constants.InMessageMsg, loadOptions);
+
+ EmailContent content = watermarker.getContent(EmailContent.class);
+
+ File attachmentFile = new File(Constants.InSampleMsg);
+ byte[] attachmentBytes = new byte[(int) attachmentFile.length()];
+ InputStream attachmentInputStream = new FileInputStream(attachmentFile);
+ attachmentInputStream.read(attachmentBytes);
+ attachmentInputStream.close();
+
+ content.getAttachments().add(attachmentBytes, "sample.msg");
+
+ // Save changes
+ watermarker.save(Constants.OutMessageMsg);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailAddEmbeddedImage.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailAddEmbeddedImage.java
new file mode 100644
index 0000000..9e4be39
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailAddEmbeddedImage.java
@@ -0,0 +1,37 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_email_attachments;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.EmailContent;
+import com.groupdocs.watermark.contents.EmailEmbeddedObject;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.EmailLoadOptions;
+
+public class EmailAddEmbeddedImage {
+ /**
+ * This example shows how to embed images in the body of the email message.
+ */
+ public static void run() throws Exception {
+ EmailLoadOptions loadOptions = new EmailLoadOptions();
+ // Constants.InMessageMsg is an absolute or relative path to your document. Ex: "C:\\Docs\\message.msg"
+ Watermarker watermarker = new Watermarker(Constants.InMessageMsg, loadOptions);
+
+ EmailContent content = watermarker.getContent(EmailContent.class);
+
+ File imageFile = new File(Constants.SampleJpg);
+ byte[] imageBytes = new byte[(int) imageFile.length()];
+ InputStream imageInputStream = new FileInputStream(imageFile);
+ imageInputStream.read(imageBytes);
+ imageInputStream.close();
+
+ content.getEmbeddedObjects().add(imageBytes, "sample.jpg");
+ EmailEmbeddedObject embeddedObject = content.getEmbeddedObjects().get_Item(content.getEmbeddedObjects().getCount() - 1);
+ content.setHtmlBody("This is an embedded image:
");
+ watermarker.save(Constants.OutMessageMsg);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailAddWatermarkToAllAttachments.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailAddWatermarkToAllAttachments.java
new file mode 100644
index 0000000..34cef2b
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailAddWatermarkToAllAttachments.java
@@ -0,0 +1,48 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_email_attachments;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.FileType;
+import com.groupdocs.watermark.common.IDocumentInfo;
+import com.groupdocs.watermark.contents.EmailAttachment;
+import com.groupdocs.watermark.contents.EmailContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.EmailLoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class EmailAddWatermarkToAllAttachments {
+ /**
+ * This example shows how to add watermark to all the attachments of supported types in an email message.
+ */
+ public static void run() {
+ TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 19));
+ EmailLoadOptions loadOptions = new EmailLoadOptions();
+ // Constants.InMessageMsg is an absolute or relative path to your document. Ex: "C:\\Docs\\message.msg"
+ Watermarker watermarker = new Watermarker(Constants.InMessageMsg, loadOptions);
+
+ EmailContent content = watermarker.getContent(EmailContent.class);
+ for (EmailAttachment attachment : content.getAttachments())
+ {
+ // Check if the attached file is supported by GroupDocs.Watermark
+ IDocumentInfo info = attachment.getDocumentInfo();
+ if (info.getFileType() != FileType.Unknown && !info.isEncrypted())
+ {
+ // Load the attached document
+ Watermarker attachedWatermarker = attachment.createWatermarker();
+
+ // Add watermark
+ attachedWatermarker.add(watermark);
+
+ // Save changes in the attached file
+ attachment.updateContent(attachedWatermarker);
+
+ attachedWatermarker.close();
+ }
+ }
+
+ // Save changes
+ watermarker.save(Constants.OutMessageMsg);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailExtractAllAttachments.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailExtractAllAttachments.java
new file mode 100644
index 0000000..0923611
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailExtractAllAttachments.java
@@ -0,0 +1,33 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_email_attachments;
+
+import java.io.FileOutputStream;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.EmailAttachment;
+import com.groupdocs.watermark.contents.EmailContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.EmailLoadOptions;
+
+public class EmailExtractAllAttachments {
+ /**
+ * This example shows how to get the information about the attachments in an email message.
+ */
+ public static void run() throws Exception {
+ EmailLoadOptions loadOptions = new EmailLoadOptions();
+ // Constants.InMessageMsg is an absolute or relative path to your document. Ex: "C:\\Docs\\message.msg"
+ Watermarker watermarker = new Watermarker(Constants.InMessageMsg, loadOptions);
+
+ EmailContent content = watermarker.getContent(EmailContent.class);
+ for (EmailAttachment attachment : content.getAttachments())
+ {
+ System.out.println("Name: " + attachment.getName());
+ System.out.println("File format: " + attachment.getDocumentInfo().getFileType());
+
+ FileOutputStream outputStream = new FileOutputStream(Constants.OutputPath + "\\" + attachment.getName());
+ outputStream.write(attachment.getContent());
+ outputStream.close();
+ }
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailListRecipients.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailListRecipients.java
new file mode 100644
index 0000000..4268c34
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailListRecipients.java
@@ -0,0 +1,40 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_email_attachments;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.EmailAddress;
+import com.groupdocs.watermark.contents.EmailContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.EmailLoadOptions;
+
+public class EmailListRecipients {
+ /**
+ * This example shows how to list all the message recipients.
+ */
+ public static void run() {
+ EmailLoadOptions loadOptions = new EmailLoadOptions();
+ // Constants.InMessageMsg is an absolute or relative path to your document. Ex: "C:\\Docs\\message.msg"
+ Watermarker watermarker = new Watermarker(Constants.InMessageMsg, loadOptions);
+
+ EmailContent content = watermarker.getContent(EmailContent.class);
+
+ // List all direct recipients
+ for (EmailAddress address : content.getTo())
+ {
+ System.out.println(address.getAddress());
+ }
+
+ // List all CC recipients
+ for (EmailAddress address : content.getCc())
+ {
+ System.out.println(address.getAddress());
+ }
+
+ // List all BCC recipients
+ for (EmailAddress address : content.getBcc())
+ {
+ System.out.println(address.getAddress());
+ }
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailRemoveAttachment.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailRemoveAttachment.java
new file mode 100644
index 0000000..3737cab
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailRemoveAttachment.java
@@ -0,0 +1,36 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_email_attachments;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.FileType;
+import com.groupdocs.watermark.contents.EmailAttachment;
+import com.groupdocs.watermark.contents.EmailContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.EmailLoadOptions;
+
+public class EmailRemoveAttachment {
+ /**
+ * This example shows how to remove any particular attachment from an email message.
+ */
+ public static void run() {
+ EmailLoadOptions loadOptions = new EmailLoadOptions();
+ // Constants.InMessageMsg is an absolute or relative path to your document. Ex: "C:\\Docs\\message.msg"
+ Watermarker watermarker = new Watermarker(Constants.InMessageMsg, loadOptions);
+
+ EmailContent content = watermarker.getContent(EmailContent.class);
+ for (int i = content.getAttachments().getCount() - 1; i >= 0; i--)
+ {
+ EmailAttachment attachment = content.getAttachments().get_Item(i);
+
+ // Remove all attached files with a particular name and format
+ if (attachment.getName().contains("sample") && attachment.getDocumentInfo().getFileType() == FileType.DOCX)
+ {
+ content.getAttachments().removeAt(i);
+ }
+ }
+
+ // Save changes
+ watermarker.save(Constants.OutMessageMsg);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailRemoveEmbeddedImages.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailRemoveEmbeddedImages.java
new file mode 100644
index 0000000..ad6ea81
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailRemoveEmbeddedImages.java
@@ -0,0 +1,36 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_email_attachments;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.FileType;
+import com.groupdocs.watermark.contents.EmailContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.EmailLoadOptions;
+
+public class EmailRemoveEmbeddedImages {
+ /**
+ * This example shows how to remove the embedded images from the body of the email message.
+ */
+ public static void run() {
+ EmailLoadOptions loadOptions = new EmailLoadOptions();
+ // Constants.InMessageMsg is an absolute or relative path to your document. Ex: "C:\\Docs\\message.msg"
+ Watermarker watermarker = new Watermarker(Constants.InMessageMsg, loadOptions);
+
+ EmailContent content = watermarker.getContent(EmailContent.class);
+ for (int i = content.getEmbeddedObjects().getCount() - 1; i >= 0; i--)
+ {
+ if (content.getEmbeddedObjects().get_Item(i).getDocumentInfo().getFileType() == FileType.JPEG)
+ {
+ // Remove reference to the image from html body
+ String pattern = "
]*src=\"cid:" + content.getEmbeddedObjects().get_Item(i).getContentId() + "\"[^>]*>";
+ content.setHtmlBody(content.getHtmlBody().replaceAll(pattern, ""));
+
+ // Remove the image
+ content.getEmbeddedObjects().removeAt(i);
+ }
+ }
+
+ watermarker.save(Constants.OutMessageMsg);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailSearchTextInBody.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailSearchTextInBody.java
new file mode 100644
index 0000000..16fd097
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailSearchTextInBody.java
@@ -0,0 +1,36 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_email_attachments;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.EmailLoadOptions;
+import com.groupdocs.watermark.search.EmailSearchableObjects;
+import com.groupdocs.watermark.search.PossibleWatermarkCollection;
+import com.groupdocs.watermark.search.SearchCriteria;
+import com.groupdocs.watermark.search.TextSearchCriteria;
+
+public class EmailSearchTextInBody {
+ /**
+ * This example shows how to search for a text in the subject as well as in the body of the email message.
+ */
+ public static void run() {
+ EmailLoadOptions loadOptions = new EmailLoadOptions();
+ // Constants.InMessageMsg is an absolute or relative path to your document. Ex: "C:\\Docs\\message.msg"
+ Watermarker watermarker = new Watermarker(Constants.InMessageMsg, loadOptions);
+
+ SearchCriteria criteria = new TextSearchCriteria("test", false);
+
+ // Specify search locations
+ watermarker.getSearchableObjects().setEmailSearchableObjects(EmailSearchableObjects.Subject | EmailSearchableObjects.HtmlBody | EmailSearchableObjects.PlainTextBody);
+
+ // Note, search is performed only if you pass TextSearchCriteria instance to FindWatermarks method
+ PossibleWatermarkCollection watermarks = watermarker.search(criteria);
+
+ // Remove found text fragments
+ watermarks.clear();
+
+ // Save changes
+ watermarker.save(Constants.OutMessageMsg);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailUpdateBody.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailUpdateBody.java
new file mode 100644
index 0000000..128d983
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_email_attachments/EmailUpdateBody.java
@@ -0,0 +1,33 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_email_attachments;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.EmailContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.EmailLoadOptions;
+
+public class EmailUpdateBody {
+ /**
+ * This example shows how to modify the body and subject of an email message.
+ */
+ public static void run() {
+ EmailLoadOptions loadOptions = new EmailLoadOptions();
+ // Constants.InMessageMsg is an absolute or relative path to your document. Ex: "C:\\Docs\\message.msg"
+ Watermarker watermarker = new Watermarker(Constants.InMessageMsg, loadOptions);
+
+ EmailContent content = watermarker.getContent(EmailContent.class);
+
+ // Set the plain text body
+ content.setBody("Test plain text body");
+
+ // Set the html body
+ content.setHtmlBody("Test html body");
+
+ // Set the email subject
+ content.setSubject("Test subject");
+
+ // Save changes
+ watermarker.save(Constants.OutMessageMsg);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_images/AddWatermarkToImage.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_images/AddWatermarkToImage.java
new file mode 100644
index 0000000..86ce198
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_images/AddWatermarkToImage.java
@@ -0,0 +1,31 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_images;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.TiffImageLoadOptions;
+import com.groupdocs.watermark.options.TiffImageWatermarkOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class AddWatermarkToImage {
+ /**
+ * This example shows how to add watermark to some particular frame(s).
+ */
+ public static void run() {
+ // Constants.InImageTiff is an absolute or relative path to your document. Ex: "C:\\Docs\\image.tiff"
+ TiffImageLoadOptions loadOptions = new TiffImageLoadOptions();
+ Watermarker watermarker = new Watermarker(Constants.InImageTiff, loadOptions);
+
+ // Initialize text or image watermark
+ TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 19));
+
+ // Add watermark to the first frame
+ TiffImageWatermarkOptions options = new TiffImageWatermarkOptions();
+ options.setFrameIndex(0);
+
+ watermarker.add(watermark, options);
+ watermarker.save(Constants.OutImageTiff);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_images/AddWatermarkToImagesInsideDocument.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_images/AddWatermarkToImagesInsideDocument.java
new file mode 100644
index 0000000..af89dfa
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_images/AddWatermarkToImagesInsideDocument.java
@@ -0,0 +1,62 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_images;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.contents.WatermarkableImageCollection;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.ImageWatermark;
+import com.groupdocs.watermark.watermarks.SizingType;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class AddWatermarkToImagesInsideDocument {
+ /**
+ * This example shows how to add watermark to images inside a document.
+ */
+ public static void run() {
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf);
+
+ // Initialize text watermark
+ TextWatermark textWatermark = new TextWatermark("Protected image", new Font("Arial", 8));
+ textWatermark.setHorizontalAlignment(HorizontalAlignment.Center);
+ textWatermark.setVerticalAlignment(VerticalAlignment.Center);
+ textWatermark.setRotateAngle(45);
+ textWatermark.setSizingType(SizingType.ScaleToParentDimensions);
+ textWatermark.setScaleFactor(1);
+
+ // Initialize image watermark
+ ImageWatermark imageWatermark = new ImageWatermark(Constants.ProtectJpg);
+
+ imageWatermark.setHorizontalAlignment(HorizontalAlignment.Center);
+ imageWatermark.setVerticalAlignment(VerticalAlignment.Center);
+ imageWatermark.setRotateAngle(-45);
+ imageWatermark.setSizingType(SizingType.ScaleToParentDimensions);
+ imageWatermark.setScaleFactor(1);
+
+ // Find all images in a document
+ WatermarkableImageCollection images = watermarker.getImages();
+
+ for (int i = 0; i < images.getCount(); i++)
+ {
+ if (images.get_Item(i).getWidth() > 100 && images.get_Item(i).getHeight() > 100)
+ {
+ if (i % 2 == 0)
+ {
+ images.get_Item(i).add(textWatermark);
+ }
+ else
+ {
+ images.get_Item(i).add(imageWatermark);
+ }
+ }
+ }
+
+ imageWatermark.close();
+
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddAnnotationWatermark.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddAnnotationWatermark.java
new file mode 100644
index 0000000..690c707
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddAnnotationWatermark.java
@@ -0,0 +1,42 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfAnnotationWatermarkOptions;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.ImageWatermark;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class PdfAddAnnotationWatermark {
+ /**
+ * This example shows how to add watermark annotation to a PDF document.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfAnnotationWatermarkOptions options = new PdfAnnotationWatermarkOptions();
+
+ // Add text watermark
+ TextWatermark textWatermark = new TextWatermark("This is a annotation watermark", new Font("Arial", 8));
+ textWatermark.setHorizontalAlignment(HorizontalAlignment.Left);
+ textWatermark.setVerticalAlignment(VerticalAlignment.Top);
+ watermarker.add(textWatermark, options);
+
+ // Add image watermark
+ ImageWatermark imageWatermark = new ImageWatermark(Constants.ProtectJpg);
+
+ imageWatermark.setHorizontalAlignment(HorizontalAlignment.Right);
+ imageWatermark.setVerticalAlignment(VerticalAlignment.Top);
+ watermarker.add(imageWatermark, options);
+
+ watermarker.save(Constants.OutDocumentPdf);
+
+ imageWatermark.close();
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddArtifactWatermark.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddArtifactWatermark.java
new file mode 100644
index 0000000..e6eb1ce
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddArtifactWatermark.java
@@ -0,0 +1,39 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfArtifactWatermarkOptions;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.ImageWatermark;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class PdfAddArtifactWatermark {
+ /**
+ * This example shows how to add an artifact watermark to a document.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfArtifactWatermarkOptions options = new PdfArtifactWatermarkOptions();
+
+ // Add text watermark
+ TextWatermark textWatermark = new TextWatermark("This is an artifact watermark", new Font("Arial", 8));
+ textWatermark.setHorizontalAlignment(HorizontalAlignment.Right);
+ watermarker.add(textWatermark, options);
+
+ // Add image watermark
+ ImageWatermark imageWatermark = new ImageWatermark(Constants.LogoBmp);
+
+ watermarker.add(imageWatermark, options);
+
+ imageWatermark.close();
+
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddAttachment.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddAttachment.java
new file mode 100644
index 0000000..48c4117
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddAttachment.java
@@ -0,0 +1,37 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+
+public class PdfAddAttachment {
+ /**
+ * This example shows how to add attachments to the PDF document.
+ */
+ public static void run() throws Exception {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+
+ File file = new File(Constants.InSampleDocx);
+ byte[] attachmentBytes = new byte[(int) file.length()];
+ InputStream inputStream = new FileInputStream(file);
+ inputStream.read(attachmentBytes);
+ inputStream.close();
+
+ // Add the attachment
+ pdfContent.getAttachments().add(attachmentBytes, "sample doc", "sample doc as attachment");
+
+ // Save changes
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddPrintOnlyAnnotationWatermark.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddPrintOnlyAnnotationWatermark.java
new file mode 100644
index 0000000..9894604
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddPrintOnlyAnnotationWatermark.java
@@ -0,0 +1,32 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfAnnotationWatermarkOptions;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class PdfAddPrintOnlyAnnotationWatermark {
+ /**
+ * This example shows how to add print only annotation watermark to the document.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ TextWatermark textWatermark = new TextWatermark("This is a print only test watermark. It won't appear in view mode.", new Font("Arial", 8));
+ Boolean isPrintOnly = true;
+
+ // Annotation will be printed, but not displayed in pdf viewing application
+ PdfAnnotationWatermarkOptions options = new PdfAnnotationWatermarkOptions();
+ options.setPageIndex(0);
+ options.setPrintOnly(isPrintOnly);
+ watermarker.add(textWatermark, options);
+
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddWatermarkToAllAttachments.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddWatermarkToAllAttachments.java
new file mode 100644
index 0000000..b46c94d
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddWatermarkToAllAttachments.java
@@ -0,0 +1,47 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.FileType;
+import com.groupdocs.watermark.common.IDocumentInfo;
+import com.groupdocs.watermark.contents.PdfAttachment;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class PdfAddWatermarkToAllAttachments {
+ /**
+ * This example shows how to add watermark to supported files in all attachments in a PDF document.
+ */
+ public static void run() {
+ TextWatermark watermark = new TextWatermark("This is WaterMark on Attachment", new Font("Arial", 19));
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+ for (PdfAttachment attachment : pdfContent.getAttachments())
+ {
+ // Check if the attached file is supported by GroupDocs.Watermark
+ IDocumentInfo info = attachment.getDocumentInfo();
+ if (info.getFileType() != FileType.Unknown && !info.isEncrypted())
+ {
+ // Load the attached document
+ Watermarker attachedWatermarker = attachment.createWatermarker();
+
+ // Add watermark
+ attachedWatermarker.add(watermark);
+
+ // Save changes in the attached file
+ attachment.updateContent(attachedWatermarker);
+
+ attachedWatermarker.close();
+ }
+ }
+
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddWatermarkToAnnotationImages.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddWatermarkToAnnotationImages.java
new file mode 100644
index 0000000..8dac920
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddWatermarkToAnnotationImages.java
@@ -0,0 +1,50 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.contents.PdfAnnotation;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.contents.PdfPage;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.SizingType;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class PdfAddWatermarkToAnnotationImages {
+ /**
+ * This example shows how to add a watermark to image annotations in PDF documents.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+
+ // Initialize image or text watermark
+ TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
+ watermark.setHorizontalAlignment(HorizontalAlignment.Center);
+ watermark.setVerticalAlignment(VerticalAlignment.Center);
+ watermark.setRotateAngle(45);
+ watermark.setSizingType(SizingType.ScaleToParentDimensions);
+ watermark.setScaleFactor(1);
+
+ for (PdfPage page : pdfContent.getPages())
+ {
+ for (PdfAnnotation annotation : page.getAnnotations())
+ {
+ if (annotation.getImage() != null)
+ {
+ // Add watermark to the image
+ annotation.getImage().add(watermark);
+ }
+ }
+ }
+
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddWatermarkToImageArtifacts.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddWatermarkToImageArtifacts.java
new file mode 100644
index 0000000..bca1310
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddWatermarkToImageArtifacts.java
@@ -0,0 +1,50 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.contents.PdfArtifact;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.contents.PdfPage;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.SizingType;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class PdfAddWatermarkToImageArtifacts {
+ /**
+ * This example shows how to add watermark to all image artifacts.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+
+ // Initialize image or text watermark
+ TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
+ watermark.setHorizontalAlignment(HorizontalAlignment.Center);
+ watermark.setVerticalAlignment(VerticalAlignment.Center);
+ watermark.setRotateAngle(45);
+ watermark.setSizingType(SizingType.ScaleToParentDimensions);
+ watermark.setScaleFactor(1);
+
+ for (PdfPage page : pdfContent.getPages())
+ {
+ for (PdfArtifact artifact : page.getArtifacts())
+ {
+ if (artifact.getImage() != null)
+ {
+ // Add watermark to the image
+ artifact.getImage().add(watermark);
+ }
+ }
+ }
+
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddWatermarkToImages.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddWatermarkToImages.java
new file mode 100644
index 0000000..4890956
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddWatermarkToImages.java
@@ -0,0 +1,47 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.contents.WatermarkableImage;
+import com.groupdocs.watermark.contents.WatermarkableImageCollection;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.SizingType;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class PdfAddWatermarkToImages {
+ /**
+ * This example shows how to add watermark to the images inside a particular page of the PDF document.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ // Initialize image or text watermark
+ TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
+ watermark.setHorizontalAlignment(HorizontalAlignment.Center);
+ watermark.setVerticalAlignment(VerticalAlignment.Center);
+ watermark.setRotateAngle(45);
+ watermark.setSizingType(SizingType.ScaleToParentDimensions);
+ watermark.setScaleFactor(1);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+
+ // Get all images from the first page
+ WatermarkableImageCollection images = pdfContent.getPages().get_Item(0).findImages();
+
+ // Add watermark to all found images
+ for (WatermarkableImage image : images)
+ {
+ image.add(watermark);
+ }
+
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddWatermarkToXObjects.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddWatermarkToXObjects.java
new file mode 100644
index 0000000..2341501
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddWatermarkToXObjects.java
@@ -0,0 +1,50 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.contents.PdfPage;
+import com.groupdocs.watermark.contents.PdfXObject;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.SizingType;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class PdfAddWatermarkToXObjects {
+ /**
+ * This example shows how to add watermark to all image XObjects in a PDF document.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+
+ // Initialize image or text watermark
+ TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
+ watermark.setHorizontalAlignment(HorizontalAlignment.Center);
+ watermark.setVerticalAlignment(VerticalAlignment.Center);
+ watermark.setRotateAngle(45);
+ watermark.setSizingType(SizingType.ScaleToParentDimensions);
+ watermark.setScaleFactor(1);
+
+ for (PdfPage page : pdfContent.getPages())
+ {
+ for (PdfXObject xObject : page.getXObjects())
+ {
+ if (xObject.getImage() != null)
+ {
+ // Add watermark to the image
+ xObject.getImage().add(watermark);
+ }
+ }
+ }
+
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddWatermarkWithPageMarginType.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddWatermarkWithPageMarginType.java
new file mode 100644
index 0000000..bf188be
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddWatermarkWithPageMarginType.java
@@ -0,0 +1,38 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.contents.PdfPageMarginType;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.SizingType;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class PdfAddWatermarkWithPageMarginType {
+ /**
+ * This example shows how to get watermark aligned to bleed box.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 42));
+ watermark.setHorizontalAlignment(HorizontalAlignment.Right);
+ watermark.setVerticalAlignment(VerticalAlignment.Top);
+ watermark.setSizingType(SizingType.ScaleToParentDimensions);
+ watermark.setScaleFactor(1);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+ pdfContent.setPageMarginType(PdfPageMarginType.BleedBox);
+ watermark.setConsiderParentMargins(true);
+
+ watermarker.add(watermark);
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddWatermarks.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddWatermarks.java
new file mode 100644
index 0000000..4834d72
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfAddWatermarks.java
@@ -0,0 +1,40 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfArtifactWatermarkOptions;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.ImageWatermark;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class PdfAddWatermarks {
+ /**
+ * This example shows how to add watermark to a particular page of a PDF document.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ // Add text watermark to the first page
+ TextWatermark textWatermark = new TextWatermark("This is a test watermark", new Font("Arial", 8));
+ PdfArtifactWatermarkOptions textWatermarkOptions = new PdfArtifactWatermarkOptions();
+ textWatermarkOptions.setPageIndex(0);
+
+ watermarker.add(textWatermark, textWatermarkOptions);
+
+ // Add image watermark to the second page
+ ImageWatermark imageWatermark = new ImageWatermark(Constants.ProtectJpg);
+
+ PdfArtifactWatermarkOptions imageWatermarkOptions = new PdfArtifactWatermarkOptions();
+ imageWatermarkOptions.setPageIndex(1);
+ watermarker.add(imageWatermark, imageWatermarkOptions);
+
+ imageWatermark.close();
+
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfExtractAllAttachments.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfExtractAllAttachments.java
new file mode 100644
index 0000000..f00536c
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfExtractAllAttachments.java
@@ -0,0 +1,35 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import java.io.FileOutputStream;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PdfAttachment;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+
+public class PdfExtractAllAttachments {
+ /**
+ * This example shows how to extract attachments in PDF document.
+ */
+ public static void run() throws Exception {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+ for (PdfAttachment attachment : pdfContent.getAttachments())
+ {
+ System.out.println("Name: " + attachment.getName());
+ System.out.println("Description: " + attachment.getDescription());
+ System.out.println("File type: " + attachment.getDocumentInfo().getFileType());
+
+ // Save the attached file on disk
+ FileOutputStream outputStream = new FileOutputStream(Constants.OutputPath + "\\" + attachment.getName());
+ outputStream.write(attachment.getContent());
+ outputStream.close();
+ }
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfExtractAnnotationInformation.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfExtractAnnotationInformation.java
new file mode 100644
index 0000000..3f3554d
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfExtractAnnotationInformation.java
@@ -0,0 +1,43 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PdfAnnotation;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.contents.PdfPage;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+
+public class PdfExtractAnnotationInformation {
+ /**
+ * This example shows how to extract information about all the annotations in a PDF document.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+ for (PdfPage page : pdfContent.getPages())
+ {
+ for (PdfAnnotation annotation : page.getAnnotations())
+ {
+ System.out.println(annotation.getAnnotationType());
+ if (annotation.getImage() != null)
+ {
+ System.out.println(annotation.getImage().getWidth());
+ System.out.println(annotation.getImage().getHeight());
+ System.out.println(annotation.getImage().getBytes().length);
+ }
+
+ System.out.println(annotation.getText());
+ System.out.println(annotation.getX());
+ System.out.println(annotation.getY());
+ System.out.println(annotation.getWidth());
+ System.out.println(annotation.getHeight());
+ System.out.println(annotation.getRotateAngle());
+ }
+ }
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfExtractArtifactInformation.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfExtractArtifactInformation.java
new file mode 100644
index 0000000..656f7b8
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfExtractArtifactInformation.java
@@ -0,0 +1,45 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PdfArtifact;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.contents.PdfPage;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+
+public class PdfExtractArtifactInformation {
+ /**
+ * This example shows how to extract the information about the artifacts in a PDF document.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+ for (PdfPage page : pdfContent.getPages())
+ {
+ for (PdfArtifact artifact : page.getArtifacts())
+ {
+ System.out.println(artifact.getArtifactType());
+ System.out.println(artifact.getArtifactSubtype());
+ if (artifact.getImage() != null)
+ {
+ System.out.println(artifact.getImage().getWidth());
+ System.out.println(artifact.getImage().getHeight());
+ System.out.println(artifact.getImage().getBytes().length);
+ }
+
+ System.out.println(artifact.getText());
+ System.out.println(artifact.getOpacity());
+ System.out.println(artifact.getX());
+ System.out.println(artifact.getY());
+ System.out.println(artifact.getWidth());
+ System.out.println(artifact.getHeight());
+ System.out.println(artifact.getRotateAngle());
+ }
+ }
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfExtractXObjectInformation.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfExtractXObjectInformation.java
new file mode 100644
index 0000000..bd055b8
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfExtractXObjectInformation.java
@@ -0,0 +1,42 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.contents.PdfPage;
+import com.groupdocs.watermark.contents.PdfXObject;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+
+public class PdfExtractXObjectInformation {
+ /**
+ * This example shows how to extract information about all the XObjects in a PDF document.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+ for (PdfPage page : pdfContent.getPages())
+ {
+ for (PdfXObject xObject : page.getXObjects())
+ {
+ if (xObject.getImage() != null)
+ {
+ System.out.println(xObject.getImage().getWidth());
+ System.out.println(xObject.getImage().getHeight());
+ System.out.println(xObject.getImage().getBytes().length);
+ }
+
+ System.out.println(xObject.getText());
+ System.out.println(xObject.getX());
+ System.out.println(xObject.getY());
+ System.out.println(xObject.getWidth());
+ System.out.println(xObject.getHeight());
+ System.out.println(xObject.getRotateAngle());
+ }
+ }
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfGetDimensions.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfGetDimensions.java
new file mode 100644
index 0000000..99516c2
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfGetDimensions.java
@@ -0,0 +1,24 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+
+public class PdfGetDimensions {
+ /**
+ * This example shows how to get the dimensions of the page in a PDF document.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+
+ System.out.println(pdfContent.getPages().get_Item(0).getWidth());
+ System.out.println(pdfContent.getPages().get_Item(0).getHeight());
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRasterizeDocument.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRasterizeDocument.java
new file mode 100644
index 0000000..2b151db
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRasterizeDocument.java
@@ -0,0 +1,45 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.contents.PdfImageConversionFormat;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.SizingType;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class PdfRasterizeDocument {
+ /**
+ * This example shows how to rasterize the PDF document to protect added watermarks.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ // Initialize image or text watermark
+ TextWatermark watermark = new TextWatermark("Do not copy", new Font("Arial", 8));
+ watermark.setHorizontalAlignment(HorizontalAlignment.Center);
+ watermark.setVerticalAlignment(VerticalAlignment.Center);
+ watermark.setRotateAngle(45);
+ watermark.setSizingType(SizingType.ScaleToParentDimensions);
+ watermark.setScaleFactor(1);
+ watermark.setOpacity(0.5);
+
+ // Add watermark of any type first
+ watermarker.add(watermark);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+
+ // Rasterize all pages
+ pdfContent.rasterize(100, 100, PdfImageConversionFormat.Png);
+
+ // Content of all pages is replaced with raster images
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRasterizePage.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRasterizePage.java
new file mode 100644
index 0000000..7a85613
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRasterizePage.java
@@ -0,0 +1,47 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.contents.PdfImageConversionFormat;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfArtifactWatermarkOptions;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.SizingType;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class PdfRasterizePage {
+ /**
+ * This example shows how to rasterize any particular page of the PDF document.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ // Initialize image or text watermark
+ TextWatermark watermark = new TextWatermark("Do not copy", new Font("Arial", 8));
+ watermark.setHorizontalAlignment(HorizontalAlignment.Center);
+ watermark.setVerticalAlignment(VerticalAlignment.Center);
+ watermark.setRotateAngle(45);
+ watermark.setSizingType(SizingType.ScaleToParentDimensions);
+ watermark.setScaleFactor(1);
+ watermark.setOpacity(0.5);
+
+ // Add watermark of any type first
+ PdfArtifactWatermarkOptions options = new PdfArtifactWatermarkOptions();
+ options.setPageIndex(0);
+ watermarker.add(watermark, options);
+
+ // Rasterize the first page
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+ pdfContent.getPages().get_Item(0).rasterize(100, 100, PdfImageConversionFormat.Png);
+
+ // Content of the first page is replaced with raster image
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRemoveAnnotation.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRemoveAnnotation.java
new file mode 100644
index 0000000..1258507
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRemoveAnnotation.java
@@ -0,0 +1,29 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+
+public class PdfRemoveAnnotation {
+ /**
+ * This example shows how to remove a particular annotation from a PDF document.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+
+ // Remove Annotation by index
+ pdfContent.getPages().get_Item(0).getAnnotations().removeAt(0);
+
+ // Remove Annotation by reference
+ pdfContent.getPages().get_Item(0).getAnnotations().remove(pdfContent.getPages().get_Item(0).getAnnotations().get_Item(0));
+
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRemoveAnnotationsWithParticularTextFormatting.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRemoveAnnotationsWithParticularTextFormatting.java
new file mode 100644
index 0000000..67bcb86
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRemoveAnnotationsWithParticularTextFormatting.java
@@ -0,0 +1,39 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.contents.PdfPage;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+import com.groupdocs.watermark.search.FormattedTextFragment;
+
+public class PdfRemoveAnnotationsWithParticularTextFormatting {
+ /**
+ * This example shows how to find and remove all annotations containing text with a particular formatting from a PDF document.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+ for (PdfPage page : pdfContent.getPages())
+ {
+ for (int i = page.getAnnotations().getCount() - 1; i >= 0; i--)
+ {
+ for (FormattedTextFragment fragment : page.getAnnotations().get_Item(i).getFormattedTextFragments())
+ {
+ if (fragment.getFont().getFamilyName() == "Verdana")
+ {
+ page.getAnnotations().removeAt(i);
+ break;
+ }
+ }
+ }
+ }
+
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRemoveArtifact.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRemoveArtifact.java
new file mode 100644
index 0000000..5712867
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRemoveArtifact.java
@@ -0,0 +1,29 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+
+public class PdfRemoveArtifact {
+ /**
+ * This example shows how to remove an artifact from a particular page of the PDF document.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+
+ // Remove Artifact by index
+ pdfContent.getPages().get_Item(0).getArtifacts().removeAt(0);
+
+ // Remove Artifact by reference
+ pdfContent.getPages().get_Item(0).getArtifacts().remove(pdfContent.getPages().get_Item(0).getArtifacts().get_Item(0));
+
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRemoveArtifactsWithParticularTextFormatting.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRemoveArtifactsWithParticularTextFormatting.java
new file mode 100644
index 0000000..4a8f2d5
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRemoveArtifactsWithParticularTextFormatting.java
@@ -0,0 +1,39 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.contents.PdfPage;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+import com.groupdocs.watermark.search.FormattedTextFragment;
+
+public class PdfRemoveArtifactsWithParticularTextFormatting {
+ /**
+ * This example shows how to find and remove all artifacts containing text with a particular formatting from a PDF document.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+ for (PdfPage page : pdfContent.getPages())
+ {
+ for (int i = page.getArtifacts().getCount() - 1; i >= 0; i--)
+ {
+ for (FormattedTextFragment fragment : page.getArtifacts().get_Item(i).getFormattedTextFragments())
+ {
+ if (fragment.getFont().getSize() > 42)
+ {
+ page.getArtifacts().removeAt(i);
+ break;
+ }
+ }
+ }
+ }
+
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRemoveAttachment.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRemoveAttachment.java
new file mode 100644
index 0000000..64e2bd3
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRemoveAttachment.java
@@ -0,0 +1,35 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.FileType;
+import com.groupdocs.watermark.contents.PdfAttachment;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+
+public class PdfRemoveAttachment {
+ /**
+ * This example shows how to remove attachments from the PDF document.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+ for (int i = pdfContent.getAttachments().getCount() - 1; i >= 0; i--)
+ {
+ PdfAttachment attachment = pdfContent.getAttachments().get_Item(i);
+
+ // Remove all attached pdf files with a particular name
+ if (attachment.getName().contains("sample") && attachment.getDocumentInfo().getFileType() == FileType.DOCX)
+ {
+ pdfContent.getAttachments().removeAt(i);
+ }
+ }
+
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRemoveWatermark.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRemoveWatermark.java
new file mode 100644
index 0000000..ebf5989
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRemoveWatermark.java
@@ -0,0 +1,38 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+import com.groupdocs.watermark.search.ImageDctHashSearchCriteria;
+import com.groupdocs.watermark.search.ImageSearchCriteria;
+import com.groupdocs.watermark.search.PossibleWatermarkCollection;
+import com.groupdocs.watermark.search.TextSearchCriteria;
+
+public class PdfRemoveWatermark {
+ /**
+ * This example shows how to remove watermarks from a particular page.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ // Initialize search criteria
+ ImageSearchCriteria imageSearchCriteria = new ImageDctHashSearchCriteria(Constants.LogoPng);
+ TextSearchCriteria textSearchCriteria = new TextSearchCriteria("Company Name");
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+ PossibleWatermarkCollection possibleWatermarks = pdfContent.getPages().get_Item(0).search(imageSearchCriteria.or(textSearchCriteria));
+
+ // Remove all found watermarks
+ for (int i = possibleWatermarks.getCount() - 1; i >= 0; i--)
+ {
+ possibleWatermarks.removeAt(i);
+ }
+
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRemoveXObject.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRemoveXObject.java
new file mode 100644
index 0000000..4ecb258
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRemoveXObject.java
@@ -0,0 +1,29 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+
+public class PdfRemoveXObject {
+ /**
+ * This example shows how to remove an XObject from a particular page.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+
+ // Remove XObject by index
+ pdfContent.getPages().get_Item(0).getXObjects().removeAt(0);
+
+ // Remove XObject by reference
+ pdfContent.getPages().get_Item(0).getXObjects().remove(pdfContent.getPages().get_Item(0).getXObjects().get_Item(0));
+
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRemoveXObjectWithParticularTextFormatting.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRemoveXObjectWithParticularTextFormatting.java
new file mode 100644
index 0000000..2470e09
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfRemoveXObjectWithParticularTextFormatting.java
@@ -0,0 +1,40 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.contents.PdfPage;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+import com.groupdocs.watermark.search.FormattedTextFragment;
+import com.groupdocs.watermark.watermarks.Color;
+
+public class PdfRemoveXObjectWithParticularTextFormatting {
+ /**
+ * This example shows how to find and remove all XObjects containing text with a particular formatting from a PDF document.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+ for (PdfPage page : pdfContent.getPages())
+ {
+ for (int i = page.getXObjects().getCount() - 1; i >= 0; i--)
+ {
+ for (FormattedTextFragment fragment : page.getXObjects().get_Item(i).getFormattedTextFragments())
+ {
+ if (fragment.getForegroundColor().equals(Color.getRed()))
+ {
+ page.getXObjects().removeAt(i);
+ break;
+ }
+ }
+ }
+ }
+
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceImageForParticularAnnotation.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceImageForParticularAnnotation.java
new file mode 100644
index 0000000..1e34bf6
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceImageForParticularAnnotation.java
@@ -0,0 +1,45 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PdfAnnotation;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.contents.PdfWatermarkableImage;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+
+public class PdfReplaceImageForParticularAnnotation {
+ /**
+ * This example shows how to replace the image of a particular annotation.
+ */
+ public static void run() throws Exception {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+
+ File imageFile = new File(Constants.TestPng);
+ byte[] imageBytes = new byte[(int) imageFile.length()];
+ InputStream imageStream = new FileInputStream(imageFile);
+ imageStream.read(imageBytes);
+ imageStream.close();
+
+ // Replace image
+ for (PdfAnnotation annotation : pdfContent.getPages().get_Item(0).getAnnotations())
+ {
+ if (annotation.getImage() != null)
+ {
+ annotation.setImage(new PdfWatermarkableImage(imageBytes));
+ }
+ }
+
+ // Save document
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceImageForParticularArtifact.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceImageForParticularArtifact.java
new file mode 100644
index 0000000..9536cce
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceImageForParticularArtifact.java
@@ -0,0 +1,45 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PdfArtifact;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.contents.PdfWatermarkableImage;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+
+public class PdfReplaceImageForParticularArtifact {
+ /**
+ * This example shows how to replace the image of a particular artifact.
+ */
+ public static void run() throws Exception {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+
+ File imageFile = new File(Constants.TestPng);
+ byte[] imageBytes = new byte[(int) imageFile.length()];
+ InputStream imageStream = new FileInputStream(imageFile);
+ imageStream.read(imageBytes);
+ imageStream.close();
+
+ // Replace image
+ for (PdfArtifact artifact : pdfContent.getPages().get_Item(0).getArtifacts())
+ {
+ if (artifact.getImage() != null)
+ {
+ artifact.setImage(new PdfWatermarkableImage(imageBytes));
+ }
+ }
+
+ // Save document
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceImageForParticularXObject.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceImageForParticularXObject.java
new file mode 100644
index 0000000..0cf1585
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceImageForParticularXObject.java
@@ -0,0 +1,46 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.contents.PdfWatermarkableImage;
+import com.groupdocs.watermark.contents.PdfXObject;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+
+public class PdfReplaceImageForParticularXObject {
+ /**
+ * This example shows how to replace the image of a particular XObject.
+ * @throws Exception
+ */
+ public static void run() throws Exception {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+
+ File imageFile = new File(Constants.TestPng);
+ byte[] imageBytes = new byte[(int) imageFile.length()];
+ InputStream imageStream = new FileInputStream(imageFile);
+ imageStream.read(imageBytes);
+ imageStream.close();
+
+ // Replace image
+ for (PdfXObject xObject : pdfContent.getPages().get_Item(0).getXObjects())
+ {
+ if (xObject.getImage() != null)
+ {
+ xObject.setImage(new PdfWatermarkableImage(imageBytes));
+ }
+ }
+
+ // Save document
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceTextForParticularAnnotation.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceTextForParticularAnnotation.java
new file mode 100644
index 0000000..09ed3f9
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceTextForParticularAnnotation.java
@@ -0,0 +1,33 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PdfAnnotation;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+
+public class PdfReplaceTextForParticularAnnotation {
+ /**
+ * This example shows how to edit and replace the text of the particular annotations.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+ for (PdfAnnotation annotation : pdfContent.getPages().get_Item(0).getAnnotations())
+ {
+ // Replace text
+ if (annotation.getText().contains("Test"))
+ {
+ annotation.setText("Passed");
+ }
+ }
+
+ // Save document
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceTextForParticularAnnotationWithFormatting.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceTextForParticularAnnotationWithFormatting.java
new file mode 100644
index 0000000..565d3fc
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceTextForParticularAnnotationWithFormatting.java
@@ -0,0 +1,37 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PdfAnnotation;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+import com.groupdocs.watermark.watermarks.Color;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.FontStyle;
+
+public class PdfReplaceTextForParticularAnnotationWithFormatting {
+ /**
+ * This example shows how to edit and replace the text with formatting.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+ for (PdfAnnotation annotation : pdfContent.getPages().get_Item(0).getAnnotations())
+ {
+ // Replace text
+ if (annotation.getText().contains("Test"))
+ {
+ annotation.getFormattedTextFragments().clear();
+ annotation.getFormattedTextFragments().add("Passed", new Font("Calibri", 19, FontStyle.Bold), Color.getRed(), Color.getAqua());
+ }
+ }
+
+ // Save document
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceTextForParticularArtifact.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceTextForParticularArtifact.java
new file mode 100644
index 0000000..eae49e1
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceTextForParticularArtifact.java
@@ -0,0 +1,33 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PdfArtifact;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+
+public class PdfReplaceTextForParticularArtifact {
+ /**
+ * This example shows how to replace the text of the particular artifacts.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+ for (PdfArtifact artifact : pdfContent.getPages().get_Item(0).getArtifacts())
+ {
+ // Replace text
+ if (artifact.getText().contains("Test"))
+ {
+ artifact.setText("Passed");
+ }
+ }
+
+ // Save document
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceTextForParticularArtifactWithFormatting.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceTextForParticularArtifactWithFormatting.java
new file mode 100644
index 0000000..1ed4b66
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceTextForParticularArtifactWithFormatting.java
@@ -0,0 +1,37 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PdfArtifact;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+import com.groupdocs.watermark.watermarks.Color;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.FontStyle;
+
+public class PdfReplaceTextForParticularArtifactWithFormatting {
+ /**
+ * This example shows how to replace the text of the particular artifacts with formatted text.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+ for (PdfArtifact artifact : pdfContent.getPages().get_Item(0).getArtifacts())
+ {
+ // Replace text
+ if (artifact.getText().contains("Test"))
+ {
+ artifact.getFormattedTextFragments().clear();
+ artifact.getFormattedTextFragments().add("Passed", new Font("Calibri", 19, FontStyle.Bold), Color.getRed(), Color.getAqua());
+ }
+ }
+
+ // Save document
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceTextForParticularXObject.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceTextForParticularXObject.java
new file mode 100644
index 0000000..f20db45
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceTextForParticularXObject.java
@@ -0,0 +1,33 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.contents.PdfXObject;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+
+public class PdfReplaceTextForParticularXObject {
+ /**
+ * This example shows how to edit and replace the text of the particular XObject.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+ for (PdfXObject xObject : pdfContent.getPages().get_Item(0).getXObjects())
+ {
+ // Replace text
+ if (xObject.getText().contains("Test"))
+ {
+ xObject.setText("Passed");
+ }
+ }
+
+ // Save document
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceTextForParticularXObjectWithFormatting.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceTextForParticularXObjectWithFormatting.java
new file mode 100644
index 0000000..918c75f
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfReplaceTextForParticularXObjectWithFormatting.java
@@ -0,0 +1,37 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PdfContent;
+import com.groupdocs.watermark.contents.PdfXObject;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+import com.groupdocs.watermark.watermarks.Color;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.FontStyle;
+
+public class PdfReplaceTextForParticularXObjectWithFormatting {
+ /**
+ * This example shows how to replace text with formatting.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ PdfContent pdfContent = watermarker.getContent(PdfContent.class);
+ for (PdfXObject xObject : pdfContent.getPages().get_Item(0).getXObjects())
+ {
+ // Replace text
+ if (xObject.getText().contains("Test"))
+ {
+ xObject.getFormattedTextFragments().clear();
+ xObject.getFormattedTextFragments().add("Passed", new Font("Calibri", 19, FontStyle.Bold), Color.getRed(), Color.getAqua());
+ }
+ }
+
+ // Save document
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfSearchImageInAttachment.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfSearchImageInAttachment.java
new file mode 100644
index 0000000..88fed73
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_pdf/PdfSearchImageInAttachment.java
@@ -0,0 +1,28 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_pdf;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.WatermarkableImageCollection;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+import com.groupdocs.watermark.search.PdfSearchableObjects;
+
+public class PdfSearchImageInAttachment {
+ /**
+ * This example shows how to search for all the images attachments in a PDF document.
+ */
+ public static void run() {
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf, loadOptions);
+
+ // Consider only the attached images
+ watermarker.getSearchableObjects().setPdfSearchableObjects(PdfSearchableObjects.AttachedImages);
+
+ // Search for similar images
+ WatermarkableImageCollection possibleWatermarks = watermarker.getImages();
+
+ System.out.println("Found " + possibleWatermarks.getCount() + " image(s).");
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationAddWatermarkToAllSlideTypes.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationAddWatermarkToAllSlideTypes.java
new file mode 100644
index 0000000..d5599a5
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationAddWatermarkToAllSlideTypes.java
@@ -0,0 +1,70 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_presentations;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PresentationContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PresentationLoadOptions;
+import com.groupdocs.watermark.options.PresentationWatermarkLayoutSlideOptions;
+import com.groupdocs.watermark.options.PresentationWatermarkMasterHandoutSlideOptions;
+import com.groupdocs.watermark.options.PresentationWatermarkMasterNotesSlideOptions;
+import com.groupdocs.watermark.options.PresentationWatermarkMasterSlideOptions;
+import com.groupdocs.watermark.options.PresentationWatermarkNoteSlideOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class PresentationAddWatermarkToAllSlideTypes {
+ /**
+ * This example shows how to access each type of the slides in a PowerPoint presentation.
+ */
+ public static void run() {
+ PresentationLoadOptions loadOptions = new PresentationLoadOptions();
+ // Constants.InPresentationPptx is an absolute or relative path to your document. Ex: "C:\\Docs\\presentation.pptx"
+ Watermarker watermarker = new Watermarker(Constants.InPresentationPptx, loadOptions);
+
+ TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 8));
+
+ PresentationContent content = watermarker.getContent(PresentationContent.class);
+
+ // Add watermark to all master slides
+ PresentationWatermarkMasterSlideOptions masterSlideOptions = new PresentationWatermarkMasterSlideOptions();
+ masterSlideOptions.setMasterSlideIndex(-1);
+ watermarker.add(watermark, masterSlideOptions);
+
+ // Add watermark to all layout slides
+ if (content.getLayoutSlides() != null)
+ {
+ PresentationWatermarkLayoutSlideOptions layoutSlideOptions = new PresentationWatermarkLayoutSlideOptions();
+ layoutSlideOptions.setLayoutSlideIndex(-1);
+ watermarker.add(watermark, masterSlideOptions);
+ }
+
+ // Add watermark to all notes slides
+ for (int i = 0; i < content.getSlides().getCount(); i++)
+ {
+ if (content.getSlides().get_Item(i).getNotesSlide() != null)
+ {
+ PresentationWatermarkNoteSlideOptions noteSlideOptions = new PresentationWatermarkNoteSlideOptions();
+ noteSlideOptions.setSlideIndex(i);
+ watermarker.add(watermark, noteSlideOptions);
+ }
+ }
+
+ // Add watermark to handout master
+ if (content.getMasterHandoutSlide() != null)
+ {
+ PresentationWatermarkMasterHandoutSlideOptions handoutSlideOptions = new PresentationWatermarkMasterHandoutSlideOptions();
+ watermarker.add(watermark, handoutSlideOptions);
+ }
+
+ // Add watermark to notes master
+ if (content.getMasterNotesSlide() != null)
+ {
+ PresentationWatermarkMasterNotesSlideOptions masterNotesSlideOptions = new PresentationWatermarkMasterNotesSlideOptions();
+ watermarker.add(watermark, masterNotesSlideOptions);
+ }
+
+ watermarker.save(Constants.OutPresentationPptx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationAddWatermarkToSlide.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationAddWatermarkToSlide.java
new file mode 100644
index 0000000..3f8b452
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationAddWatermarkToSlide.java
@@ -0,0 +1,38 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_presentations;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PresentationLoadOptions;
+import com.groupdocs.watermark.options.PresentationWatermarkSlideOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.ImageWatermark;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class PresentationAddWatermarkToSlide {
+ /**
+ * This example shows how to add watermark to a particular slide of a PowerPoint presentation.
+ */
+ public static void run() {
+ PresentationLoadOptions loadOptions = new PresentationLoadOptions();
+ // Constants.InPresentationPptx is an absolute or relative path to your document. Ex: "C:\\Docs\\presentation.pptx"
+ Watermarker watermarker = new Watermarker(Constants.InPresentationPptx, loadOptions);
+
+ // Add text watermark to the first slide
+ TextWatermark textWatermark = new TextWatermark("Test watermark", new Font("Arial", 8));
+ PresentationWatermarkSlideOptions textWatermarkOptions = new PresentationWatermarkSlideOptions();
+ textWatermarkOptions.setSlideIndex(0);
+ watermarker.add(textWatermark, textWatermarkOptions);
+
+ // Add image watermark to the second slide
+ ImageWatermark imageWatermark = new ImageWatermark(Constants.LogoJpg);
+
+ PresentationWatermarkSlideOptions imageWatermarkOptions = new PresentationWatermarkSlideOptions();
+ imageWatermarkOptions.setSlideIndex(1);
+ watermarker.add(imageWatermark, imageWatermarkOptions);
+
+ watermarker.save(Constants.OutPresentationPptx);
+
+ watermarker.close();
+ imageWatermark.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationAddWatermarkToSlideBackgroundImages.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationAddWatermarkToSlideBackgroundImages.java
new file mode 100644
index 0000000..718728f
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationAddWatermarkToSlideBackgroundImages.java
@@ -0,0 +1,45 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_presentations;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.contents.PresentationContent;
+import com.groupdocs.watermark.contents.PresentationSlide;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PresentationLoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.SizingType;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class PresentationAddWatermarkToSlideBackgroundImages {
+ /**
+ * This example shows how to add watermark to the background images that belong to a PowerPoint document.
+ */
+ public static void run() {
+ PresentationLoadOptions loadOptions = new PresentationLoadOptions();
+ // Constants.InPresentationPptx is an absolute or relative path to your document. Ex: "C:\\Docs\\presentation.pptx"
+ Watermarker watermarker = new Watermarker(Constants.InPresentationPptx, loadOptions);
+
+ // Initialize image or text watermark
+ TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
+ watermark.setHorizontalAlignment(HorizontalAlignment.Center);
+ watermark.setVerticalAlignment(VerticalAlignment.Center);
+ watermark.setRotateAngle(45);
+ watermark.setSizingType(SizingType.ScaleToParentDimensions);
+ watermark.setScaleFactor(1);
+
+ PresentationContent content = watermarker.getContent(PresentationContent.class);
+ for (PresentationSlide slide : content.getSlides())
+ {
+ if (slide.getImageFillFormat().getBackgroundImage() != null)
+ {
+ // Add watermark to the image
+ slide.getImageFillFormat().getBackgroundImage().add(watermark);
+ }
+ }
+
+ watermarker.save(Constants.OutPresentationPptx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationAddWatermarkToSlideImages.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationAddWatermarkToSlideImages.java
new file mode 100644
index 0000000..d4e5240
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationAddWatermarkToSlideImages.java
@@ -0,0 +1,45 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_presentations;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.contents.PresentationContent;
+import com.groupdocs.watermark.contents.WatermarkableImage;
+import com.groupdocs.watermark.contents.WatermarkableImageCollection;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PresentationLoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.SizingType;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class PresentationAddWatermarkToSlideImages {
+ /**
+ * This example shows how to add watermark to the images inside a particular PowerPoint slide.
+ */
+ public static void run() {
+ PresentationLoadOptions loadOptions = new PresentationLoadOptions();
+ // Constants.InPresentationPptx is an absolute or relative path to your document. Ex: "C:\\Docs\\presentation.pptx"
+ Watermarker watermarker = new Watermarker(Constants.InPresentationPptx, loadOptions);
+
+ TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
+ watermark.setHorizontalAlignment(HorizontalAlignment.Center);
+ watermark.setVerticalAlignment(VerticalAlignment.Center);
+ watermark.setRotateAngle(45);
+ watermark.setSizingType(SizingType.ScaleToParentDimensions);
+ watermark.setScaleFactor(1);
+
+ // Get all images from the first slide
+ PresentationContent content = watermarker.getContent(PresentationContent.class);
+ WatermarkableImageCollection images = content.getSlides().get_Item(0).findImages();
+
+ // Add watermark to all found images
+ for (WatermarkableImage image : images)
+ {
+ image.add(watermark);
+ }
+
+ watermarker.save(Constants.OutPresentationPptx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationAddWatermarkWithImageEffects.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationAddWatermarkWithImageEffects.java
new file mode 100644
index 0000000..9f85d9d
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationAddWatermarkWithImageEffects.java
@@ -0,0 +1,39 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_presentations;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PresentationImageEffects;
+import com.groupdocs.watermark.options.PresentationLoadOptions;
+import com.groupdocs.watermark.options.PresentationWatermarkSlideOptions;
+import com.groupdocs.watermark.watermarks.Color;
+import com.groupdocs.watermark.watermarks.ImageWatermark;
+
+public class PresentationAddWatermarkWithImageEffects {
+ /**
+ * This example shows how to apply image effects to the shape watermark.
+ */
+ public static void run() {
+ PresentationLoadOptions loadOptions = new PresentationLoadOptions();
+ // Constants.InPresentationPptx is an absolute or relative path to your document. Ex: "C:\\Docs\\presentation.pptx"
+ Watermarker watermarker = new Watermarker(Constants.InPresentationPptx, loadOptions);
+
+ ImageWatermark watermark = new ImageWatermark(Constants.LogoPng);
+
+ PresentationImageEffects effects = new PresentationImageEffects();
+ effects.setBrightness(0.7);
+ effects.setContrast(0.6);
+ effects.setChromaKey(Color.getRed());
+ effects.getBorderLineFormat().setEnabled(true);
+ effects.getBorderLineFormat().setWeight(1);
+
+ PresentationWatermarkSlideOptions options = new PresentationWatermarkSlideOptions();
+ options.setEffects(effects);
+
+ watermarker.add(watermark, options);
+
+ watermarker.save(Constants.OutPresentationPptx);
+
+ watermarker.close();
+ watermark.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationAddWatermarkWithSlidesShapeSettings.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationAddWatermarkWithSlidesShapeSettings.java
new file mode 100644
index 0000000..34bc2a7
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationAddWatermarkWithSlidesShapeSettings.java
@@ -0,0 +1,39 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_presentations;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PresentationLoadOptions;
+import com.groupdocs.watermark.options.PresentationWatermarkSlideOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class PresentationAddWatermarkWithSlidesShapeSettings {
+ /**
+ * This example shows how to set some additional options when adding a shape watermark.
+ */
+ public static void run() {
+ PresentationLoadOptions loadOptions = new PresentationLoadOptions();
+ // Constants.InPresentationPptx is an absolute or relative path to your document. Ex: "C:\\Docs\\presentation.pptx"
+ Watermarker watermarker = new Watermarker(Constants.InPresentationPptx, loadOptions);
+
+ TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 19));
+ watermark.setBackground(true);
+
+ PresentationWatermarkSlideOptions options = new PresentationWatermarkSlideOptions();
+
+ // Set the shape name
+ options.setName("Shape 1");
+
+ // Set the descriptive (alternative) text that will be associated with the shape
+ options.setAlternativeText("Test watermark");
+
+ // Editing of the shape in PowerPoint is forbidden
+ options.setLocked(true);
+
+ watermarker.add(watermark, options);
+
+ watermarker.save(Constants.OutPresentationPptx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationAddWatermarkWithTextEffects.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationAddWatermarkWithTextEffects.java
new file mode 100644
index 0000000..c9fe422
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationAddWatermarkWithTextEffects.java
@@ -0,0 +1,40 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_presentations;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.OfficeDashStyle;
+import com.groupdocs.watermark.contents.OfficeLineStyle;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PresentationLoadOptions;
+import com.groupdocs.watermark.options.PresentationTextEffects;
+import com.groupdocs.watermark.options.PresentationWatermarkSlideOptions;
+import com.groupdocs.watermark.watermarks.Color;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class PresentationAddWatermarkWithTextEffects {
+ /**
+ * This example shows how to apply text effects when adding shape watermark to a PowerPoint slide.
+ */
+ public static void run() {
+ PresentationLoadOptions loadOptions = new PresentationLoadOptions();
+ // Constants.InPresentationPptx is an absolute or relative path to your document. Ex: "C:\\Docs\\presentation.pptx"
+ Watermarker watermarker = new Watermarker(Constants.InPresentationPptx, loadOptions);
+
+ TextWatermark watermark = new TextWatermark("Test watermark", new Font("Segoe UI", 19));
+
+ PresentationTextEffects effects = new PresentationTextEffects();
+ effects.getLineFormat().setEnabled(true);
+ effects.getLineFormat().setColor(Color.getRed());
+ effects.getLineFormat().setDashStyle(OfficeDashStyle.DashDotDot);
+ effects.getLineFormat().setLineStyle(OfficeLineStyle.Triple);
+ effects.getLineFormat().setWeight(1);
+
+ PresentationWatermarkSlideOptions options = new PresentationWatermarkSlideOptions();
+ options.setEffects(effects);
+
+ watermarker.add(watermark, options);
+ watermarker.save(Constants.OutPresentationPptx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationGetSlideBackgroundsInformation.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationGetSlideBackgroundsInformation.java
new file mode 100644
index 0000000..7ac8c5d
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationGetSlideBackgroundsInformation.java
@@ -0,0 +1,31 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_presentations;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PresentationContent;
+import com.groupdocs.watermark.contents.PresentationSlide;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PresentationLoadOptions;
+
+public class PresentationGetSlideBackgroundsInformation {
+ /**
+ * This example shows how to extract information about all the slide backgrounds in a PowerPoint document.
+ */
+ public static void run() {
+ PresentationLoadOptions loadOptions = new PresentationLoadOptions();
+ // Constants.InPresentationPptx is an absolute or relative path to your document. Ex: "C:\\Docs\\presentation.pptx"
+ Watermarker watermarker = new Watermarker(Constants.InPresentationPptx, loadOptions);
+
+ PresentationContent content = watermarker.getContent(PresentationContent.class);
+ for (PresentationSlide slide : content.getSlides())
+ {
+ if (slide.getImageFillFormat().getBackgroundImage() != null)
+ {
+ System.out.println(slide.getImageFillFormat().getBackgroundImage().getWidth());
+ System.out.println(slide.getImageFillFormat().getBackgroundImage().getHeight());
+ System.out.println(slide.getImageFillFormat().getBackgroundImage().getBytes().length);
+ }
+ }
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationGetSlideDimensions.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationGetSlideDimensions.java
new file mode 100644
index 0000000..1e2214e
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationGetSlideDimensions.java
@@ -0,0 +1,24 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_presentations;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PresentationContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PresentationLoadOptions;
+
+public class PresentationGetSlideDimensions {
+ /**
+ * This example shows how to get the dimensions of a particular slide.
+ */
+ public static void run() {
+ PresentationLoadOptions loadOptions = new PresentationLoadOptions();
+ // Constants.InPresentationPptx is an absolute or relative path to your document. Ex: "C:\\Docs\\presentation.pptx"
+ Watermarker watermarker = new Watermarker(Constants.InPresentationPptx, loadOptions);
+
+ PresentationContent content = watermarker.getContent(PresentationContent.class);
+
+ System.out.println(content.getSlideWidth());
+ System.out.println(content.getSlideHeight());
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationProtectWatermarkUsingUnreadableCharacters.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationProtectWatermarkUsingUnreadableCharacters.java
new file mode 100644
index 0000000..6de54c4
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationProtectWatermarkUsingUnreadableCharacters.java
@@ -0,0 +1,33 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_presentations;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PresentationLoadOptions;
+import com.groupdocs.watermark.options.PresentationWatermarkSlideOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class PresentationProtectWatermarkUsingUnreadableCharacters {
+ /**
+ * This example shows how to include unreadable characters in watermark text.
+ */
+ public static void run() {
+ PresentationLoadOptions loadOptions = new PresentationLoadOptions();
+ // Constants.InPresentationPptx is an absolute or relative path to your document. Ex: "C:\\Docs\\presentation.pptx"
+ Watermarker watermarker = new Watermarker(Constants.InPresentationPptx, loadOptions);
+
+ TextWatermark watermark = new TextWatermark("Watermark text", new Font("Arial", 19));
+
+ PresentationWatermarkSlideOptions options = new PresentationWatermarkSlideOptions();
+ options.setLocked(true);
+ options.setProtectWithUnreadableCharacters(true);
+
+ // Add watermark
+ watermarker.add(watermark, options);
+
+ // Save document
+ watermarker.save(Constants.OutPresentationPptx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationRemoveSlideBackground.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationRemoveSlideBackground.java
new file mode 100644
index 0000000..2a3c5ca
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationRemoveSlideBackground.java
@@ -0,0 +1,24 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_presentations;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PresentationContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PresentationLoadOptions;
+
+public class PresentationRemoveSlideBackground {
+ /**
+ * This example shows how to remove the background image of a particular slide.
+ */
+ public static void run() {
+ PresentationLoadOptions loadOptions = new PresentationLoadOptions();
+ // Constants.InPresentationPptx is an absolute or relative path to your document. Ex: "C:\\Docs\\presentation.pptx"
+ Watermarker watermarker = new Watermarker(Constants.InPresentationPptx, loadOptions);
+
+ PresentationContent content = watermarker.getContent(PresentationContent.class);
+ content.getSlides().get_Item(0).getImageFillFormat().setBackgroundImage(null);
+
+ watermarker.save(Constants.OutPresentationPptx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationSetBackgroundImageForChart.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationSetBackgroundImageForChart.java
new file mode 100644
index 0000000..d028be5
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationSetBackgroundImageForChart.java
@@ -0,0 +1,39 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_presentations;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PresentationContent;
+import com.groupdocs.watermark.contents.PresentationWatermarkableImage;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PresentationLoadOptions;
+
+public class PresentationSetBackgroundImageForChart {
+ /**
+ * This example shows how to set the background image for a chart inside PowerPoint document.
+ */
+ public static void run() throws Exception {
+ PresentationLoadOptions loadOptions = new PresentationLoadOptions();
+ // Constants.InPresentationPptx is an absolute or relative path to your document. Ex: "C:\\Docs\\presentation.pptx"
+ Watermarker watermarker = new Watermarker(Constants.InPresentationPptx, loadOptions);
+
+ PresentationContent content = watermarker.getContent(PresentationContent.class);
+
+ File imageFile = new File(Constants.TestPng);
+ byte[] imageBytes = new byte[(int) imageFile.length()];
+ InputStream imageInputStream = new FileInputStream(imageFile);
+ imageInputStream.read(imageBytes);
+ imageInputStream.close();
+
+
+ content.getSlides().get_Item(0).getCharts().get_Item(0).getImageFillFormat().setBackgroundImage(new PresentationWatermarkableImage(imageBytes));
+ content.getSlides().get_Item(0).getCharts().get_Item(0).getImageFillFormat().setTransparency(0.5);
+ content.getSlides().get_Item(0).getCharts().get_Item(0).getImageFillFormat().setTileAsTexture(true);
+
+ watermarker.save(Constants.OutPresentationPptx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationSetTiledSemitransparentBackground.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationSetTiledSemitransparentBackground.java
new file mode 100644
index 0000000..90864c7
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_presentations/PresentationSetTiledSemitransparentBackground.java
@@ -0,0 +1,40 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_presentations;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.PresentationContent;
+import com.groupdocs.watermark.contents.PresentationSlide;
+import com.groupdocs.watermark.contents.PresentationWatermarkableImage;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PresentationLoadOptions;
+
+public class PresentationSetTiledSemitransparentBackground {
+ /**
+ * This example shows how to tile the picture across slide's background and make the image semi-transparent.
+ */
+ public static void run() throws Exception {
+ PresentationLoadOptions loadOptions = new PresentationLoadOptions();
+ // Constants.InPresentationPptx is an absolute or relative path to your document. Ex: "C:\\Docs\\presentation.pptx"
+ Watermarker watermarker = new Watermarker(Constants.InPresentationPptx, loadOptions);
+
+ PresentationContent content = watermarker.getContent(PresentationContent.class);
+ PresentationSlide slide = content.getSlides().get_Item(0);
+
+ File imageFile = new File(Constants.BackgroundPng);
+ byte[] imageBytes = new byte[(int) imageFile.length()];
+ InputStream imageInputStream = new FileInputStream(imageFile);
+ imageInputStream.read(imageBytes);
+ imageInputStream.close();
+
+ slide.getImageFillFormat().setBackgroundImage(new PresentationWatermarkableImage(imageBytes));
+ slide.getImageFillFormat().setTileAsTexture(true);
+ slide.getImageFillFormat().setTransparency(0.5);
+
+ watermarker.save(Constants.OutPresentationPptx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddAttachment.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddAttachment.java
new file mode 100644
index 0000000..d6a37b3
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddAttachment.java
@@ -0,0 +1,53 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.contents.SpreadsheetWorksheet;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+
+public class SpreadsheetAddAttachment {
+ /**
+ * This example show how to add attachments in Excel document.
+ */
+ public static void run() throws Exception {
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ File file = new File(Constants.InDocumentDocx);
+ byte[] attachmentBytes = new byte[(int) file.length()];
+ InputStream inputStream = new FileInputStream(file);
+ inputStream.read(attachmentBytes);
+ inputStream.close();
+
+ file = new File(Constants.DocumentPreviewPng);
+ byte[] previewImageBytes = new byte[(int) file.length()];
+ inputStream = new FileInputStream(file);
+ inputStream.read(previewImageBytes);
+ inputStream.close();
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+ SpreadsheetWorksheet worksheet = content.getWorksheets().get_Item(0);
+
+ // Add the attachment
+ worksheet.getAttachments().addAttachment(attachmentBytes, // File content
+ "sample document.docx", // Source file full name (the extension is used
+ // to determine appropriate application to open
+ // the file)
+ previewImageBytes, // Preview image content
+ 50, // X-coordinate of the attachment frame
+ 100, // Y-coordinate of the attachment frame
+ 200, // Attachment frame width
+ 400); // Attachment frame height
+
+ // Save changes
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddImageWatermarkIntoHeaderFooter.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddImageWatermarkIntoHeaderFooter.java
new file mode 100644
index 0000000..b7a9805
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddImageWatermarkIntoHeaderFooter.java
@@ -0,0 +1,37 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+import com.groupdocs.watermark.options.SpreadsheetWatermarkHeaderFooterOptions;
+import com.groupdocs.watermark.watermarks.ImageWatermark;
+import com.groupdocs.watermark.watermarks.SizingType;
+
+public class SpreadsheetAddImageWatermarkIntoHeaderFooter {
+ /**
+ * This example shows how to add watermark to worksheet's header or footer.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ ImageWatermark watermark = new ImageWatermark(Constants.LogoPng);
+
+ watermark.setVerticalAlignment(VerticalAlignment.Top);
+ watermark.setHorizontalAlignment(HorizontalAlignment.Center);
+ watermark.setSizingType(SizingType.ScaleToParentDimensions);
+ watermark.setScaleFactor(1);
+
+ SpreadsheetWatermarkHeaderFooterOptions options = new SpreadsheetWatermarkHeaderFooterOptions();
+ options.setWorksheetIndex(0);
+
+ watermarker.add(watermark, options);
+
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddLinkedAttachment.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddLinkedAttachment.java
new file mode 100644
index 0000000..13d27c2
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddLinkedAttachment.java
@@ -0,0 +1,43 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import java.io.File;
+import java.io.FileInputStream;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.contents.SpreadsheetWorksheet;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+
+public class SpreadsheetAddLinkedAttachment {
+ /**
+ * This example shows how to to add linked attachments in Excel document.
+ */
+ public static void run() throws Exception {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+ SpreadsheetWorksheet worksheet = content.getWorksheets().get_Item(0);
+
+ File file = new File(Constants.DocumentPreviewPng);
+ byte[] previewImageBytes = new byte[(int) file.length()];
+ FileInputStream inputStream = new FileInputStream(file);
+ inputStream.read(previewImageBytes);
+ inputStream.close();
+
+ // Add the attachment
+ worksheet.getAttachments().addLink(Constants.InDocumentDocx, // Source file path
+ previewImageBytes, // Preview image content
+ 50, // X-coordinate of the attachment frame
+ 100, // Y-coordinate of the attachment frame
+ 200, // Attachment frame width
+ 400); // Attachment frame height
+
+ // Save changes
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddModernWordArtWatermark.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddModernWordArtWatermark.java
new file mode 100644
index 0000000..c79ec67
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddModernWordArtWatermark.java
@@ -0,0 +1,28 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+import com.groupdocs.watermark.options.SpreadsheetWatermarkModernWordArtOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class SpreadsheetAddModernWordArtWatermark {
+ /**
+ * This example shows how to add modern WordArt watermark to Excel document worksheet.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ TextWatermark textWatermark = new TextWatermark("Test watermark", new Font("Arial", 8));
+ SpreadsheetWatermarkModernWordArtOptions options = new SpreadsheetWatermarkModernWordArtOptions();
+ options.setWorksheetIndex(0);
+
+ watermarker.add(textWatermark, options);
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddTextWatermarkAsBackground.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddTextWatermarkAsBackground.java
new file mode 100644
index 0000000..fac2aeb
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddTextWatermarkAsBackground.java
@@ -0,0 +1,41 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetBackgroundWatermarkOptions;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.SizingType;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class SpreadsheetAddTextWatermarkAsBackground {
+ /**
+ * This example shows how to add text watermark as background.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ TextWatermark watermark = new TextWatermark("Test watermark", new Font("Segoe UI", 19));
+ watermark.setHorizontalAlignment(HorizontalAlignment.Center);
+ watermark.setVerticalAlignment(VerticalAlignment.Center);
+ watermark.setRotateAngle(45);
+ watermark.setSizingType(SizingType.ScaleToParentDimensions);
+ watermark.setScaleFactor(0.5);
+ watermark.setOpacity(0.5);
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+ SpreadsheetBackgroundWatermarkOptions options = new SpreadsheetBackgroundWatermarkOptions();
+ options.setBackgroundWidth(content.getWorksheets().get_Item(0).getContentAreaWidthPx()); /* set background width */
+ options.setBackgroundHeight(content.getWorksheets().get_Item(0).getContentAreaHeightPx()); /* set background height */
+ watermarker.add(watermark, options);
+
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddTextWatermarkIntoHeaderFooter.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddTextWatermarkIntoHeaderFooter.java
new file mode 100644
index 0000000..efe8a03
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddTextWatermarkIntoHeaderFooter.java
@@ -0,0 +1,37 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+import com.groupdocs.watermark.options.SpreadsheetWatermarkHeaderFooterOptions;
+import com.groupdocs.watermark.watermarks.Color;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.FontStyle;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class SpreadsheetAddTextWatermarkIntoHeaderFooter {
+ /**
+ * This example shows how to add text watermark in header or footer.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ TextWatermark watermark = new TextWatermark("Test watermark", new Font("Segoe UI", 19, FontStyle.Bold));
+ watermark.setForegroundColor(Color.getRed());
+ watermark.setBackgroundColor(Color.getAqua());
+ watermark.setVerticalAlignment(VerticalAlignment.Top);
+ watermark.setHorizontalAlignment(HorizontalAlignment.Center);
+
+ SpreadsheetWatermarkHeaderFooterOptions options = new SpreadsheetWatermarkHeaderFooterOptions();
+ options.setWorksheetIndex(0);
+
+ watermarker.add(watermark, options);
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkAsBackground.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkAsBackground.java
new file mode 100644
index 0000000..491410c
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkAsBackground.java
@@ -0,0 +1,27 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetBackgroundWatermarkOptions;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+import com.groupdocs.watermark.watermarks.ImageWatermark;
+
+public class SpreadsheetAddWatermarkAsBackground {
+ /**
+ * This example show how to add background watermark to all worksheets of Excel document.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ ImageWatermark watermark = new ImageWatermark(Constants.LogoGif);
+
+ SpreadsheetBackgroundWatermarkOptions options = new SpreadsheetBackgroundWatermarkOptions();
+ watermarker.add(watermark, options);
+
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkAsBackgroundWithRelativeSizeAndPosition.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkAsBackgroundWithRelativeSizeAndPosition.java
new file mode 100644
index 0000000..d819c0f
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkAsBackgroundWithRelativeSizeAndPosition.java
@@ -0,0 +1,40 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetBackgroundWatermarkOptions;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+import com.groupdocs.watermark.watermarks.ImageWatermark;
+import com.groupdocs.watermark.watermarks.SizingType;
+
+public class SpreadsheetAddWatermarkAsBackgroundWithRelativeSizeAndPosition {
+ /**
+ * This example shows how to define the size of the background image on which your watermark will be drawn.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ ImageWatermark watermark = new ImageWatermark(Constants.LogoGif);
+
+ watermark.setHorizontalAlignment(HorizontalAlignment.Center);
+ watermark.setVerticalAlignment(VerticalAlignment.Center);
+ watermark.setRotateAngle(90);
+ watermark.setSizingType(SizingType.ScaleToParentDimensions);
+ watermark.setScaleFactor(0.5);
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+ SpreadsheetBackgroundWatermarkOptions options = new SpreadsheetBackgroundWatermarkOptions();
+ options.setBackgroundWidth(content.getWorksheets().get_Item(0).getContentAreaWidthPx()); /* set background width */
+ options.setBackgroundHeight(content.getWorksheets().get_Item(0).getContentAreaHeightPx()); /* set background height */
+ watermarker.add(watermark, options);
+
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkToAttachment.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkToAttachment.java
new file mode 100644
index 0000000..4b910f6
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkToAttachment.java
@@ -0,0 +1,52 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.FileType;
+import com.groupdocs.watermark.common.IDocumentInfo;
+import com.groupdocs.watermark.contents.SpreadsheetAttachment;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.contents.SpreadsheetWorksheet;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class SpreadsheetAddWatermarkToAttachment {
+ /**
+ * This example shows how to add watermark to all attachments in Excel document.
+ */
+ public static void run() {
+ TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 19));
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+ for (SpreadsheetWorksheet worksheet : content.getWorksheets())
+ {
+ for (SpreadsheetAttachment attachment : worksheet.getAttachments())
+ {
+ // Check if the attached file is supported by GroupDocs.Watermark
+ IDocumentInfo info = attachment.getDocumentInfo();
+ if (info.getFileType() != FileType.Unknown && !info.isEncrypted())
+ {
+ // Load the attached document
+ Watermarker attachedWatermarker = attachment.createWatermarker();
+
+ // Add watermark
+ attachedWatermarker.add(watermark);
+
+ // Save changes in the attached file
+ attachment.updateContent(attachedWatermarker);
+
+ attachedWatermarker.close();
+ }
+ }
+ }
+
+ // Save changes
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkToBackgroundImages.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkToBackgroundImages.java
new file mode 100644
index 0000000..0d00623
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkToBackgroundImages.java
@@ -0,0 +1,45 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.contents.SpreadsheetWorksheet;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.SizingType;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class SpreadsheetAddWatermarkToBackgroundImages {
+ /**
+ * This example shows how to add watermark to the background images that belong to an Excel document.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ // Initialize image or text watermark
+ TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
+ watermark.setHorizontalAlignment(HorizontalAlignment.Center);
+ watermark.setVerticalAlignment(VerticalAlignment.Center);
+ watermark.setRotateAngle(45);
+ watermark.setSizingType(SizingType.ScaleToParentDimensions);
+ watermark.setScaleFactor(1);
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+ for (SpreadsheetWorksheet worksheet : content.getWorksheets())
+ {
+ if (worksheet.getBackgroundImage() != null)
+ {
+ // Add watermark to the image
+ worksheet.getBackgroundImage().add(watermark);
+ }
+ }
+
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkToImagesInHeaderFooter.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkToImagesInHeaderFooter.java
new file mode 100644
index 0000000..fb1cb53
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkToImagesInHeaderFooter.java
@@ -0,0 +1,53 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.contents.SpreadsheetHeaderFooter;
+import com.groupdocs.watermark.contents.SpreadsheetHeaderFooterSection;
+import com.groupdocs.watermark.contents.SpreadsheetWorksheet;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.SizingType;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class SpreadsheetAddWatermarkToImagesInHeaderFooter {
+ /**
+ * This example shows how to add watermark to images inside any header and footer.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ // Initialize image or text watermark
+ TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
+ watermark.setHorizontalAlignment(HorizontalAlignment.Center);
+ watermark.setVerticalAlignment(VerticalAlignment.Center);
+ watermark.setRotateAngle(45);
+ watermark.setSizingType(SizingType.ScaleToParentDimensions);
+ watermark.setScaleFactor(1);
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+ for (SpreadsheetWorksheet worksheet : content.getWorksheets())
+ {
+ for (SpreadsheetHeaderFooter headerFooter : worksheet.getHeadersFooters())
+ {
+ for (SpreadsheetHeaderFooterSection section : headerFooter.getSections())
+ {
+ if (section.getImage() != null)
+ {
+ // Add watermark to the image
+ section.getImage().add(watermark);
+ }
+ }
+ }
+ }
+
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkToWorksheet.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkToWorksheet.java
new file mode 100644
index 0000000..72fdd5b
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkToWorksheet.java
@@ -0,0 +1,38 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+import com.groupdocs.watermark.options.SpreadsheetWatermarkShapeOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.ImageWatermark;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class SpreadsheetAddWatermarkToWorksheet {
+ /**
+ * This example shows how to add watermark to a particular worksheet.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ // Add text watermark to the first worksheet
+ TextWatermark textWatermark = new TextWatermark("Test watermark", new Font("Arial", 8));
+ SpreadsheetWatermarkShapeOptions textWatermarkOptions = new SpreadsheetWatermarkShapeOptions();
+ textWatermarkOptions.setWorksheetIndex(0);
+ watermarker.add(textWatermark, textWatermarkOptions);
+
+ // Add image watermark to the second worksheet
+ ImageWatermark imageWatermark = new ImageWatermark(Constants.LogoJpg);
+
+ SpreadsheetWatermarkShapeOptions imageWatermarkOptions = new SpreadsheetWatermarkShapeOptions();
+ imageWatermarkOptions.setWorksheetIndex(1);
+ watermarker.add(imageWatermark, imageWatermarkOptions);
+
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ imageWatermark.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkToWorksheetImages.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkToWorksheetImages.java
new file mode 100644
index 0000000..39033e6
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkToWorksheetImages.java
@@ -0,0 +1,45 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.contents.WatermarkableImage;
+import com.groupdocs.watermark.contents.WatermarkableImageCollection;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.SizingType;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class SpreadsheetAddWatermarkToWorksheetImages {
+ /**
+ * This example shows how to add watermark to the images that belong to a particular worksheet.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
+ watermark.setHorizontalAlignment(HorizontalAlignment.Center);
+ watermark.setVerticalAlignment(VerticalAlignment.Center);
+ watermark.setRotateAngle(45);
+ watermark.setSizingType(SizingType.ScaleToParentDimensions);
+ watermark.setScaleFactor(1);
+
+ // Get all images from the first worksheet
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+ WatermarkableImageCollection images = content.getWorksheets().get_Item(0).findImages();
+
+ // Add watermark to all found images
+ for (WatermarkableImage image : images)
+ {
+ image.add(watermark);
+ }
+
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkUsingShapeSettings.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkUsingShapeSettings.java
new file mode 100644
index 0000000..b6c6706
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkUsingShapeSettings.java
@@ -0,0 +1,36 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+import com.groupdocs.watermark.options.SpreadsheetWatermarkShapeOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class SpreadsheetAddWatermarkUsingShapeSettings {
+ /**
+ * This example shows how to set some additional options when adding shape watermark to Excel worksheet.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ TextWatermark watermark = new TextWatermark("Test watermark", new Font("Segoe UI", 19));
+ SpreadsheetWatermarkShapeOptions options = new SpreadsheetWatermarkShapeOptions();
+
+ // Set the shape name
+ options.setName("Shape 1");
+
+ // Set the descriptive (alternative) text that will be associated with the shape
+ options.setAlternativeText("Test watermark");
+
+ // Editing of the shape in Excel is forbidden
+ options.setLocked(true);
+
+ watermarker.add(watermark, options);
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkWithImageEffects.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkWithImageEffects.java
new file mode 100644
index 0000000..12110a6
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkWithImageEffects.java
@@ -0,0 +1,38 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetImageEffects;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+import com.groupdocs.watermark.options.SpreadsheetWatermarkShapeOptions;
+import com.groupdocs.watermark.watermarks.Color;
+import com.groupdocs.watermark.watermarks.ImageWatermark;
+
+public class SpreadsheetAddWatermarkWithImageEffects {
+ /**
+ * This example shows how to apply image effects to the shape watermark.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ ImageWatermark watermark = new ImageWatermark(Constants.LogoPng);
+
+ SpreadsheetImageEffects effects = new SpreadsheetImageEffects();
+ effects.setBrightness(0.7);
+ effects.setContrast(0.6);
+ effects.setChromaKey(Color.getRed());
+ effects.getBorderLineFormat().setEnabled(true);
+ effects.getBorderLineFormat().setWeight(1);
+
+ SpreadsheetWatermarkShapeOptions options = new SpreadsheetWatermarkShapeOptions();
+ options.setEffects(effects);
+
+ watermarker.add(watermark, options);
+
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkWithTextEffects.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkWithTextEffects.java
new file mode 100644
index 0000000..afebfd4
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetAddWatermarkWithTextEffects.java
@@ -0,0 +1,40 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.OfficeDashStyle;
+import com.groupdocs.watermark.contents.OfficeLineStyle;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+import com.groupdocs.watermark.options.SpreadsheetTextEffects;
+import com.groupdocs.watermark.options.SpreadsheetWatermarkShapeOptions;
+import com.groupdocs.watermark.watermarks.Color;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class SpreadsheetAddWatermarkWithTextEffects {
+ /**
+ * This example shows how to apply text effects when adding shape watermark in Excel worksheet.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ TextWatermark watermark = new TextWatermark("Test watermark", new Font("Segoe UI", 19));
+
+ SpreadsheetTextEffects effects = new SpreadsheetTextEffects();
+ effects.getLineFormat().setEnabled(true);
+ effects.getLineFormat().setColor(Color.getRed());
+ effects.getLineFormat().setDashStyle(OfficeDashStyle.DashDotDot);
+ effects.getLineFormat().setLineStyle(OfficeLineStyle.Triple);
+ effects.getLineFormat().setWeight(1);
+
+ SpreadsheetWatermarkShapeOptions options = new SpreadsheetWatermarkShapeOptions();
+ options.setEffects(effects);
+
+ watermarker.add(watermark, options);
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetClearHeaderFooter.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetClearHeaderFooter.java
new file mode 100644
index 0000000..7329092
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetClearHeaderFooter.java
@@ -0,0 +1,36 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.OfficeHeaderFooterType;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.contents.SpreadsheetHeaderFooterSection;
+import com.groupdocs.watermark.contents.SpreadsheetHeaderFooterSectionCollection;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+
+public class SpreadsheetClearHeaderFooter {
+ /**
+ * This example shows how to clear a particular header and footer.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: @"C:\Docs\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+
+ SpreadsheetHeaderFooterSectionCollection sections = content
+ .getWorksheets().get_Item(0)
+ .getHeadersFooters().getByOfficeHeaderFooterType(OfficeHeaderFooterType.HeaderPrimary)
+ .getSections();
+ for (SpreadsheetHeaderFooterSection section : sections)
+ {
+ section.setScript(null);
+ section.setImage(null);
+ }
+
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetClearSectionOfHeaderFooter.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetClearSectionOfHeaderFooter.java
new file mode 100644
index 0000000..22eaefd
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetClearSectionOfHeaderFooter.java
@@ -0,0 +1,33 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.OfficeHeaderFooterType;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.contents.SpreadsheetHeaderFooterSection;
+import com.groupdocs.watermark.contents.SpreadsheetHeaderFooterSectionType;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+
+public class SpreadsheetClearSectionOfHeaderFooter {
+ /**
+ * This example shows how to clear a particular section of header and footer.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+
+ SpreadsheetHeaderFooterSection section = content
+ .getWorksheets().get_Item(0)
+ .getHeadersFooters().getByOfficeHeaderFooterType(OfficeHeaderFooterType.HeaderEven)
+ .getSections().getBySpreadsheetHeaderFooterSectionType(SpreadsheetHeaderFooterSectionType.Left);
+ section.setImage(null);
+ section.setScript(null);
+
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetExtractAllAttachments.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetExtractAllAttachments.java
new file mode 100644
index 0000000..007efec
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetExtractAllAttachments.java
@@ -0,0 +1,48 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.SpreadsheetAttachment;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.contents.SpreadsheetWorksheet;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+
+public class SpreadsheetExtractAllAttachments {
+ /**
+ * This example shows how to extract attachments in Excel document.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+ for (SpreadsheetWorksheet worksheet : content.getWorksheets())
+ {
+ for (SpreadsheetAttachment attachment : worksheet.getAttachments())
+ {
+ System.out.println("Alternative text: " + attachment.getAlternativeText());
+ System.out.println("Attachment frame x-coordinate: " + attachment.getX());
+ System.out.println("Attachment frame y-coordinate: " + attachment.getY());
+ System.out.println("Attachment frame width: " + attachment.getWidth());
+ System.out.println("Attachment frame height: " + attachment.getHeight());
+ System.out.println("Preview image size: " + attachment.getPreviewImageContent() != null ? attachment.getPreviewImageContent().length : 0);
+
+ if (attachment.isLink())
+ {
+ // The document contains only a link to the attached file
+ System.out.println("Full path to the attached file: " + attachment.getSourceFullName());
+ }
+ else
+ {
+ // The attached file is stored in the document
+ System.out.println("File type: " + attachment.getDocumentInfo().getFileType());
+ System.out.println("Name of the source file: " + attachment.getSourceFullName());
+ System.out.println("File size: " + attachment.getContent().length);
+ }
+ }
+ }
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetGetContentAreaDimensions.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetGetContentAreaDimensions.java
new file mode 100644
index 0000000..1e61fe9
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetGetContentAreaDimensions.java
@@ -0,0 +1,29 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+
+public class SpreadsheetGetContentAreaDimensions {
+ /**
+ * This example shows how to get the size of the content area (range of cells which contains data).
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+
+ // Get the size of content area
+ System.out.println(content.getWorksheets().get_Item(0).getContentAreaHeight());
+ System.out.println(content.getWorksheets().get_Item(0).getContentAreaWidth());
+
+ // Get the size of particular cell
+ System.out.println(content.getWorksheets().get_Item(0).getColumnWidth(0));
+ System.out.println(content.getWorksheets().get_Item(0).getRowHeight(0));
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetGetHeaderFooterInformation.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetGetHeaderFooterInformation.java
new file mode 100644
index 0000000..a0107c6
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetGetHeaderFooterInformation.java
@@ -0,0 +1,44 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.contents.SpreadsheetHeaderFooter;
+import com.groupdocs.watermark.contents.SpreadsheetHeaderFooterSection;
+import com.groupdocs.watermark.contents.SpreadsheetWorksheet;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+
+public class SpreadsheetGetHeaderFooterInformation {
+ /**
+ * This example shows how to extract information about all the headers and footers in an Excel document.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+
+ for (SpreadsheetWorksheet worksheet : content.getWorksheets())
+ {
+ for (SpreadsheetHeaderFooter headerFooter : worksheet.getHeadersFooters())
+ {
+ System.out.println(headerFooter.getHeaderFooterType());
+ for (SpreadsheetHeaderFooterSection section : headerFooter.getSections())
+ {
+ System.out.println(section.getSectionType());
+ if (section.getImage() != null)
+ {
+ System.out.println(section.getImage().getWidth());
+ System.out.println(section.getImage().getHeight());
+ System.out.println(section.getImage().getBytes().length);
+ }
+
+ System.out.println(section.getScript());
+ }
+ }
+ }
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetGetInformationOfWorksheetBackgrounds.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetGetInformationOfWorksheetBackgrounds.java
new file mode 100644
index 0000000..77c200e
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetGetInformationOfWorksheetBackgrounds.java
@@ -0,0 +1,31 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.contents.SpreadsheetWorksheet;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+
+public class SpreadsheetGetInformationOfWorksheetBackgrounds {
+ /**
+ * This example shows how to extract information about all the worksheet backgrounds in an Excel document.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+ for (SpreadsheetWorksheet worksheet : content.getWorksheets())
+ {
+ if (worksheet.getBackgroundImage() != null)
+ {
+ System.out.println(worksheet.getBackgroundImage().getWidth());
+ System.out.println(worksheet.getBackgroundImage().getHeight());
+ System.out.println(worksheet.getBackgroundImage().getBytes().length);
+ }
+ }
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetGetShapesInformation.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetGetShapesInformation.java
new file mode 100644
index 0000000..8f2e20b
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetGetShapesInformation.java
@@ -0,0 +1,48 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.contents.SpreadsheetShape;
+import com.groupdocs.watermark.contents.SpreadsheetWorksheet;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+
+public class SpreadsheetGetShapesInformation {
+ /**
+ * This example shows how to get information about all the shapes in an Excel document.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: @"C:\Docs\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+ for (SpreadsheetWorksheet worksheet : content.getWorksheets())
+ {
+ for (SpreadsheetShape shape : worksheet.getShapes())
+ {
+ System.out.println(shape.getAutoShapeType());
+ System.out.println(shape.getMsoDrawingType());
+ System.out.println(shape.getText());
+ if (shape.getImage() != null)
+ {
+ System.out.println(shape.getImage().getWidth());
+ System.out.println(shape.getImage().getHeight());
+ System.out.println(shape.getImage().getBytes().length);
+ }
+
+ System.out.println(shape.getId());
+ System.out.println(shape.getAlternativeText());
+ System.out.println(shape.getX());
+ System.out.println(shape.getY());
+ System.out.println(shape.getWidth());
+ System.out.println(shape.getHeight());
+ System.out.println(shape.getRotateAngle());
+ System.out.println(shape.isWordArt());
+ System.out.println(shape.getName());
+ }
+ }
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetRemoveAttachment.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetRemoveAttachment.java
new file mode 100644
index 0000000..a5fa007
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetRemoveAttachment.java
@@ -0,0 +1,42 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import java.io.File;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.SpreadsheetAttachment;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.contents.SpreadsheetWorksheet;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+
+public class SpreadsheetRemoveAttachment {
+ /**
+ * This example shows how to remove attachments in Excel document.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+ for (SpreadsheetWorksheet worksheet : content.getWorksheets())
+ {
+ for (int i = worksheet.getAttachments().getCount() - 1; i >= 0; i--)
+ {
+ SpreadsheetAttachment attachment = worksheet.getAttachments().get_Item(i);
+ if (attachment.isLink() &&
+ !new File(attachment.getSourceFullName()).exists() || // Linked file that is not available at this moment
+ attachment.getDocumentInfo().isEncrypted()) // Attached file protected with a password
+ {
+ // Remove the file if it meets at least one of the conditions above
+ worksheet.getAttachments().removeAt(i);
+ }
+ }
+ }
+
+ // Save changes
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetRemoveHyperlinks.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetRemoveHyperlinks.java
new file mode 100644
index 0000000..7d032e0
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetRemoveHyperlinks.java
@@ -0,0 +1,31 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+
+public class SpreadsheetRemoveHyperlinks {
+ /**
+ * This example shows how to remove/replace hyperlink associated with a particular shape or chart inside an Excel document.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+
+ // Replace hyperlink
+ content.getWorksheets().get_Item(0).getCharts().get_Item(0).setHyperlink("https://www.aspose.com/");
+ content.getWorksheets().get_Item(0).getShapes().get_Item(0).setHyperlink("https://www.groupdocs.com/");
+
+ // Remove hyperlink
+ content.getWorksheets().get_Item(1).getCharts().get_Item(0).setHyperlink(null);
+ content.getWorksheets().get_Item(1).getShapes().get_Item(0).setHyperlink(null);
+
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetRemoveShape.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetRemoveShape.java
new file mode 100644
index 0000000..6271a12
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetRemoveShape.java
@@ -0,0 +1,29 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+
+public class SpreadsheetRemoveShape {
+ /**
+ * This example shows how to remove a particular shape from the worksheet.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+
+ // Remove shape by index
+ content.getWorksheets().get_Item(0).getShapes().removeAt(0);
+
+ // Remove shape by reference
+ content.getWorksheets().get_Item(0).getShapes().remove(content.getWorksheets().get_Item(0).getShapes().get_Item(0));
+
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetRemoveTextShapesWithParticularTextFormatting.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetRemoveTextShapesWithParticularTextFormatting.java
new file mode 100644
index 0000000..630d21c
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetRemoveTextShapesWithParticularTextFormatting.java
@@ -0,0 +1,40 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.contents.SpreadsheetWorksheet;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+import com.groupdocs.watermark.search.FormattedTextFragment;
+import com.groupdocs.watermark.watermarks.Color;
+
+public class SpreadsheetRemoveTextShapesWithParticularTextFormatting {
+ /**
+ * This example shows how to find and remove the shapes with a particular text formatting from an Excel document.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+ for (SpreadsheetWorksheet section : content.getWorksheets())
+ {
+ for (int i = section.getShapes().getCount() - 1; i >= 0; i--)
+ {
+ for (FormattedTextFragment fragment : section.getShapes().get_Item(i).getFormattedTextFragments())
+ {
+ if (fragment.getForegroundColor().equals(Color.getRed()) && fragment.getFont().getFamilyName() == "Arial")
+ {
+ section.getShapes().removeAt(i);
+ break;
+ }
+ }
+ }
+ }
+
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetRemoveWorksheetBackground.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetRemoveWorksheetBackground.java
new file mode 100644
index 0000000..cfc182d
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetRemoveWorksheetBackground.java
@@ -0,0 +1,24 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+
+public class SpreadsheetRemoveWorksheetBackground {
+ /**
+ * This example shows how to remove the background of a particular worksheet.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+ content.getWorksheets().get_Item(0).setBackgroundImage(null);
+
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetReplaceImageOfParticularShapes.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetReplaceImageOfParticularShapes.java
new file mode 100644
index 0000000..93f7015
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetReplaceImageOfParticularShapes.java
@@ -0,0 +1,42 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import java.io.File;
+import java.io.FileInputStream;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.contents.SpreadsheetShape;
+import com.groupdocs.watermark.contents.SpreadsheetWatermarkableImage;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+
+public class SpreadsheetReplaceImageOfParticularShapes {
+ /**
+ * This examples shows how to replace the image of the particular shapes in an Excel Worksheet.
+ */
+ public static void run() throws Exception {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+
+ File file = new File(Constants.TestPng);
+ byte[] imageBytes = new byte[(int) file.length()];
+ FileInputStream inputStream = new FileInputStream(file);
+ inputStream.read(imageBytes);
+ inputStream.close();
+
+ for (SpreadsheetShape shape : content.getWorksheets().get_Item(0).getShapes())
+ {
+ if (shape.getImage() != null)
+ {
+ shape.setImage(new SpreadsheetWatermarkableImage(imageBytes));
+ }
+ }
+
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetReplaceTextForParticularShapes.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetReplaceTextForParticularShapes.java
new file mode 100644
index 0000000..528074e
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetReplaceTextForParticularShapes.java
@@ -0,0 +1,31 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.contents.SpreadsheetShape;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+
+public class SpreadsheetReplaceTextForParticularShapes {
+ /**
+ * This example shows how to replace text for particular shapes in an Excel Worksheet.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+ for (SpreadsheetShape shape : content.getWorksheets().get_Item(0).getShapes())
+ {
+ if (shape.getText() == " Aspose 2016")
+ {
+ shape.setText(" GroupDocs 2017");
+ }
+ }
+
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetReplaceTextWithFormattingForParticularShapes.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetReplaceTextWithFormattingForParticularShapes.java
new file mode 100644
index 0000000..f12b9c3
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetReplaceTextWithFormattingForParticularShapes.java
@@ -0,0 +1,35 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.contents.SpreadsheetShape;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+import com.groupdocs.watermark.watermarks.Color;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.FontStyle;
+
+public class SpreadsheetReplaceTextWithFormattingForParticularShapes {
+ /**
+ * This example shows how to replace the text of the shapes with formatted text.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+ for (SpreadsheetShape shape : content.getWorksheets().get_Item(0).getShapes())
+ {
+ if (shape.getText() == " Aspose 2016")
+ {
+ shape.getFormattedTextFragments().clear();
+ shape.getFormattedTextFragments().add(" GroupDocs 2017", new Font("Calibri", 19, FontStyle.Bold), Color.getRed(), Color.getAqua());
+ }
+ }
+
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetSearchImageInAttachment.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetSearchImageInAttachment.java
new file mode 100644
index 0000000..ec3945e
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetSearchImageInAttachment.java
@@ -0,0 +1,38 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.WatermarkerSettings;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+import com.groupdocs.watermark.search.ImageDctHashSearchCriteria;
+import com.groupdocs.watermark.search.ImageSearchCriteria;
+import com.groupdocs.watermark.search.PossibleWatermarkCollection;
+import com.groupdocs.watermark.search.SpreadsheetSearchableObjects;
+
+public class SpreadsheetSearchImageInAttachment {
+ /**
+ * This example shows how to search for all the images and watermarkable attachments in Excel document.
+ */
+ public static void run() {
+ // Consider only the attached images
+ WatermarkerSettings settings = new WatermarkerSettings();
+ settings.getSearchableObjects().setSpreadsheetSearchableObjects(SpreadsheetSearchableObjects.AttachedImages);
+
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions, settings);
+
+ // Specify sample image to compare document images with
+ ImageSearchCriteria criteria = new ImageDctHashSearchCriteria(Constants.AttachmentPng);
+
+ // Search for similar images
+ PossibleWatermarkCollection possibleWatermarks = watermarker.search(criteria);
+
+ // Remove or modify found image watermarks
+ // ...
+
+ System.out.println("Found " + possibleWatermarks.getCount() + " possible watermark(s).");
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetSetBackgroundImageForChart.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetSetBackgroundImageForChart.java
new file mode 100644
index 0000000..5301c3b
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetSetBackgroundImageForChart.java
@@ -0,0 +1,38 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.contents.SpreadsheetWatermarkableImage;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+
+public class SpreadsheetSetBackgroundImageForChart {
+ /**
+ * This example shows how to set the background image for a chart inside an Excel document.
+ */
+ public static void run() throws Exception {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+
+ File imageFile = new File(Constants.TestPng);
+ byte[] imageBytes = new byte[(int) imageFile.length()];
+ InputStream imageInputStream = new FileInputStream(imageFile);
+ imageInputStream.read(imageBytes);
+ imageInputStream.close();
+
+ content.getWorksheets().get_Item(0).getCharts().get_Item(0).getImageFillFormat().setBackgroundImage(new SpreadsheetWatermarkableImage(imageBytes));
+ content.getWorksheets().get_Item(0).getCharts().get_Item(0).getImageFillFormat().setTransparency(0.5);
+ content.getWorksheets().get_Item(0).getCharts().get_Item(0).getImageFillFormat().setTileAsTexture(true);
+
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetSetBackgroundImageForParticularShapes.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetSetBackgroundImageForParticularShapes.java
new file mode 100644
index 0000000..b15e527
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetSetBackgroundImageForParticularShapes.java
@@ -0,0 +1,44 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.contents.SpreadsheetShape;
+import com.groupdocs.watermark.contents.SpreadsheetWatermarkableImage;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+
+public class SpreadsheetSetBackgroundImageForParticularShapes {
+ /**
+ * This example shows how to set the background image for the particular shapes in an Excel Worksheet.
+ */
+ public static void run() throws Exception {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ File imageFile = new File(Constants.TestPng);
+ byte[] imageBytes = new byte[(int) imageFile.length()];
+ InputStream imageInputStream = new FileInputStream(imageFile);
+ imageInputStream.read(imageBytes);
+ imageInputStream.close();
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+ for (SpreadsheetShape shape : content.getWorksheets().get_Item(0).getShapes())
+ {
+ if (shape.getText() == " Aspose 2016")
+ {
+ shape.getImageFillFormat().setBackgroundImage(new SpreadsheetWatermarkableImage(imageBytes));
+ shape.getImageFillFormat().setTransparency(0.5);
+ shape.getImageFillFormat().setTileAsTexture(true);
+ }
+ }
+
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetUpdateShapeProperties.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetUpdateShapeProperties.java
new file mode 100644
index 0000000..000cf00
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_spreadsheets/SpreadsheetUpdateShapeProperties.java
@@ -0,0 +1,36 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_spreadsheets;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.SpreadsheetContent;
+import com.groupdocs.watermark.contents.SpreadsheetShape;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+
+public class SpreadsheetUpdateShapeProperties {
+ /**
+ * This example shows how to modify properties of particular shapes in an Excel Worksheet.
+ */
+ public static void run() {
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\spreadsheet.xlsx"
+ Watermarker watermarker = new Watermarker(Constants.InSpreadsheetXlsx, loadOptions);
+
+ SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
+ for (SpreadsheetShape shape : content.getWorksheets().get_Item(0).getShapes())
+ {
+ if (shape.getText() == " Aspose 2019")
+ {
+ shape.setAlternativeText("watermark");
+ shape.setRotateAngle(30);
+ shape.setX(200);
+ shape.setY(200);
+ shape.setWidth(400);
+ shape.setHeight(100);
+ }
+ }
+
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddImageWatermarkToAllHeaders.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddImageWatermarkToAllHeaders.java
new file mode 100644
index 0000000..328f550
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddImageWatermarkToAllHeaders.java
@@ -0,0 +1,37 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.WordProcessingContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+import com.groupdocs.watermark.options.WordProcessingWatermarkSectionOptions;
+import com.groupdocs.watermark.watermarks.ImageWatermark;
+
+public class WordProcessingAddImageWatermarkToAllHeaders {
+ /**
+ * This example shows how to add watermark with linking headers and footers.
+ */
+ public static void run() {
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ ImageWatermark watermark = new ImageWatermark(Constants.LargePng);
+
+ // Add watermark to all headers of the first section
+ WordProcessingWatermarkSectionOptions options = new WordProcessingWatermarkSectionOptions();
+ options.setSectionIndex(0);
+ watermarker.add(watermark, options);
+
+ // Link all other headers&footers to corresponding headers&footers of the first section
+ WordProcessingContent content = watermarker.getContent(WordProcessingContent.class);
+ for (int i = 1; i < content.getSections().getCount(); i++)
+ {
+ content.getSections().get_Item(i).getHeadersFooters().linkToPrevious(true);
+ }
+
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddLockedWatermarkToAllPages.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddLockedWatermarkToAllPages.java
new file mode 100644
index 0000000..4bacb26
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddLockedWatermarkToAllPages.java
@@ -0,0 +1,37 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+import com.groupdocs.watermark.options.WordProcessingLockType;
+import com.groupdocs.watermark.options.WordProcessingWatermarkPagesOptions;
+import com.groupdocs.watermark.watermarks.Color;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class WordProcessingAddLockedWatermarkToAllPages {
+ /**
+ * This example shows how to lock watermark in all pages.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ TextWatermark watermark = new TextWatermark("Watermark text", new Font("Arial", 19));
+ watermark.setForegroundColor(Color.getRed());
+
+ WordProcessingWatermarkPagesOptions options = new WordProcessingWatermarkPagesOptions();
+ options.setLocked(true);
+ options.setLockType(WordProcessingLockType.AllowOnlyFormFields);
+
+ // To protect with password
+ //options.setPassword("7654321");
+
+ watermarker.add(watermark, options);
+
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddLockedWatermarkToParticularPages.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddLockedWatermarkToParticularPages.java
new file mode 100644
index 0000000..57094d7
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddLockedWatermarkToParticularPages.java
@@ -0,0 +1,38 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+import com.groupdocs.watermark.options.WordProcessingLockType;
+import com.groupdocs.watermark.options.WordProcessingWatermarkPagesOptions;
+import com.groupdocs.watermark.watermarks.Color;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class WordProcessingAddLockedWatermarkToParticularPages {
+ /**
+ * This example shows how to lock watermark in particular pages.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ TextWatermark watermark = new TextWatermark("Watermark text", new Font("Arial", 19));
+ watermark.setForegroundColor(Color.getRed());
+
+ WordProcessingWatermarkPagesOptions options = new WordProcessingWatermarkPagesOptions();
+ options.setPageNumbers(new int[] { 1, 3 });
+ options.setLocked(true);
+ options.setLockType(WordProcessingLockType.AllowOnlyComments);
+
+ // To protect with password
+ //options.Password = "7654321";
+
+ watermarker.add(watermark, options);
+
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddLockedWatermarkToSection.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddLockedWatermarkToSection.java
new file mode 100644
index 0000000..d1f6402
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddLockedWatermarkToSection.java
@@ -0,0 +1,38 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+import com.groupdocs.watermark.options.WordProcessingLockType;
+import com.groupdocs.watermark.options.WordProcessingWatermarkSectionOptions;
+import com.groupdocs.watermark.watermarks.Color;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class WordProcessingAddLockedWatermarkToSection {
+ /**
+ * This example shows how to lock watermark in particular section.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ TextWatermark watermark = new TextWatermark("Watermark text", new Font("Arial", 19));
+ watermark.setForegroundColor(Color.getRed());
+
+ WordProcessingWatermarkSectionOptions options = new WordProcessingWatermarkSectionOptions();
+ options.setSectionIndex(0);
+ options.setLocked(true);
+ options.setLockType(WordProcessingLockType.ReadOnlyWithEditableContent);
+
+ // To protect with password
+ //options.setPassword("7654321");
+
+ watermarker.add(watermark, options);
+
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddWatermarkToParticularPage.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddWatermarkToParticularPage.java
new file mode 100644
index 0000000..7cdd857
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddWatermarkToParticularPage.java
@@ -0,0 +1,32 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.WordProcessingContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+import com.groupdocs.watermark.options.WordProcessingWatermarkPagesOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class WordProcessingAddWatermarkToParticularPage {
+ /**
+ * This example shows how to add watermark to a particular page of a Word document.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ TextWatermark textWatermark = new TextWatermark("DRAFT", new Font("Arial", 42));
+
+ // Add watermark to the last page
+ WordProcessingContent content = watermarker.getContent(WordProcessingContent.class);
+ WordProcessingWatermarkPagesOptions options = new WordProcessingWatermarkPagesOptions();
+ options.setPageNumbers(new int[] {content.getPageCount()});
+
+ watermarker.add(textWatermark, options);
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddWatermarkToSection.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddWatermarkToSection.java
new file mode 100644
index 0000000..afd300c
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddWatermarkToSection.java
@@ -0,0 +1,30 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+import com.groupdocs.watermark.options.WordProcessingWatermarkSectionOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class WordProcessingAddWatermarkToSection {
+ /**
+ * This example shows how to add watermark to the headers of a particular section.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 19));
+
+ // Add watermark to all headers of the first section
+ WordProcessingWatermarkSectionOptions options = new WordProcessingWatermarkSectionOptions();
+ options.setSectionIndex(0);
+ watermarker.add(watermark, options);
+
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddWatermarkToSectionImages.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddWatermarkToSectionImages.java
new file mode 100644
index 0000000..2a7864c
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddWatermarkToSectionImages.java
@@ -0,0 +1,45 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.contents.WatermarkableImage;
+import com.groupdocs.watermark.contents.WatermarkableImageCollection;
+import com.groupdocs.watermark.contents.WordProcessingContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.SizingType;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class WordProcessingAddWatermarkToSectionImages {
+ /**
+ * This example shows how to add watermark to the images that belong to a particular section.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
+ watermark.setHorizontalAlignment(HorizontalAlignment.Center);
+ watermark.setVerticalAlignment(VerticalAlignment.Center);
+ watermark.setRotateAngle(45);
+ watermark.setSizingType(SizingType.ScaleToParentDimensions);
+ watermark.setScaleFactor(1);
+
+ // Get all images belonging to the first section
+ WordProcessingContent content = watermarker.getContent(WordProcessingContent.class);
+ WatermarkableImageCollection images = content.getSections().get_Item(0).findImages();
+
+ // Add watermark to all found images
+ for (WatermarkableImage image : images)
+ {
+ image.add(watermark);
+ }
+
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddWatermarkToShapeImages.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddWatermarkToShapeImages.java
new file mode 100644
index 0000000..5b6edf6
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddWatermarkToShapeImages.java
@@ -0,0 +1,49 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.contents.WordProcessingContent;
+import com.groupdocs.watermark.contents.WordProcessingSection;
+import com.groupdocs.watermark.contents.WordProcessingShape;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.SizingType;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class WordProcessingAddWatermarkToShapeImages {
+ /**
+ * This example shows how to add watermark to images in a document.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ TextWatermark watermark = new TextWatermark("Protected image", new Font("Arial", 8));
+ watermark.setHorizontalAlignment(HorizontalAlignment.Center);
+ watermark.setVerticalAlignment(VerticalAlignment.Center);
+ watermark.setRotateAngle(45);
+ watermark.setSizingType(SizingType.ScaleToParentDimensions);
+ watermark.setScaleFactor(1);
+
+ WordProcessingContent content = watermarker.getContent(WordProcessingContent.class);
+ for (WordProcessingSection section : content.getSections())
+ {
+ for (WordProcessingShape shape : section.getShapes())
+ {
+ // Headers&Footers usually contains only service information.
+ // So, we skip images in headers/footers, expecting that they are probably watermarks or backgrounds
+ if (shape.getHeaderFooter() == null && shape.getImage() != null)
+ {
+ shape.getImage().add(watermark);
+ }
+ }
+ }
+
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddWatermarkWithImageEffects.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddWatermarkWithImageEffects.java
new file mode 100644
index 0000000..304cb48
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddWatermarkWithImageEffects.java
@@ -0,0 +1,38 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingImageEffects;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+import com.groupdocs.watermark.options.WordProcessingWatermarkSectionOptions;
+import com.groupdocs.watermark.watermarks.Color;
+import com.groupdocs.watermark.watermarks.ImageWatermark;
+
+public class WordProcessingAddWatermarkWithImageEffects {
+ /**
+ * This example shows how to apply image effects to the shape watermarks.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ ImageWatermark watermark = new ImageWatermark(Constants.LogoPng);
+
+ WordProcessingImageEffects effects = new WordProcessingImageEffects();
+ effects.setBrightness(0.7);
+ effects.setContrast(0.6);
+ effects.setChromaKey(Color.getRed());
+ effects.getBorderLineFormat().setEnabled(true);
+ effects.getBorderLineFormat().setWeight(1);
+
+ WordProcessingWatermarkSectionOptions options = new WordProcessingWatermarkSectionOptions();
+ options.setEffects(effects);
+
+ watermarker.add(watermark, options);
+
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddWatermarkWithShapeSettings.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddWatermarkWithShapeSettings.java
new file mode 100644
index 0000000..148edf0
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddWatermarkWithShapeSettings.java
@@ -0,0 +1,45 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+import com.groupdocs.watermark.options.WordProcessingWatermarkSectionOptions;
+import com.groupdocs.watermark.watermarks.Color;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class WordProcessingAddWatermarkWithShapeSettings {
+ /**
+ * This example shows how to set some additional options when adding shape watermark to a Word document.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 19));
+
+ //Some settings for watermark
+ watermark.setVerticalAlignment(VerticalAlignment.Center);
+ watermark.setHorizontalAlignment(HorizontalAlignment.Center);
+ watermark.setRotateAngle(25.0);
+ watermark.setForegroundColor(Color.getRed());
+ watermark.setOpacity(1.0);
+
+ WordProcessingWatermarkSectionOptions options = new WordProcessingWatermarkSectionOptions();
+
+ // Set the shape name
+ options.setName("Shape 1");
+
+ // Set the descriptive (alternative) text that will be associated with the shape
+ options.setAlternativeText("Test watermark");
+
+ watermarker.add(watermark, options);
+
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddWatermarkWithTextEffects.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddWatermarkWithTextEffects.java
new file mode 100644
index 0000000..9c0d468
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingAddWatermarkWithTextEffects.java
@@ -0,0 +1,40 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.OfficeDashStyle;
+import com.groupdocs.watermark.contents.OfficeLineStyle;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+import com.groupdocs.watermark.options.WordProcessingTextEffects;
+import com.groupdocs.watermark.options.WordProcessingWatermarkSectionOptions;
+import com.groupdocs.watermark.watermarks.Color;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class WordProcessingAddWatermarkWithTextEffects {
+ /**
+ * This example shows how to apply some text effects to the shape watermarks.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 19));
+
+ WordProcessingTextEffects effects = new WordProcessingTextEffects();
+ effects.getLineFormat().setEnabled(true);
+ effects.getLineFormat().setColor(Color.getRed());
+ effects.getLineFormat().setDashStyle(OfficeDashStyle.DashDotDot);
+ effects.getLineFormat().setLineStyle(OfficeLineStyle.Triple);
+ effects.getLineFormat().setWeight(1);
+
+ WordProcessingWatermarkSectionOptions options = new WordProcessingWatermarkSectionOptions();
+ options.setEffects(effects);
+
+ watermarker.add(watermark, options);
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingFindWatermarkInHeaderFooter.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingFindWatermarkInHeaderFooter.java
new file mode 100644
index 0000000..5571132
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingFindWatermarkInHeaderFooter.java
@@ -0,0 +1,42 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.OfficeHeaderFooterType;
+import com.groupdocs.watermark.contents.WordProcessingContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+import com.groupdocs.watermark.search.ImageDctHashSearchCriteria;
+import com.groupdocs.watermark.search.ImageSearchCriteria;
+import com.groupdocs.watermark.search.PossibleWatermarkCollection;
+import com.groupdocs.watermark.search.TextSearchCriteria;
+
+public class WordProcessingFindWatermarkInHeaderFooter {
+ /**
+ * This example shows how to search for particular header/footer.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ // Initialize search criteria
+ ImageSearchCriteria imageSearchCriteria = new ImageDctHashSearchCriteria(Constants.LogoPng);
+ TextSearchCriteria textSearchCriteria = new TextSearchCriteria("Company Name");
+
+ WordProcessingContent content = watermarker.getContent(WordProcessingContent.class);
+ PossibleWatermarkCollection possibleWatermarks = content
+ .getSections().get_Item(0)
+ .getHeadersFooters().getByOfficeHeaderFooterType(OfficeHeaderFooterType.HeaderPrimary)
+ .search(textSearchCriteria.or(imageSearchCriteria));
+
+ // Remove all found watermarks
+ for (int i = possibleWatermarks.getCount() - 1; i >= 0; i--)
+ {
+ possibleWatermarks.removeAt(i);
+ }
+
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingGetSectionProperties.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingGetSectionProperties.java
new file mode 100644
index 0000000..a66b1a3
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingGetSectionProperties.java
@@ -0,0 +1,28 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.WordProcessingContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+
+public class WordProcessingGetSectionProperties {
+ /**
+ * This example shows how to get some page properties for a section.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ WordProcessingContent content = watermarker.getContent(WordProcessingContent.class);
+
+ System.out.println(content.getSections().get_Item(0).getPageSetup().getWidth());
+ System.out.println(content.getSections().get_Item(0).getPageSetup().getHeight());
+ System.out.println(content.getSections().get_Item(0).getPageSetup().getTopMargin());
+ System.out.println(content.getSections().get_Item(0).getPageSetup().getRightMargin());
+ System.out.println(content.getSections().get_Item(0).getPageSetup().getBottomMargin());
+ System.out.println(content.getSections().get_Item(0).getPageSetup().getLeftMargin());
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingGetShapesInformation.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingGetShapesInformation.java
new file mode 100644
index 0000000..f9f99cf
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingGetShapesInformation.java
@@ -0,0 +1,55 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.WordProcessingContent;
+import com.groupdocs.watermark.contents.WordProcessingSection;
+import com.groupdocs.watermark.contents.WordProcessingShape;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+
+public class WordProcessingGetShapesInformation {
+ /**
+ * This example shows how to extract the information about all the shapes.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ WordProcessingContent content = watermarker.getContent(WordProcessingContent.class);
+ for (WordProcessingSection section : content.getSections())
+ {
+ for (WordProcessingShape shape : section.getShapes())
+ {
+ if (shape.getHeaderFooter() != null)
+ {
+ System.out.println("In header/footer");
+ }
+
+ System.out.println(shape.getShapeType());
+ System.out.println(shape.getWidth());
+ System.out.println(shape.getHeight());
+ System.out.println(shape.isWordArt());
+ System.out.println(shape.getRotateAngle());
+ System.out.println(shape.getAlternativeText());
+ System.out.println(shape.getName());
+ System.out.println(shape.getX());
+ System.out.println(shape.getY());
+ System.out.println(shape.getText());
+ if (shape.getImage() != null)
+ {
+ System.out.println(shape.getImage().getWidth());
+ System.out.println(shape.getImage().getHeight());
+ System.out.println(shape.getImage().getBytes().length);
+ }
+
+ System.out.println(shape.getHorizontalAlignment());
+ System.out.println(shape.getVerticalAlignment());
+ System.out.println(shape.getRelativeHorizontalPosition());
+ System.out.println(shape.getRelativeVerticalPosition());
+ }
+ }
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingLinkAllHeaderFooterInSection.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingLinkAllHeaderFooterInSection.java
new file mode 100644
index 0000000..18d2e0e
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingLinkAllHeaderFooterInSection.java
@@ -0,0 +1,26 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.WordProcessingContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+
+public class WordProcessingLinkAllHeaderFooterInSection {
+ /**
+ * This example shows how to link all the headers/footers in a particular section.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ WordProcessingContent content = watermarker.getContent(WordProcessingContent.class);
+
+ // Link footer for even numbered pages to corresponding footer in previous section
+ content.getSections().get_Item(1).getHeadersFooters().get_Item(1).setLinkedToPrevious(true);
+
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingLinkHeaderFooterInSection.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingLinkHeaderFooterInSection.java
new file mode 100644
index 0000000..2971314
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingLinkHeaderFooterInSection.java
@@ -0,0 +1,27 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.OfficeHeaderFooterType;
+import com.groupdocs.watermark.contents.WordProcessingContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+
+public class WordProcessingLinkHeaderFooterInSection {
+ /**
+ * This example shows how to link the header/footer.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ WordProcessingContent content = watermarker.getContent(WordProcessingContent.class);
+
+ // Link footer for even numbered pages to corresponding footer in previous section
+ content.getSections().get_Item(1).getHeadersFooters().getByOfficeHeaderFooterType(OfficeHeaderFooterType.FooterEven).setLinkedToPrevious(true);
+
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingModifyShapeProperties.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingModifyShapeProperties.java
new file mode 100644
index 0000000..2ea5ba4
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingModifyShapeProperties.java
@@ -0,0 +1,40 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.WordProcessingContent;
+import com.groupdocs.watermark.contents.WordProcessingShape;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+
+public class WordProcessingModifyShapeProperties {
+ /**
+ * This example shows how to modify properties of particular shapes in a Word document.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ WordProcessingContent content = watermarker.getContent(WordProcessingContent.class);
+
+ // Change shape properties
+ for (WordProcessingShape shape : content.getSections().get_Item(0).getShapes())
+ {
+ if (shape.getText().contains("Some text"))
+ {
+ shape.setAlternativeText("watermark");
+ shape.setRotateAngle(30);
+ shape.setX(200);
+ shape.setY(200);
+ shape.setHeight(100);
+ shape.setWidth(400);
+ shape.setBehindText(false);
+ }
+ }
+
+ // Save document
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingProtectDocument.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingProtectDocument.java
new file mode 100644
index 0000000..6b6480f
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingProtectDocument.java
@@ -0,0 +1,26 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.WordProcessingContent;
+import com.groupdocs.watermark.contents.WordProcessingProtectionType;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+
+public class WordProcessingProtectDocument {
+ /**
+ * This example shows how to protect a Word document with the password.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ WordProcessingContent content = watermarker.getContent(WordProcessingContent.class);
+
+ content.protect(WordProcessingProtectionType.ReadOnly, "7654321");
+
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingRemoveHyperlinks.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingRemoveHyperlinks.java
new file mode 100644
index 0000000..afb3f39
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingRemoveHyperlinks.java
@@ -0,0 +1,29 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.WordProcessingContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+
+public class WordProcessingRemoveHyperlinks {
+ /**
+ * This example shows how to remove/replace hyperlink associated with a particular shape inside a Word document.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ WordProcessingContent content = watermarker.getContent(WordProcessingContent.class);
+
+ // Replace hyperlink
+ content.getSections().get_Item(0).getShapes().get_Item(0).setHyperlink("https://www.groupdocs.com/");
+
+ // Remove hyperlink
+ content.getSections().get_Item(0).getShapes().get_Item(1).setHyperlink(null);
+
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingRemoveShape.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingRemoveShape.java
new file mode 100644
index 0000000..5be0674
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingRemoveShape.java
@@ -0,0 +1,29 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.WordProcessingContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+
+public class WordProcessingRemoveShape {
+ /**
+ * This example shows how to remove a particular shape from a Word document.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ WordProcessingContent content = watermarker.getContent(WordProcessingContent.class);
+
+ // Remove shape by index
+ content.getSections().get_Item(0).getShapes().removeAt(0);
+
+ // Remove shape by reference
+ content.getSections().get_Item(0).getShapes().remove(content.getSections().get_Item(0).getShapes().get_Item(0));
+
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingRemoveShapesWithParticularTextFormatting.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingRemoveShapesWithParticularTextFormatting.java
new file mode 100644
index 0000000..062432d
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingRemoveShapesWithParticularTextFormatting.java
@@ -0,0 +1,40 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.WordProcessingContent;
+import com.groupdocs.watermark.contents.WordProcessingSection;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+import com.groupdocs.watermark.search.FormattedTextFragment;
+import com.groupdocs.watermark.watermarks.Color;
+
+public class WordProcessingRemoveShapesWithParticularTextFormatting {
+ /**
+ * This example shows how to find and remove the shapes with a particular text formatting.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ WordProcessingContent content = watermarker.getContent(WordProcessingContent.class);
+ for (WordProcessingSection section : content.getSections())
+ {
+ for (int i = section.getShapes().getCount() - 1; i >= 0; i--)
+ {
+ for (FormattedTextFragment fragment : section.getShapes().get_Item(i).getFormattedTextFragments())
+ {
+ if (fragment.getForegroundColor().equals(Color.getRed()) && fragment.getFont().getFamilyName() == "Arial")
+ {
+ section.getShapes().removeAt(i);
+ break;
+ }
+ }
+ }
+ }
+
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingRemoveWatermarkFromSection.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingRemoveWatermarkFromSection.java
new file mode 100644
index 0000000..ab04259
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingRemoveWatermarkFromSection.java
@@ -0,0 +1,39 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.WordProcessingContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+import com.groupdocs.watermark.search.ImageDctHashSearchCriteria;
+import com.groupdocs.watermark.search.ImageSearchCriteria;
+import com.groupdocs.watermark.search.PossibleWatermarkCollection;
+import com.groupdocs.watermark.search.TextSearchCriteria;
+
+public class WordProcessingRemoveWatermarkFromSection {
+ /**
+ * This example shows how to remove watermark from a particular section.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ // Initialize search criteria
+ ImageSearchCriteria imageSearchCriteria = new ImageDctHashSearchCriteria(Constants.LogoPng);
+ TextSearchCriteria textSearchCriteria = new TextSearchCriteria("Company Name");
+
+ // Call Search method for the section
+ WordProcessingContent content = watermarker.getContent(WordProcessingContent.class);
+ PossibleWatermarkCollection possibleWatermarks = content.getSections().get_Item(0).search(textSearchCriteria.or(imageSearchCriteria));
+
+ // Remove all found watermarks
+ for (int i = possibleWatermarks.getCount() - 1; i >= 0; i--)
+ {
+ possibleWatermarks.removeAt(i);
+ }
+
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingReplaceShapeImage.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingReplaceShapeImage.java
new file mode 100644
index 0000000..e561ba5
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingReplaceShapeImage.java
@@ -0,0 +1,45 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.WordProcessingContent;
+import com.groupdocs.watermark.contents.WordProcessingShape;
+import com.groupdocs.watermark.contents.WordProcessingWatermarkableImage;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+
+public class WordProcessingReplaceShapeImage {
+ /**
+ * This example shows how to replace the image of the particular shapes in a Word document.
+ */
+ public static void run() throws Exception {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ WordProcessingContent content = watermarker.getContent(WordProcessingContent.class);
+
+ File imageFile = new File(Constants.TestPng);
+ byte[] imageBytes = new byte[(int) imageFile.length()];
+ InputStream imageInputStream = new FileInputStream(imageFile);
+ imageInputStream.read(imageBytes);
+ imageInputStream.close();
+
+ // Set shape image
+ for (WordProcessingShape shape : content.getSections().get_Item(0).getShapes())
+ {
+ if (shape.getImage() != null)
+ {
+ shape.setImage(new WordProcessingWatermarkableImage(imageBytes));
+ }
+ }
+
+ // Save document
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingReplaceShapeTextWithFormattedText.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingReplaceShapeTextWithFormattedText.java
new file mode 100644
index 0000000..7c29951
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingReplaceShapeTextWithFormattedText.java
@@ -0,0 +1,38 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.WordProcessingContent;
+import com.groupdocs.watermark.contents.WordProcessingShape;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+import com.groupdocs.watermark.watermarks.Color;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.FontStyle;
+
+public class WordProcessingReplaceShapeTextWithFormattedText {
+ /**
+ * This example shows how to replace the text of the shapes with formatted text.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ WordProcessingContent content = watermarker.getContent(WordProcessingContent.class);
+
+ // Set shape's text
+ for (WordProcessingShape shape : content.getSections().get_Item(0).getShapes())
+ {
+ if (shape.getText().contains("Some text"))
+ {
+ shape.getFormattedTextFragments().clear();
+ shape.getFormattedTextFragments().add("Another text", new Font("Calibri", 19, FontStyle.Bold), Color.getRed(), Color.getAqua());
+ }
+ }
+
+ // Save document
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingReplaceTextForParticularShape.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingReplaceTextForParticularShape.java
new file mode 100644
index 0000000..195277b
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingReplaceTextForParticularShape.java
@@ -0,0 +1,34 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.WordProcessingContent;
+import com.groupdocs.watermark.contents.WordProcessingShape;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+
+public class WordProcessingReplaceTextForParticularShape {
+ /**
+ * This example shows how to replace text for particular shapes in a Word document.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ WordProcessingContent content = watermarker.getContent(WordProcessingContent.class);
+
+ // Set shape's text
+ for (WordProcessingShape shape : content.getSections().get_Item(0).getShapes())
+ {
+ if (shape.getText().contains("Some text"))
+ {
+ shape.setText("Another text");
+ }
+ }
+
+ // Save document
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingSetDifferentFirstPageHeaderFooter.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingSetDifferentFirstPageHeaderFooter.java
new file mode 100644
index 0000000..3f1644e
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingSetDifferentFirstPageHeaderFooter.java
@@ -0,0 +1,26 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.WordProcessingContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+
+public class WordProcessingSetDifferentFirstPageHeaderFooter {
+ /**
+ * This example shows how to set different headers/footers for even/odd numbered pages and for the first page of the document.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ WordProcessingContent content = watermarker.getContent(WordProcessingContent.class);
+
+ content.getSections().get_Item(0).getPageSetup().setDifferentFirstPageHeaderFooter(true);
+ content.getSections().get_Item(0).getPageSetup().setOddAndEvenPagesHeaderFooter(true);
+
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingShapeTypeUsage.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingShapeTypeUsage.java
new file mode 100644
index 0000000..d89ce36
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingShapeTypeUsage.java
@@ -0,0 +1,43 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.WordProcessingContent;
+import com.groupdocs.watermark.contents.WordProcessingSection;
+import com.groupdocs.watermark.contents.WordProcessingShape;
+import com.groupdocs.watermark.contents.WordProcessingShapeType;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+import com.groupdocs.watermark.watermarks.Color;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.FontStyle;
+
+public class WordProcessingShapeTypeUsage {
+ /**
+ * This example demonstrates the usage of WordProcessingShapeType enum.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ WordProcessingContent content = watermarker.getContent(WordProcessingContent.class);
+ for (WordProcessingSection section : content.getSections())
+ {
+ for (WordProcessingShape shape : section.getShapes())
+ {
+ //Check for Diagonal Corners Rounded shapes
+ if (shape.getShapeType() == WordProcessingShapeType.DiagonalCornersRounded)
+ {
+ System.out.println("Diagonal Corners Rounded shape found");
+
+ //Write text on all Diagonal Corners Rounded shapes
+ shape.getFormattedTextFragments().add("I am Diagonal Corner Rounded", new Font("Calibri", 8, FontStyle.Bold), Color.getRed(), Color.getAqua());
+ }
+ }
+ }
+
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingUnProtectDocument.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingUnProtectDocument.java
new file mode 100644
index 0000000..dcbae11
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/add_watermarks_to_word_processing/WordProcessingUnProtectDocument.java
@@ -0,0 +1,25 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.add_watermarks_to_word_processing;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.contents.WordProcessingContent;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+
+public class WordProcessingUnProtectDocument {
+ /**
+ * This example shows how to unprotect a Word document regardless of password.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.docx"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentDocx, loadOptions);
+
+ WordProcessingContent content = watermarker.getContent(WordProcessingContent.class);
+
+ content.unprotect();
+
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_image_watermarks/AddImageWatermark.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_image_watermarks/AddImageWatermark.java
new file mode 100644
index 0000000..9242175
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_image_watermarks/AddImageWatermark.java
@@ -0,0 +1,26 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.adding_image_watermarks;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.watermarks.ImageWatermark;
+
+public class AddImageWatermark {
+ /**
+ * This example shows how to add image watermark from a local file.
+ */
+ public static void run() {
+ // Constants.InPresentationPptx is an absolute or relative path to your document. Ex: "C:\\Docs\\presentation.pptx"
+ Watermarker watermarker = new Watermarker(Constants.InPresentationPptx);
+
+ // Use path to the image as constructor parameter
+ ImageWatermark watermark = new ImageWatermark(Constants.WatermarkJpg);
+
+ // Add watermark to the document
+ watermarker.add(watermark);
+
+ watermarker.save(Constants.OutPresentationPptx);
+
+ watermark.close();
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_image_watermarks/AddImageWatermarkUsingStream.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_image_watermarks/AddImageWatermarkUsingStream.java
new file mode 100644
index 0000000..02ec9a7
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_image_watermarks/AddImageWatermarkUsingStream.java
@@ -0,0 +1,31 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.adding_image_watermarks;
+
+import java.io.FileInputStream;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.watermarks.ImageWatermark;
+
+public class AddImageWatermarkUsingStream {
+ /**
+ * This example shows how to an image watermark from stream.
+ */
+ public static void run() throws Exception {
+ // Constants.WatermarkJpg is an absolute or relative path to your document. Ex: "C:\\Docs\\watermark.jpg"
+ FileInputStream watermarkStream = new FileInputStream(Constants.WatermarkJpg);
+
+ Watermarker watermarker = new Watermarker(Constants.InImagePng);
+
+ // Use stream containing an image as constructor parameter
+ ImageWatermark watermark = new ImageWatermark(watermarkStream);
+
+ // Add watermark to the document
+ watermarker.add(watermark);
+
+ watermarker.save(Constants.OutImagePng);
+
+ watermark.close();
+ watermarker.close();
+ watermarkStream.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_text_watermarks/AddTextWatermark.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_text_watermarks/AddTextWatermark.java
new file mode 100644
index 0000000..0480308
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_text_watermarks/AddTextWatermark.java
@@ -0,0 +1,38 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.adding_text_watermarks;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.watermarks.Color;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.FontStyle;
+import com.groupdocs.watermark.watermarks.TextAlignment;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class AddTextWatermark {
+ /**
+ * This example shows how to add text watermark to a document.
+ */
+ public static void run() {
+ // Constants.InImagePng is an absolute or relative path to your document. Ex: "C:\\Docs\\image.png"
+ Watermarker watermarker = new Watermarker(Constants.InImagePng);
+
+ // Initialize the font to be used for watermark
+ Font font = new Font("Arial", 19, FontStyle.Bold | FontStyle.Italic);
+
+ // Create the watermark object
+ TextWatermark watermark = new TextWatermark("Test watermark", font);
+
+ // Set watermark properties
+ watermark.setForegroundColor(Color.getRed());
+ watermark.setBackgroundColor(Color.getBlue());
+ watermark.setTextAlignment(TextAlignment.Right);
+ watermark.setOpacity(0.5);
+
+ // Add watermark
+ watermarker.add(watermark);
+
+ watermarker.save(Constants.OutImagePng);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_text_watermarks/AddTextWatermarkWithRotationAngle.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_text_watermarks/AddTextWatermarkWithRotationAngle.java
new file mode 100644
index 0000000..0647e31
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_text_watermarks/AddTextWatermarkWithRotationAngle.java
@@ -0,0 +1,34 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.adding_text_watermarks;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.SizingType;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class AddTextWatermarkWithRotationAngle {
+ /**
+ * This example show how to rotate a watermark.
+ */
+ public static void run() {
+ // Constants.InTestDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\test.docx"
+ Watermarker watermarker = new Watermarker(Constants.InTestDocx);
+
+ Font font = new Font("Calibri", 8);
+ TextWatermark watermark = new TextWatermark("Test watermark", font);
+ watermark.setHorizontalAlignment(HorizontalAlignment.Right);
+ watermark.setVerticalAlignment(VerticalAlignment.Top);
+ watermark.setSizingType(SizingType.ScaleToParentDimensions);
+ watermark.setScaleFactor(0.5);
+
+ // Set rotation angle
+ watermark.setRotateAngle(45);
+
+ watermarker.add(watermark);
+ watermarker.save(Constants.OutTestDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_text_watermarks/AddWatermarkToAbsolutePosition.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_text_watermarks/AddWatermarkToAbsolutePosition.java
new file mode 100644
index 0000000..c611ef5
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_text_watermarks/AddWatermarkToAbsolutePosition.java
@@ -0,0 +1,32 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.adding_text_watermarks;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class AddWatermarkToAbsolutePosition {
+ /**
+ * This example shows how to add a text watermark with absolute positioning.
+ */
+ public static void run() {
+ // Constants.InImagePng is an absolute or relative path to your document. Ex: "C:\\Docs\\image.png"
+ Watermarker watermarker = new Watermarker(Constants.InImagePng);
+
+ Font font = new Font("Times New Roman", 8);
+ TextWatermark watermark = new TextWatermark("Test watermark", font);
+
+ // Set watermark coordinates
+ watermark.setX(10);
+ watermark.setY(20);
+
+ // Set watermark size
+ watermark.setWidth(100);
+ watermark.setHeight(40);
+
+ watermarker.add(watermark);
+ watermarker.save(Constants.OutImagePng);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_text_watermarks/AddWatermarkToRelativePosition.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_text_watermarks/AddWatermarkToRelativePosition.java
new file mode 100644
index 0000000..d7a58c5
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_text_watermarks/AddWatermarkToRelativePosition.java
@@ -0,0 +1,32 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.adding_text_watermarks;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class AddWatermarkToRelativePosition {
+ /**
+ * This example shows how to align the watermark vertically and horizontally.
+ */
+ public static void run() {
+ // Constants.InImagePng is an absolute or relative path to your document. Ex: "C:\\Docs\\image.png
+ Watermarker watermarker = new Watermarker(Constants.InImagePng);
+
+ Font font = new Font("Calibri", 12);
+ TextWatermark watermark = new TextWatermark("Test watermark", font);
+ watermark.setHorizontalAlignment(HorizontalAlignment.Right);
+ watermark.setVerticalAlignment(VerticalAlignment.Bottom);
+
+ // Set absolute margins. Values are measured in document units.
+ watermark.getMargins().setRight(10);
+ watermark.getMargins().setBottom(5);
+
+ watermarker.add(watermark);
+ watermarker.save(Constants.OutImagePng);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_text_watermarks/AddWatermarkWithMarginType.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_text_watermarks/AddWatermarkWithMarginType.java
new file mode 100644
index 0000000..d7f2a92
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_text_watermarks/AddWatermarkWithMarginType.java
@@ -0,0 +1,36 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.adding_text_watermarks;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.MarginType;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class AddWatermarkWithMarginType {
+ /**
+ * This example shows how to set relative margins for a watermark.
+ */
+ public static void run() {
+ // Constants.InImagePng is an absolute or relative path to your document. Ex: "C:\\Docs\\image.png"
+ Watermarker watermarker = new Watermarker(Constants.InImagePng);
+
+ Font font = new Font("Calibri", 12);
+ TextWatermark watermark = new TextWatermark("Test watermark", font);
+ watermark.setHorizontalAlignment(HorizontalAlignment.Right);
+ watermark.setVerticalAlignment(VerticalAlignment.Bottom);
+
+ // Set relative margins. Margin value will be interpreted as a portion
+ // of appropriate parent dimension. If this type is chosen, margin value
+ // must be between 0.0 and 1.0.
+ watermark.getMargins().setMarginType(MarginType.RelativeToParentDimensions);
+ watermark.getMargins().setRight(0.1);
+ watermark.getMargins().setBottom(0.2);
+
+ watermarker.add(watermark);
+ watermarker.save(Constants.OutImagePng);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_text_watermarks/AddWatermarkWithParentMargin.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_text_watermarks/AddWatermarkWithParentMargin.java
new file mode 100644
index 0000000..f9573bb
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_text_watermarks/AddWatermarkWithParentMargin.java
@@ -0,0 +1,37 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.adding_text_watermarks;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.watermarks.Color;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.SizingType;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class AddWatermarkWithParentMargin {
+ /**
+ * This example shows how to consider parent margins.
+ */
+ public static void run() {
+ // Constants.InInputVsdx is an absolute or relative path to your document. Ex: "C:\\Docs\\input.vsdx"
+ Watermarker watermarker = new Watermarker(Constants.InInputVsdx);
+
+ TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 42));
+ watermark.setHorizontalAlignment(HorizontalAlignment.Right);
+ watermark.setVerticalAlignment(VerticalAlignment.Top);
+ watermark.setSizingType(SizingType.ScaleToParentDimensions);
+ watermark.setScaleFactor(1);
+ watermark.setRotateAngle(45);
+ watermark.setForegroundColor(Color.getRed());
+ watermark.setBackgroundColor(Color.getAqua());
+
+ // Add watermark considering parent margins
+ watermark.setConsiderParentMargins(true);
+
+ watermarker.add(watermark);
+ watermarker.save(Constants.OutInputVsdx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_text_watermarks/AddWatermarkWithSizeType.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_text_watermarks/AddWatermarkWithSizeType.java
new file mode 100644
index 0000000..cd386ec
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/adding_watermarks/adding_text_watermarks/AddWatermarkWithSizeType.java
@@ -0,0 +1,31 @@
+package com.groupdocs.watermark.examples.advanced_usage.adding_watermarks.adding_text_watermarks;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.SizingType;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class AddWatermarkWithSizeType {
+ /**
+ * This example shows how to consider the size of the page/slide/frame on which a watermark will be placed.
+ */
+ public static void run() {
+ // Constants.InImagePng is an absolute or relative path to your document. Ex: "C:\\Docs\\image.png"
+ Watermarker watermarker = new Watermarker(Constants.InImagePng);
+
+ Font font = new Font("Calibri", 12);
+ TextWatermark watermark = new TextWatermark("This is a test watermark", font);
+
+ // Set sizing type
+ watermark.setSizingType(SizingType.ScaleToParentDimensions);
+
+ // Set watermark scale
+ watermark.setScaleFactor(0.5);
+
+ watermarker.add(watermark);
+ watermarker.save(Constants.OutImagePng);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/loading_documents/LoadFromLocalDisk.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/loading_documents/LoadFromLocalDisk.java
new file mode 100644
index 0000000..10d6a08
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/loading_documents/LoadFromLocalDisk.java
@@ -0,0 +1,23 @@
+package com.groupdocs.watermark.examples.advanced_usage.loading_documents;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class LoadFromLocalDisk {
+ /**
+ * This example demonstrates how to create a watermarker for a local filesystem document.
+ */
+ public static void run() {
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: @"C:\\Docs\\document.docx"
+ String filePath = Constants.InDocumentDocx;
+ Watermarker watermarker = new Watermarker(filePath);
+ // use watermarker methods to manage watermarks
+ TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 12));
+
+ watermarker.add(watermark);
+ watermarker.save(Constants.OutDocumentDocx);
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/loading_documents/LoadFromStream.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/loading_documents/LoadFromStream.java
new file mode 100644
index 0000000..682c45e
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/loading_documents/LoadFromStream.java
@@ -0,0 +1,29 @@
+package com.groupdocs.watermark.examples.advanced_usage.loading_documents;
+
+import java.io.FileInputStream;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class LoadFromStream {
+ /**
+ * This example demonstrates how to create a watermarker for a document stream.
+ */
+ public static void run() throws Exception {
+ // Constants.InDocumentDocx is an absolute or relative path to your document. Ex: @"C:\\Docs\\document.docx"
+ FileInputStream document = new FileInputStream(Constants.InDocumentDocx);
+ Watermarker watermarker = new Watermarker(document);
+
+ // use watermarker methods to manage watermarks
+ TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 12));
+
+ watermarker.add(watermark);
+
+ watermarker.save(Constants.OutDocumentDocx);
+
+ watermarker.close();
+ document.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/loading_documents/LoadPasswordProtectedDocument.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/loading_documents/LoadPasswordProtectedDocument.java
new file mode 100644
index 0000000..e53792d
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/loading_documents/LoadPasswordProtectedDocument.java
@@ -0,0 +1,29 @@
+package com.groupdocs.watermark.examples.advanced_usage.loading_documents;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.LoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class LoadPasswordProtectedDocument {
+ /**
+ * This example demonstrates how to load an encrypted document using the password.
+ */
+ public static void run() {
+ LoadOptions loadOptions = new LoadOptions();
+ loadOptions.setPassword("P@$$w0rd");
+ // Constants.InProtectedDocumentDocx is an absolute or relative path to your document. Ex: @"C:\\Docs\\protected-document.docx"
+ String filePath = Constants.InProtectedDocumentDocx;
+ Watermarker watermarker = new Watermarker(filePath, loadOptions);
+
+ // use watermarker methods to manage watermarks in the document
+ TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 12));
+
+ watermarker.add(watermark);
+
+ watermarker.save(Constants.OutProtectedDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/loading_documents/LoadPasswordProtectedWordProcessingDocument.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/loading_documents/LoadPasswordProtectedWordProcessingDocument.java
new file mode 100644
index 0000000..dde0218
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/loading_documents/LoadPasswordProtectedWordProcessingDocument.java
@@ -0,0 +1,29 @@
+package com.groupdocs.watermark.examples.advanced_usage.loading_documents;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.WordProcessingLoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class LoadPasswordProtectedWordProcessingDocument {
+ /**
+ * This example demonstrates how to load an encrypted WordProcessing document using the password.
+ */
+ public static void run() {
+ WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
+ loadOptions.setPassword("P@$$w0rd");
+ // Constants.InProtectedDocumentDocx is an absolute or relative path to your document. Ex: @"C:\\Docs\\protected-document.docx"
+ String filePath = Constants.InProtectedDocumentDocx;
+ Watermarker watermarker = new Watermarker(filePath, loadOptions);
+
+ // use watermarker methods to manage watermarks in the WordProcessing document
+ TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 12));
+
+ watermarker.add(watermark);
+
+ watermarker.save(Constants.OutProtectedDocumentDocx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/loading_documents/LoadingDocumentOfSpecificFormat.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/loading_documents/LoadingDocumentOfSpecificFormat.java
new file mode 100644
index 0000000..5d1b940
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/loading_documents/LoadingDocumentOfSpecificFormat.java
@@ -0,0 +1,28 @@
+package com.groupdocs.watermark.examples.advanced_usage.loading_documents;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.SpreadsheetLoadOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class LoadingDocumentOfSpecificFormat {
+ /**
+ * This example demonstrates how to create a watermarker for the Spreadsheet document.
+ */
+ public static void run() {
+ // Constants.InSpreadsheetXlsx is an absolute or relative path to your document. Ex: @"C:\\Docs\\spreadsheet.xlsx"
+ String filePath = Constants.InSpreadsheetXlsx;
+ SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
+ Watermarker watermarker = new Watermarker(filePath, loadOptions);
+
+ // use watermarker methods to manage watermarks in the Spreadsheet document
+ TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 12));
+
+ watermarker.add(watermark);
+
+ watermarker.save(Constants.OutSpreadsheetXlsx);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/saving_documents/SaveDocumentToTheSpecifiedLocation.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/saving_documents/SaveDocumentToTheSpecifiedLocation.java
new file mode 100644
index 0000000..f8e26b3
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/saving_documents/SaveDocumentToTheSpecifiedLocation.java
@@ -0,0 +1,25 @@
+package com.groupdocs.watermark.examples.advanced_usage.saving_documents;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class SaveDocumentToTheSpecifiedLocation {
+ /**
+ * This example shows how to save the document to the specified location.
+ */
+ public static void run() {
+ // Constants.InTestDoc is an absolute or relative path to your document. Ex: "C:\\Docs\\test.doc"
+ Watermarker watermarker = new Watermarker(Constants.InTestDoc);
+
+ // watermarking goes here
+ TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 12));
+ watermarker.add(watermark);
+
+ // Saves the document to the specified location
+ watermarker.save(Constants.OutTestDoc);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/saving_documents/SaveDocumentToTheSpecifiedStream.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/saving_documents/SaveDocumentToTheSpecifiedStream.java
new file mode 100644
index 0000000..5429069
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/saving_documents/SaveDocumentToTheSpecifiedStream.java
@@ -0,0 +1,30 @@
+package com.groupdocs.watermark.examples.advanced_usage.saving_documents;
+
+import java.io.ByteArrayOutputStream;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class SaveDocumentToTheSpecifiedStream {
+ /**
+ * This example shows how to save the document to the specified stream.
+ */
+ public static void run() throws Exception {
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+
+ // Constants.InTestDoc is an absolute or relative path to your document. Ex: "C:\\Docs\\test.doc"
+ Watermarker watermarker = new Watermarker(Constants.InTestDoc);
+
+ // watermarking goes here
+ TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 12));
+ watermarker.add(watermark);
+
+ // Saves the document to the specified stream
+ watermarker.save(outputStream);
+
+ watermarker.close();
+ outputStream.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/ModifyImageInFoundWatermarks.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/ModifyImageInFoundWatermarks.java
new file mode 100644
index 0000000..4d48e69
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/ModifyImageInFoundWatermarks.java
@@ -0,0 +1,51 @@
+package com.groupdocs.watermark.examples.advanced_usage.searching_and_modifying_watermarks;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.search.ImageDctHashSearchCriteria;
+import com.groupdocs.watermark.search.PossibleWatermark;
+import com.groupdocs.watermark.search.PossibleWatermarkCollection;
+import com.groupdocs.watermark.search.SearchCriteria;
+
+public class ModifyImageInFoundWatermarks {
+ /**
+ * This example shows how to replace the image of the found watermarks.
+ */
+ public static void run() throws Exception {
+ File imageFile = new File(Constants.ImagePng);
+ byte[] imageData = new byte[(int) imageFile.length()];
+ InputStream imageInputStream = new FileInputStream(imageFile);
+ imageInputStream.read(imageData);
+ imageInputStream.close();
+
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf);
+
+ // Search watermark matching a particular image
+ SearchCriteria searchCriteria = new ImageDctHashSearchCriteria(Constants.LogoBmp);
+ PossibleWatermarkCollection watermarks = watermarker.search(searchCriteria);
+ for (PossibleWatermark watermark : watermarks)
+ {
+ try
+ {
+ // Replace image
+ watermark.setImageData(imageData);
+ }
+ catch (Exception e)
+ {
+ // Found entity may not support image replacement
+ // Passed image can have inappropriate format
+ // Process such cases here
+ }
+ }
+
+ // Save document
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/ModifyTextInFoundWatermarks.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/ModifyTextInFoundWatermarks.java
new file mode 100644
index 0000000..c0090d7
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/ModifyTextInFoundWatermarks.java
@@ -0,0 +1,39 @@
+package com.groupdocs.watermark.examples.advanced_usage.searching_and_modifying_watermarks;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.search.PossibleWatermark;
+import com.groupdocs.watermark.search.PossibleWatermarkCollection;
+import com.groupdocs.watermark.search.TextSearchCriteria;
+
+public class ModifyTextInFoundWatermarks {
+ /**
+ * This example shows how to replace text of the found watermarks.
+ */
+ public static void run() {
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf);
+
+ TextSearchCriteria searchCriteria = new TextSearchCriteria("test", false);
+ PossibleWatermarkCollection watermarks = watermarker.search(searchCriteria);
+ for (PossibleWatermark watermark : watermarks)
+ {
+ try
+ {
+ // Edit text
+ watermark.setText("passed");
+ }
+ catch (Exception e)
+ {
+ // Found entity may not support text editing
+ // Passed argument can have inappropriate value
+ // Process such cases here
+ }
+ }
+
+ // Save document
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/ModifyTextWithFormattingInFoundWatermarks.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/ModifyTextWithFormattingInFoundWatermarks.java
new file mode 100644
index 0000000..55724e2
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/ModifyTextWithFormattingInFoundWatermarks.java
@@ -0,0 +1,43 @@
+package com.groupdocs.watermark.examples.advanced_usage.searching_and_modifying_watermarks;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.search.PossibleWatermark;
+import com.groupdocs.watermark.search.PossibleWatermarkCollection;
+import com.groupdocs.watermark.search.TextSearchCriteria;
+import com.groupdocs.watermark.watermarks.Color;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.FontStyle;
+
+public class ModifyTextWithFormattingInFoundWatermarks {
+ /**
+ * This example shows how to replace the watermark's text with formatting.
+ */
+ public static void run() {
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf);
+
+ TextSearchCriteria searchCriteria = new TextSearchCriteria("test", false);
+ PossibleWatermarkCollection watermarks = watermarker.search(searchCriteria);
+ for (PossibleWatermark watermark : watermarks)
+ {
+ try
+ {
+ // Edit text
+ watermark.getFormattedTextFragments().clear();
+ watermark.getFormattedTextFragments().add("passed", new Font("Calibri", 19, FontStyle.Bold), Color.getRed(), Color.getAqua());
+ }
+ catch (Exception e)
+ {
+ // Found entity may not support text editing
+ // Passed arguments can have inappropriate value
+ // Process such cases here
+ }
+ }
+
+ // Save document
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/RemoveHyperlinksWithParticularUrl.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/RemoveHyperlinksWithParticularUrl.java
new file mode 100644
index 0000000..919dbe2
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/RemoveHyperlinksWithParticularUrl.java
@@ -0,0 +1,37 @@
+package com.groupdocs.watermark.examples.advanced_usage.searching_and_modifying_watermarks;
+
+import java.util.regex.Pattern;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.search.HyperlinkPossibleWatermark;
+import com.groupdocs.watermark.search.PossibleWatermarkCollection;
+import com.groupdocs.watermark.search.TextSearchCriteria;
+
+public class RemoveHyperlinksWithParticularUrl {
+ /**
+ * This example shows how to search and remove hyperlinks in a document of any supported format.
+ */
+ public static void run() {
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf);
+
+ PossibleWatermarkCollection watermarks = watermarker.search(new TextSearchCriteria(Pattern.compile("someurl\\.com")));
+ for (int i = watermarks.getCount() - 1; i >= 0; i--)
+ {
+ // Ensure that only hyperlinks will be removed.
+ if (HyperlinkPossibleWatermark.class.isInstance(watermarks.get_Item(i)))
+ {
+ // Output the full url of the hyperlink
+ System.out.println(watermarks.get_Item(i).getText());
+
+ // Remove hyperlink from the document
+ watermarks.removeAt(i);
+ }
+ }
+
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/RemoveWatermark.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/RemoveWatermark.java
new file mode 100644
index 0000000..f837a32
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/RemoveWatermark.java
@@ -0,0 +1,27 @@
+package com.groupdocs.watermark.examples.advanced_usage.searching_and_modifying_watermarks;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.search.PossibleWatermarkCollection;
+
+public class RemoveWatermark {
+ /**
+ * This example shows how to find and remove a particular watermark from a document.
+ */
+ public static void run() {
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf);
+
+ PossibleWatermarkCollection possibleWatermarks = watermarker.search();
+
+ // Remove possible watermark at the specified index from the document.
+ possibleWatermarks.removeAt(0);
+
+ // Remove specified possible watermark from the document.
+ possibleWatermarks.remove(possibleWatermarks.get_Item(0));
+
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/RemoveWatermarkWithParticularTextFormatting.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/RemoveWatermarkWithParticularTextFormatting.java
new file mode 100644
index 0000000..3aaad4c
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/RemoveWatermarkWithParticularTextFormatting.java
@@ -0,0 +1,37 @@
+package com.groupdocs.watermark.examples.advanced_usage.searching_and_modifying_watermarks;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.search.ColorRange;
+import com.groupdocs.watermark.search.PossibleWatermarkCollection;
+import com.groupdocs.watermark.search.TextFormattingSearchCriteria;
+
+public class RemoveWatermarkWithParticularTextFormatting {
+ /**
+ * This example shows how to search and remove the watermarks on the basis of some particular text formatting.
+ */
+ public static void run() {
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf);
+
+ TextFormattingSearchCriteria criteria = new TextFormattingSearchCriteria();
+ criteria.setForegroundColorRange(new ColorRange());
+ criteria.getForegroundColorRange().setMinHue(-5);
+ criteria.getForegroundColorRange().setMaxHue(10);
+ criteria.getForegroundColorRange().setMinBrightness(0.01f);
+ criteria.getForegroundColorRange().setMaxBrightness(0.99f);
+ criteria.setBackgroundColorRange(new ColorRange());
+ criteria.getBackgroundColorRange().setEmpty(true);
+ criteria.setFontName("Arial");
+ criteria.setMinFontSize(19);
+ criteria.setMaxFontSize(42);
+ criteria.setFontBold(true);
+
+ PossibleWatermarkCollection watermarks = watermarker.search(criteria);
+ watermarks.clear();
+
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchImageWatermark.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchImageWatermark.java
new file mode 100644
index 0000000..fa94735
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchImageWatermark.java
@@ -0,0 +1,29 @@
+package com.groupdocs.watermark.examples.advanced_usage.searching_and_modifying_watermarks;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.search.ImageDctHashSearchCriteria;
+import com.groupdocs.watermark.search.ImageSearchCriteria;
+import com.groupdocs.watermark.search.PossibleWatermarkCollection;
+
+public class SearchImageWatermark {
+ /**
+ * This example shows how to search for image watermarks that resemble with a particular image.
+ */
+ public static void run() {
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf);
+
+ // Initialize criteria with the image
+ ImageSearchCriteria imageSearchCriteria = new ImageDctHashSearchCriteria(Constants.WatermarkJpg);
+
+ //Set maximum allowed difference between images
+ imageSearchCriteria.setMaxDifference(0.9);
+
+ PossibleWatermarkCollection possibleWatermarks = watermarker.search(imageSearchCriteria);
+
+ System.out.println("Found " + possibleWatermarks.getCount() + " possible watermark(s).");
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchTextWatermarkSkippingUnreadableCharacters.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchTextWatermarkSkippingUnreadableCharacters.java
new file mode 100644
index 0000000..05cfc91
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchTextWatermarkSkippingUnreadableCharacters.java
@@ -0,0 +1,30 @@
+package com.groupdocs.watermark.examples.advanced_usage.searching_and_modifying_watermarks;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.search.PossibleWatermarkCollection;
+import com.groupdocs.watermark.search.TextSearchCriteria;
+
+public class SearchTextWatermarkSkippingUnreadableCharacters {
+ /**
+ * This example shows how to skip unreadable characters when searching for the watermark.
+ */
+ public static void run() {
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf);
+
+ String watermarkText = "Company name";
+ TextSearchCriteria criterion = new TextSearchCriteria(watermarkText);
+
+ // Enable skipping of unreadable characters
+ criterion.setSkipUnreadableCharacters(true);
+
+ PossibleWatermarkCollection result = watermarker.search(criterion);
+
+ // ...
+
+ System.out.println("Found " + result.getCount() + " possible watermark(s).");
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchWatermark.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchWatermark.java
new file mode 100644
index 0000000..dff0c35
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchWatermark.java
@@ -0,0 +1,34 @@
+package com.groupdocs.watermark.examples.advanced_usage.searching_and_modifying_watermarks;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.search.PossibleWatermark;
+import com.groupdocs.watermark.search.PossibleWatermarkCollection;
+
+public class SearchWatermark {
+ /**
+ * This example shows how to find and get all possible watermarks in a document.
+ */
+ public static void run() {
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf);
+
+ PossibleWatermarkCollection possibleWatermarks = watermarker.search();
+ for (PossibleWatermark possibleWatermark : possibleWatermarks)
+ {
+ if (possibleWatermark.getImageData() != null)
+ {
+ System.out.println(possibleWatermark.getImageData().length);
+ }
+
+ System.out.println(possibleWatermark.getText());
+ System.out.println(possibleWatermark.getX());
+ System.out.println(possibleWatermark.getY());
+ System.out.println(possibleWatermark.getRotateAngle());
+ System.out.println(possibleWatermark.getWidth());
+ System.out.println(possibleWatermark.getHeight());
+ }
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchWatermarkInParticularObjectsAllInstances.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchWatermarkInParticularObjectsAllInstances.java
new file mode 100644
index 0000000..d986050
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchWatermarkInParticularObjectsAllInstances.java
@@ -0,0 +1,49 @@
+package com.groupdocs.watermark.examples.advanced_usage.searching_and_modifying_watermarks;
+
+import java.io.File;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.WatermarkerSettings;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.search.DiagramSearchableObjects;
+import com.groupdocs.watermark.search.PdfSearchableObjects;
+import com.groupdocs.watermark.search.PossibleWatermarkCollection;
+import com.groupdocs.watermark.search.PresentationSearchableObjects;
+import com.groupdocs.watermark.search.SearchableObjects;
+import com.groupdocs.watermark.search.SpreadsheetSearchableObjects;
+import com.groupdocs.watermark.search.WordProcessingSearchableObjects;
+
+public class SearchWatermarkInParticularObjectsAllInstances {
+ /**
+ * This example shows how to set searchable objects globally (for all documents that will be created after that).
+ */
+ public static void run() {
+ WatermarkerSettings settings = new WatermarkerSettings();
+ settings.setSearchableObjects(new SearchableObjects());
+ settings.getSearchableObjects().setWordProcessingSearchableObjects(WordProcessingSearchableObjects.Hyperlinks | WordProcessingSearchableObjects.Text);
+ settings.getSearchableObjects().setSpreadsheetSearchableObjects(SpreadsheetSearchableObjects.HeadersFooters);
+ settings.getSearchableObjects().setPresentationSearchableObjects(PresentationSearchableObjects.SlidesBackgrounds | PresentationSearchableObjects.Shapes);
+ settings.getSearchableObjects().setDiagramSearchableObjects(DiagramSearchableObjects.None);
+ settings.getSearchableObjects().setPdfSearchableObjects(PdfSearchableObjects.All);
+
+ String[] files = { Constants.InDocumentDocx,
+ Constants.InSpreadsheetXlsx,
+ Constants.InPresentationPptx,
+ Constants.InDiagramVsdx,
+ Constants.InDocumentPdf };
+
+ for (String file : files)
+ {
+ Watermarker watermarker = new Watermarker(file, settings);
+
+ PossibleWatermarkCollection watermarks = watermarker.search();
+
+ // The code for working with found watermarks goes here.
+
+ System.out.println("In " + new File(file).getName() + " found " + watermarks.getCount() + " possible watermark(s).");
+
+ watermarker.close();
+ }
+
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchWatermarkInParticularObjectsForParticularDocument.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchWatermarkInParticularObjectsForParticularDocument.java
new file mode 100644
index 0000000..1187d01
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchWatermarkInParticularObjectsForParticularDocument.java
@@ -0,0 +1,26 @@
+package com.groupdocs.watermark.examples.advanced_usage.searching_and_modifying_watermarks;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.search.PdfSearchableObjects;
+import com.groupdocs.watermark.search.PossibleWatermarkCollection;
+
+public class SearchWatermarkInParticularObjectsForParticularDocument {
+ /**
+ * This example shows how to set searchable objects for a particular Watermarker instance.
+ */
+ public static void run() {
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf);
+
+ // Search for hyperlinks only.
+ watermarker.getSearchableObjects().setPdfSearchableObjects(PdfSearchableObjects.Hyperlinks);
+ PossibleWatermarkCollection watermarks = watermarker.search();
+
+ // The code for working with found watermarks goes here.
+
+ System.out.println("Found " + watermarks.getCount() + " possible watermark(s).");
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchWatermarkWithCombinedSearch.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchWatermarkWithCombinedSearch.java
new file mode 100644
index 0000000..d8ef379
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchWatermarkWithCombinedSearch.java
@@ -0,0 +1,35 @@
+package com.groupdocs.watermark.examples.advanced_usage.searching_and_modifying_watermarks;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.search.ImageDctHashSearchCriteria;
+import com.groupdocs.watermark.search.ImageSearchCriteria;
+import com.groupdocs.watermark.search.PossibleWatermarkCollection;
+import com.groupdocs.watermark.search.RotateAngleSearchCriteria;
+import com.groupdocs.watermark.search.SearchCriteria;
+import com.groupdocs.watermark.search.TextSearchCriteria;
+
+public class SearchWatermarkWithCombinedSearch {
+ /**
+ * This example shows how to search watermark with the combination of different search criteria.
+ */
+ public static void run() {
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf);
+
+ ImageSearchCriteria imageSearchCriteria = new ImageDctHashSearchCriteria(Constants.LogoPng);
+ imageSearchCriteria.setMaxDifference(0.9);
+
+ TextSearchCriteria textSearchCriteria = new TextSearchCriteria("Company Name");
+
+ RotateAngleSearchCriteria rotateAngleSearchCriteria = new RotateAngleSearchCriteria(30, 60);
+
+ SearchCriteria combinedSearchCriteria = imageSearchCriteria.or(textSearchCriteria)
+ .and(rotateAngleSearchCriteria);
+ PossibleWatermarkCollection possibleWatermarks = watermarker.search(combinedSearchCriteria);
+
+ System.out.println("Found " + possibleWatermarks.getCount() + " possible watermark(s).");
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchWatermarkWithParticularTextFormatting.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchWatermarkWithParticularTextFormatting.java
new file mode 100644
index 0000000..27f3564
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchWatermarkWithParticularTextFormatting.java
@@ -0,0 +1,37 @@
+package com.groupdocs.watermark.examples.advanced_usage.searching_and_modifying_watermarks;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.search.ColorRange;
+import com.groupdocs.watermark.search.PossibleWatermarkCollection;
+import com.groupdocs.watermark.search.TextFormattingSearchCriteria;
+
+public class SearchWatermarkWithParticularTextFormatting {
+ /**
+ * This example shows how to search watermark with a particular text formatting.
+ */
+ public static void run() {
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf);
+
+ TextFormattingSearchCriteria criteria = new TextFormattingSearchCriteria();
+ criteria.setForegroundColorRange(new ColorRange());
+ criteria.getForegroundColorRange().setMinHue(-5);
+ criteria.getForegroundColorRange().setMaxHue(10);
+ criteria.getForegroundColorRange().setMinBrightness(0.01f);
+ criteria.getForegroundColorRange().setMaxBrightness(0.99f);
+ criteria.setBackgroundColorRange(new ColorRange());
+ criteria.getBackgroundColorRange().setEmpty(true);
+ criteria.setFontName("Arial");
+ criteria.setMinFontSize(19);
+ criteria.setMaxFontSize(42);
+ criteria.setFontBold(true);
+
+ PossibleWatermarkCollection watermarks = watermarker.search(criteria);
+ // The code for working with found watermarks goes here.
+
+ System.out.println("Found " + watermarks.getCount() + " possible watermark(s).");
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchWatermarkWithRegularExpression.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchWatermarkWithRegularExpression.java
new file mode 100644
index 0000000..c0499f1
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchWatermarkWithRegularExpression.java
@@ -0,0 +1,30 @@
+package com.groupdocs.watermark.examples.advanced_usage.searching_and_modifying_watermarks;
+
+import java.util.regex.Pattern;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.search.PossibleWatermarkCollection;
+import com.groupdocs.watermark.search.TextSearchCriteria;
+
+public class SearchWatermarkWithRegularExpression {
+ /**
+ * This example shows how to use a regular expression to search for watermarks.
+ */
+ public static void run() {
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf);
+
+ Pattern pattern = Pattern.compile(" \\d{4}$");
+
+ // Search by regular expression
+ TextSearchCriteria textSearchCriteria = new TextSearchCriteria(pattern);
+
+ // Find possible watermarks using regular expression
+ PossibleWatermarkCollection possibleWatermarks = watermarker.search(textSearchCriteria);
+
+ System.out.println("Found " + possibleWatermarks.getCount() + " possible watermark(s).");
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchWatermarkWithSearchString.java b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchWatermarkWithSearchString.java
new file mode 100644
index 0000000..c40313a
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/advanced_usage/searching_and_modifying_watermarks/SearchWatermarkWithSearchString.java
@@ -0,0 +1,26 @@
+package com.groupdocs.watermark.examples.advanced_usage.searching_and_modifying_watermarks;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.search.PossibleWatermarkCollection;
+import com.groupdocs.watermark.search.TextSearchCriteria;
+
+public class SearchWatermarkWithSearchString {
+ /**
+ * This example shows how to search for the watermarks that meet a particular text criterion.
+ */
+ public static void run() {
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf);
+
+ // Search by exact string
+ TextSearchCriteria textSearchCriteria = new TextSearchCriteria(" 2017");
+
+ // Find all possible watermarks containing some specific text
+ PossibleWatermarkCollection possibleWatermarks = watermarker.search(textSearchCriteria);
+
+ System.out.println("Found " + possibleWatermarks.getCount() + " possible watermark(s)");
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/basic_usage/AddATextWatermark.java b/Examples/src/main/java/com/groupdocs/watermark/examples/basic_usage/AddATextWatermark.java
new file mode 100644
index 0000000..44cd4fa
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/basic_usage/AddATextWatermark.java
@@ -0,0 +1,28 @@
+package com.groupdocs.watermark.examples.basic_usage;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.watermarks.*;
+
+public class AddATextWatermark {
+ /**
+ * This example demonstrates how to add a text watermark to a local document.
+ */
+ public static void run() {
+ // Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+ Watermarker watermarker = new Watermarker(Constants.InDocumentPdf);
+
+ TextWatermark watermark = new TextWatermark("top secret", new Font("Arial", 36));
+ watermark.setForegroundColor(Color.getRed());
+ watermark.setHorizontalAlignment(HorizontalAlignment.Center);
+ watermark.setVerticalAlignment(VerticalAlignment.Center);
+ watermark.setOpacity(0.4);
+ watermarker.add(watermark);
+
+ watermarker.save(Constants.OutDocumentPdf);
+
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/basic_usage/AddAnImageWatermark.java b/Examples/src/main/java/com/groupdocs/watermark/examples/basic_usage/AddAnImageWatermark.java
new file mode 100644
index 0000000..857e895
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/basic_usage/AddAnImageWatermark.java
@@ -0,0 +1,32 @@
+package com.groupdocs.watermark.examples.basic_usage;
+
+import java.io.FileInputStream;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.HorizontalAlignment;
+import com.groupdocs.watermark.common.VerticalAlignment;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.watermarks.ImageWatermark;
+
+public class AddAnImageWatermark {
+ /**
+ * This example demonstrates how to add an image watermark to a document from a stream.
+ */
+ public static void run() throws Exception {
+ // Constants.InDocumentXlsx is an absolute or relative path to your document. Ex: "C:\\Docs\\document.xlsx"
+ FileInputStream stream = new FileInputStream(Constants.InDocumentXlsx);
+
+ Watermarker watermarker = new Watermarker(stream);
+
+ ImageWatermark watermark = new ImageWatermark(Constants.LogoPng);
+ watermark.setHorizontalAlignment(HorizontalAlignment.Center);
+ watermark.setVerticalAlignment(VerticalAlignment.Center);
+ watermarker.add(watermark);
+
+ watermarker.save(Constants.OutDocumentXlsx);
+
+ watermark.close();
+ watermarker.close();
+ stream.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/basic_usage/GenerateDocumentPreview.java b/Examples/src/main/java/com/groupdocs/watermark/examples/basic_usage/GenerateDocumentPreview.java
new file mode 100644
index 0000000..646cc2f
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/basic_usage/GenerateDocumentPreview.java
@@ -0,0 +1,60 @@
+package com.groupdocs.watermark.examples.basic_usage;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.ICreatePageStream;
+import com.groupdocs.watermark.options.IReleasePageStream;
+import com.groupdocs.watermark.options.PreviewOptions;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+
+public class GenerateDocumentPreview {
+ /**
+ * This example demonstrates how to generate preview for a document.
+ */
+ public static void run() {
+ // Constants.InDiagramVdx is an absolute or relative path to your document. Ex: "C:\\Docs\\diagram.vdx"
+ Watermarker watermarker = new Watermarker(Constants.InDiagramVsdx);
+
+ String fileNameTemplate = new File(Constants.OutputPath, "page%s.png").getPath();
+ ICreatePageStream createPageStream = new CreatePageStream(fileNameTemplate);
+
+ IReleasePageStream releasePageStream = new ReleasePageStream();
+
+ PreviewOptions previewOptions = new PreviewOptions(createPageStream, releasePageStream);
+
+ watermarker.generatePreview(previewOptions);
+
+ watermarker.close();
+ }
+
+ static class CreatePageStream implements ICreatePageStream {
+ private final String _fileNameTemplate;
+
+ public CreatePageStream(String fileNameTemplate) {
+ _fileNameTemplate = fileNameTemplate;
+ }
+
+ @Override
+ public java.io.OutputStream createPageStream(int pageNumber) {
+ String fileName = String.format(_fileNameTemplate, pageNumber);
+ try {
+ return new FileOutputStream(fileName);
+ } catch (Exception ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+ }
+
+ static class ReleasePageStream implements IReleasePageStream {
+ @Override
+ public void releasePageStream(int pageNumber, OutputStream pageStream) {
+ try {
+ pageStream.close();
+ } catch (Exception ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/basic_usage/GetDocumentInfoForTheFileFromLocalDisk.java b/Examples/src/main/java/com/groupdocs/watermark/examples/basic_usage/GetDocumentInfoForTheFileFromLocalDisk.java
new file mode 100644
index 0000000..3e53c71
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/basic_usage/GetDocumentInfoForTheFileFromLocalDisk.java
@@ -0,0 +1,20 @@
+package com.groupdocs.watermark.examples.basic_usage;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.IDocumentInfo;
+import com.groupdocs.watermark.examples.Constants;
+
+public class GetDocumentInfoForTheFileFromLocalDisk {
+ /**
+ * This example demonstrates how to get document information from the local file.
+ */
+ public static void run() {
+ // Constants.InSourceDocx is an absolute or relative path to your document. Ex.: "C:\\Docs\\source.docx"
+ Watermarker watermarker = new Watermarker(Constants.InSourceDocx);
+ IDocumentInfo info = watermarker.getDocumentInfo();
+ System.out.println("File type: " + info.getFileType());
+ System.out.println("Number of pages: " + info.getPageCount());
+ System.out.println("Document size: " + info.getSize() + " bytes");
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/basic_usage/GetDocumentInfoForTheFileFromStream.java b/Examples/src/main/java/com/groupdocs/watermark/examples/basic_usage/GetDocumentInfoForTheFileFromStream.java
new file mode 100644
index 0000000..ee6bb66
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/basic_usage/GetDocumentInfoForTheFileFromStream.java
@@ -0,0 +1,24 @@
+package com.groupdocs.watermark.examples.basic_usage;
+
+import java.io.FileInputStream;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.common.IDocumentInfo;
+import com.groupdocs.watermark.examples.Constants;
+
+public class GetDocumentInfoForTheFileFromStream {
+ /**
+ * This example demonstrates how to get document information from the file stream.
+ */
+ public static void run() throws Exception {
+ // Constants.InSourceDocx is an absolute or relative path to your document. Ex: "C:\\Docs\\source.docx"
+ FileInputStream stream = new FileInputStream(Constants.InSourceDocx);
+ Watermarker watermarker = new Watermarker(stream);
+ IDocumentInfo info = watermarker.getDocumentInfo();
+ System.out.println("File type: " + info.getFileType());
+ System.out.println("Number of pages: " + info.getPageCount());
+ System.out.println("Document size: " + info.getSize() + " bytes");
+ watermarker.close();
+ stream.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/basic_usage/GetSupportedFileFormats.java b/Examples/src/main/java/com/groupdocs/watermark/examples/basic_usage/GetSupportedFileFormats.java
new file mode 100644
index 0000000..dc4bb01
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/basic_usage/GetSupportedFileFormats.java
@@ -0,0 +1,12 @@
+package com.groupdocs.watermark.examples.basic_usage;
+
+import com.groupdocs.watermark.common.FileType;
+
+public class GetSupportedFileFormats {
+ public static void run() {
+ FileType[] fileTypes = FileType.getSupportedFileTypes();
+ for(FileType fileType : fileTypes) {
+ System.out.println(fileType);
+ }
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/quick_start/HelloWorld.java b/Examples/src/main/java/com/groupdocs/watermark/examples/quick_start/HelloWorld.java
new file mode 100644
index 0000000..98e50c9
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/quick_start/HelloWorld.java
@@ -0,0 +1,24 @@
+package com.groupdocs.watermark.examples.quick_start;
+
+import com.groupdocs.watermark.Watermarker;
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.options.PdfLoadOptions;
+import com.groupdocs.watermark.options.PdfXObjectWatermarkOptions;
+import com.groupdocs.watermark.watermarks.Font;
+import com.groupdocs.watermark.watermarks.FontStyle;
+import com.groupdocs.watermark.watermarks.TextWatermark;
+
+public class HelloWorld {
+ public static void run() {
+ String documentPath = Constants.InDocumentPdf; // NOTE: Put here actual path for your document
+ PdfLoadOptions loadOptions = new PdfLoadOptions();
+ Watermarker watermarker = new Watermarker(documentPath, loadOptions);
+ TextWatermark watermark = new TextWatermark("Test watermark", new Font("Arial", 36, FontStyle.Bold | FontStyle.Italic));
+ PdfXObjectWatermarkOptions options = new PdfXObjectWatermarkOptions();
+ options.setPageIndex(0);
+
+ watermarker.add(watermark, options);
+ watermarker.save(Constants.OutDocumentPdf);
+ watermarker.close();
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/quick_start/SetLicenseFromFile.java b/Examples/src/main/java/com/groupdocs/watermark/examples/quick_start/SetLicenseFromFile.java
new file mode 100644
index 0000000..de9015c
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/quick_start/SetLicenseFromFile.java
@@ -0,0 +1,30 @@
+package com.groupdocs.watermark.examples.quick_start;
+
+import java.io.File;
+
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.licenses.License;
+
+public class SetLicenseFromFile {
+ /**
+ * This example demonstrates how to set license from file.
+ *
+ * The SetLicense method attempts to set a license from several locations relative to the executable.
+ * You can also use the additional overload to load a license from a stream,
+ * this is useful for instance when the License is stored as an embedded resource.
+ */
+ public static void run() {
+ File licenseFile = new File(Constants.LicenseFilePath);
+ if (licenseFile.exists()) {
+ License license = new License();
+ license.setLicense(Constants.LicenseFilePath);
+
+ System.out.println("License set successfully.");
+ } else {
+ System.out.println("\nWe do not ship any license with this example. " +
+ "\nVisit the GroupDocs site to obtain either a temporary or permanent license. " +
+ "\nLearn more about licensing at https://purchase.groupdocs.com/faqs/licensing. " +
+ "\nLear how to request temporary license at https://purchase.groupdocs.com/temporary-license.");
+ }
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/quick_start/SetLicenseFromStream.java b/Examples/src/main/java/com/groupdocs/watermark/examples/quick_start/SetLicenseFromStream.java
new file mode 100644
index 0000000..fd981f8
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/quick_start/SetLicenseFromStream.java
@@ -0,0 +1,29 @@
+package com.groupdocs.watermark.examples.quick_start;
+
+import java.io.File;
+import java.io.FileInputStream;
+
+import com.groupdocs.watermark.examples.Constants;
+import com.groupdocs.watermark.licenses.License;
+
+public class SetLicenseFromStream {
+ /**
+ * This example demonstrates how to set license from stream.
+ */
+ public static void run() throws Exception {
+ File licenseFile = new File(Constants.LicenseFilePath);
+ if (licenseFile.exists()) {
+ FileInputStream stream = new FileInputStream(licenseFile);
+ License license = new License();
+ license.setLicense(stream);
+ stream.close();
+
+ System.out.println("License set successfully.");
+ } else {
+ System.out.println("\nWe do not ship any license with this example. " +
+ "\nVisit the GroupDocs site to obtain either a temporary or permanent license. " +
+ "\nLearn more about licensing at https://purchase.groupdocs.com/faqs/licensing. " +
+ "\nLear how to request temporary license at https://purchase.groupdocs.com/temporary-license.");
+ }
+ }
+}
diff --git a/Examples/src/main/java/com/groupdocs/watermark/examples/quick_start/SetMeteredLicense.java b/Examples/src/main/java/com/groupdocs/watermark/examples/quick_start/SetMeteredLicense.java
new file mode 100644
index 0000000..b8b3cf4
--- /dev/null
+++ b/Examples/src/main/java/com/groupdocs/watermark/examples/quick_start/SetMeteredLicense.java
@@ -0,0 +1,15 @@
+package com.groupdocs.watermark.examples.quick_start;
+
+import com.groupdocs.watermark.licenses.Metered;
+
+public class SetMeteredLicense {
+ public static void run() throws Exception {
+ String publicKey = "*****";
+ String privateKey = "*****";
+
+ Metered metered = new Metered();
+ metered.setMeteredKey(publicKey, privateKey);
+
+ System.out.println("License set successfully.");
+ }
+}
diff --git a/Examples/GroupDocs.Watermark-for-Java/src/main/resources/project.properties b/Examples/src/main/resources/project.properties
similarity index 100%
rename from Examples/GroupDocs.Watermark-for-Java/src/main/resources/project.properties
rename to Examples/src/main/resources/project.properties
diff --git a/LICENSE b/LICENSE
index d31b697..797bf7e 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2018 Aspose Pty Ltd
+Copyright (c) 2020 Aspose Pty Ltd
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/README.md b/README.md
index bf0407b..cbe4149 100644
--- a/README.md
+++ b/README.md
@@ -1,27 +1,186 @@
-# GroupDocs.Watermark for Java
+# GroupDocs.Watermark Java Examples - Protect Documents with Watermarks
-This package contains [Examples](https://github.com/groupdocs-watermark/GroupDocs.Watermark-for-Java/tree/master/Examples) for [GroupDocs.Watermark for Java](https://products.groupdocs.com/watermark/java) that will help you in understanding the API's working and writing your own applications.
+**Document security** through comprehensive watermarking solutions for Java applications. This repository provides complete examples demonstrating **how to watermark files**, **add watermark**, **create watermark**, **remove watermark**, and implement **invisible watermarking for documents** using GroupDocs.Watermark for Java.
-GroupDocs.Watermark is a library for adding text and image watermarks to documents of different formats. It also provides an easy way to search and remove previously added watermarks (including watermarks added by third-party tools). Supported file formats include MS Word documents, MS PowerPoint documents, MS Excel documents, PDF documenst, BMP, PNG, GIF, TIFF, JPEG, and many more.
+## 🔐 Enterprise Document Security & Content Protection
-
+**Protect documents with watermarks** across 40+ file formats with powerful **content protection with watermarking** capabilities:
-
-
-
-
+- **Custom watermark** creation with personalized text and images
+- **Customize watermark** appearance, positioning, and transparency
+- **Custom fonts** support for branded watermarking solutions
+- **Watermark automation for enterprise** Java workflows
+- Advanced search and removal capabilities
+- **Invisible watermarking for documents** with steganographic techniques
+- **Tiling watermarks** across entire document pages for comprehensive coverage
-Directory | Description
---------- | -----------
-[Examples](https://github.com/groupdocs-watermark/GroupDocs.Watermark-for-Java/tree/master/Examples) | Contains the package of all the examples and sample files that will help you learn how to use API features.
-## Resources
+## 📁 Repository Structure
-+ **Website:** [www.groupdocs.com](http://www.groupdocs.com)
-+ **Product Home:** [GroupDocs.Watermark for Java](https://products.groupdocs.com/watermark/java)
-+ **Download:** [Download GroupDocs.Watermark for Java](https://artifact.groupdocs.com/repo/com/groupdocs/groupdocs-watermark/)
-+ **API Reference:** [GroupDocs.Watermark for Java API Reference Guide](https://apireference.groupdocs.com/java/watermark)
-+ **Documentation:** [GroupDocs.Watermark for Java Documentation](https://docs.groupdocs.com/display/watermarkjava/Introducing+GroupDocs.Watermark+for+Java)
-+ **Free Support:** [GroupDocs.Watermark for Java Free Support Forum](https://forum.groupdocs.com/c/watermark)
-+ **Paid Support:** [GroupDocs.Watermark for Java Paid Support Helpdesk](https://helpdesk.groupdocs.com/)
-+ **Blog:** [GroupDocs.Watermark for Java Blog](https://blog.groupdocs.com/category/groupdocs-watermark-product-family/)
+| Directory | Description |
+|-----------|-------------|
+| [Examples](./Examples) | Complete Java examples showing **how to watermark a** document and implement **document security** |
+## 🚀 Quick Start - How to Watermark Documents in Java
+
+### Add Watermark to Documents
+
+Learn **how to watermark** your documents with this simple Java example:
+
+```java
+// Specify an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+Watermarker watermarker = new Watermarker("document.pdf");
+
+TextWatermark watermark = new TextWatermark("top secret", new Font("Arial", 36));
+watermark.setForegroundColor(Color.getRed());
+watermark.setHorizontalAlignment(HorizontalAlignment.Center);
+watermark.setVerticalAlignment(VerticalAlignment.Center);
+
+watermarker.add(watermark);
+watermarker.save("document.pdf");
+
+watermarker.close();
+```
+
+## 📋 Java Watermarking Examples by Use Case
+
+### Basic Watermarking Operations
+- **How to watermark in** PDF documents with Java
+- **Create watermark** with custom fonts and styling
+- **Add watermark** to multiple pages simultaneously
+- **Customize watermark** transparency and rotation angles
+
+### Advanced Document Security
+- **Removing watermark from** third-party applications
+- **Delete watermark from** specific document regions
+- **Can you remove watermark from** password-protected files
+- **How to remove watermarks in** batch processing workflows
+
+### Enterprise Java Solutions
+- **Watermark automation for enterprise** document management systems
+- **Content protection with watermarking** for sensitive business documents
+- **Document security** compliance implementations
+- **Customized product** branding with corporate watermarks
+
+## 🎯 Supported File Formats
+
+**How to watermark files** across multiple formats using Java:
+
+**Documents:** PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, RTF
+**Images:** PNG, JPG, BMP, TIFF, GIF, WEBP
+**Email:** EML, MSG, EMLX
+**Other:** Visio files (VSD, VSDX), OpenOffice (ODT)
+
+## 🔧 Installation & Setup
+
+### Maven Configuration
+Add to your `pom.xml`:
+```xml
+
+
+ GroupDocsJavaAPI
+ GroupDocs Java API
+ https://releases.groupdocs.com/java/repo/
+
+
+```
+
+### System Requirements
+- Java J2SE 7.0 (1.7) or higher
+- J2SE 8.0 (1.8) recommended for optimal performance
+- Compatible with all major Java IDEs
+
+
+## 💡 Key Java Watermarking Scenarios
+
+### How to Search Watermarks in PDF documents
+```java
+// Constants.InDocumentPdf is an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+Watermarker watermarker = new Watermarker(Constants.InDocumentPdf);
+
+PossibleWatermarkCollection possibleWatermarks = watermarker.search();
+for (PossibleWatermark possibleWatermark : possibleWatermarks)
+{
+ if (possibleWatermark.getImageData() != null)
+ {
+ System.out.println(possibleWatermark.getImageData().length);
+ }
+
+ System.out.println(possibleWatermark.getText());
+ System.out.println(possibleWatermark.getX());
+ System.out.println(possibleWatermark.getY());
+ System.out.println(possibleWatermark.getRotateAngle());
+ System.out.println(possibleWatermark.getWidth());
+ System.out.println(possibleWatermark.getHeight());
+}
+
+watermarker.close();
+```
+
+### Image Watermarking
+```java
+// Specify an absolute or relative path to your document. Ex: "C:\\Docs\\presentation.pptx"
+Watermarker watermarker = new Watermarker("presentation.pptx");
+
+// Use path to the image as constructor parameter
+ImageWatermark watermark = new ImageWatermark("watermark.jpg");
+
+// Add watermark to the document
+watermarker.add(watermark);
+
+watermarker.save("presentation.pptx");
+
+watermark.close();
+watermarker.close();
+```
+
+### **How to Remove Watermark** Operations
+```java
+// Specify an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
+Watermarker watermarker = new Watermarker("document.pdf");
+
+PossibleWatermarkCollection possibleWatermarks = watermarker.search();
+
+// Remove possible watermark at the specified index from the document.
+possibleWatermarks.removeAt(0);
+
+// Remove specified possible watermark from the document.
+possibleWatermarks.remove(possibleWatermarks.get_Item(0));
+
+watermarker.save("document.pdf");
+
+watermarker.close();
+```
+
+## 🌟 Advanced Java Features
+
+- **Invisible watermarking for documents** with steganographic embedding
+- Search watermarks by formatting properties (font, color, size)
+- **Document security** with password protection integration
+- **Tiling watermarks** with customizable spacing and patterns
+- Batch processing for **watermark automation for enterprise**
+- **Custom watermark** templates for consistent branding
+- Multi-threaded watermark processing for high-volume scenarios
+
+## 📖 Documentation & Resources
+
+- [Complete Java API Documentation](https://docs.groupdocs.com/watermark/java/)
+- [Live Demo - **How to Watermark** Online](https://products.groupdocs.app/watermark/family)
+- [Java API Reference Guide](https://apireference.groupdocs.com/java/watermark)
+- [Developer Blog](https://blog.groupdocs.com/category/watermark/)
+
+## 🤝 Support & Community
+
+- [Free Support Forum](https://forum.groupdocs.com/c/watermark) - Get help with **how to remove watermark from free** community
+- [Temporary License](https://purchase.groupdocs.com/temporary-license) - Test full features
+
+## 🏷️ Tags
+
+`java-watermarking` `document-security` `content-protection` `pdf-watermark` `document-watermark` `remove-watermark` `add-watermark` `custom-watermark` `enterprise-security` `java-library`
+
+---
+
+**Start securing your Java applications today!** Clone this repository to explore comprehensive examples of **how to watermark a** document, implement **document security**, and leverage **watermark automation for enterprise** Java solutions.
+
+- [⬇️ Download Examples](https://github.com/groupdocs-watermark/GroupDocs.Watermark-for-Java/archive/master.zip)
+- [🏠 GroupDocs Home](https://products.groupdocs.com/)
+- [📧 Contact Sales](https://purchase.groupdocs.com/temporary-license)
\ No newline at end of file
diff --git a/llms.txt b/llms.txt
new file mode 100644
index 0000000..26e7120
--- /dev/null
+++ b/llms.txt
@@ -0,0 +1,48 @@
+# GroupDocs.Watermark Java Examples
+
+## Overview
+Repository containing Java examples for GroupDocs.Watermark Java library - a document watermarking solution supporting 40+ file formats including PDF, Word, Excel, PowerPoint, and images.
+
+## Core Functionality
+- Add text/image watermarks to documents via Java API
+- Remove existing watermarks (including third-party)
+- Search watermarks by text, formatting, or custom criteria
+- Invisible watermarking and steganographic embedding
+- Batch watermark processing and automation
+- Custom watermark styling with fonts, colors, transparency
+- Tiling watermarks for comprehensive page coverage
+- Multi-threaded processing for enterprise applications
+
+## Key Use Cases
+- Enterprise Java document security workflows
+- Content protection and brand enforcement
+- Legal document authentication
+- Automated watermark processing in Java applications
+- Integration with existing Java document management systems
+- Compliance and audit trail requirements
+
+## Supported Formats
+**Documents**: PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, RTF, ODT
+**Images**: PNG, JPG, BMP, TIFF, GIF, WEBP
+**Email**: EML, MSG, EMLX
+**Other**: Visio files, various proprietary formats
+
+## Technical Details
+- Java J2SE 7.0+ (J2SE 8.0+ recommended)
+- Maven artifact: com.groupdocs:groupdocs-watermark
+- Cross-platform Java compatibility
+- Thread-safe operations for concurrent processing
+- Memory-efficient streaming for large documents
+
+## Repository Structure
+- `/Examples` - Core Java implementation examples with complete source code
+
+## Java Integration
+- Maven/Gradle dependency management
+- Spring Framework compatible
+- Enterprise Java (J2EE) ready
+- Microservices architecture suitable
+- RESTful API integration examples
+
+## AI/LLM Context
+Ideal for AI applications requiring automated document processing, batch watermarking workflows, or Java-based document security solutions. Examples demonstrate programmatic watermark manipulation suitable for integration into larger enterprise Java systems, microservices, or automated document processing pipelines.
\ No newline at end of file