We are planning to use Aspose.Slides for Java API to add watermark to (PowerPoint presentation)PPTX/PPT slides for our project. We used the free version of Aspose.Slides for Java to add watermark, but we are able add one line watermark text only to PowerPoint slides and we are planning to add 3 to 4 lines of watermark text to PowerPoint slides. and also if it possible to lock the power point presentation slides after adding watermark.Could you please help us to provide code for adding 3 to 4 lines of watermak and how to lock slides.
Note: we are using temporary license.
code snippet:
// Access master
IMasterSlide master = pres.getMasters().get_Item(0);
Point2D.Float center = new Point2D.Float((float) pres.getSlideSize().getSize().getWidth() / 2,
(float) pres.getSlideSize().getSize().getHeight() / 2);
float width = 300;
float height = 300;
float x = (float) center.getX() - width / 2;
float y = (float) center.getY() - height / 2;
// Add shape
IAutoShape watermarkShape = master.getShapes().addAutoShape(ShapeType.Rectangle, x, y, width, height);
// Set fill type
watermarkShape.getFillFormat().setFillType(FillType.NoFill);
watermarkShape.getLineFormat().getFillFormat().setFillType(FillType.NoFill);
// Set rotation angle
watermarkShape.setRotation(-45);
// Set text
ITextFrame watermarkTextFrame = watermarkShape.addTextFrame("watermark3");
@ssanex,
Thank you for posting your requirements. Please try using the code snippets to add watermarks as shown in this article:
If the issue persists, please describe in more detail what exactly you have failed. It would be great if you could share a sample presentation with the expected watermarks created in PowerPoint.
Unfortunately, I was unable to find such a feature in PowerPoint. Please share a sample presentation.
expected-response.PNG (62.6 KB) current-response.PNG (53.1 KB)
Hi Andrey,
we are able to add single line watermark text and we are planning to add 3 lines of watermark.
i can see one line of watermark with the above mentioned link.please find the attached current and expected response screen shot.
watermarked-presentation_la.zip (184.0 KB)
Hi Andrey,
Please find the attached zip file for sample pptx file for to lock presentation slide.
Regards,
Sravan.
Thank you andrey for update.Could you please let us know can we reduce space between one paragraph to another paragraph.please find the attached current and expected repsonse. expected-response1.PNG (78.4 KB) Current repsose1.PNG (15.5 KB)
Hi Andrey, I am locking the watermark shape after changing paraph and it is not applying line space.Could you please check the below code and help me on this.
Presentation pres = new Presentation("C:\\Users\\ssanex\\Downloads\\EclipseWorkSpace\\EclipseWorkSpace\\ORIGINAL-test.pptx");
try {
/*
* com.aspose.slides.License license = new com.aspose.slides.License();
*
* license.setLicense(new java.io.FileInputStream("Aspose.Slides.Java.lic"));
*/
License license1 = new License();
license1.setLicense(new java.io.FileInputStream("C:\\Users\\ssanex\\Downloads\\aspose-slides-22.7-java\\lib\\Aspose.Slides.Java.lic"));
if (license1.isLicensed())
{
System.out.println("License is Set!");
}
// Access master
IMasterSlide master = pres.getMasters().get_Item(0);
Point2D.Float center = new Point2D.Float((float) pres.getSlideSize().getSize().getWidth() / 2,
(float) pres.getSlideSize().getSize().getHeight() / 2);
float width = 300;
float height = 150;
float x = (float) center.getX() - width / 2;
float y = (float) center.getY() - height / 2;
// Add shape
IAutoShape watermarkShape = master.getShapes().addAutoShape(ShapeType.Rectangle, x, y, width, height);
// Set fill type
watermarkShape.getFillFormat().setFillType(FillType.NoFill);
watermarkShape.getLineFormat().getFillFormat().setFillType(FillType.NoFill);
// Set rotation angle
watermarkShape.setRotation(-45);
// Set text
//ITextFrame watermarkTextFrame = watermarkShape.addTextFrame("watermark3");
//ITextFrame watermarkTextFrame = watermarkShape.addTextFrame("Text line 1\nText line 2\nCourtesy of Sravanreddy");
//watermarkShape.addTextFrame("watermark2");
ITextFrame watermarkTextFrame = watermarkShape.addTextFrame("");
Paragraph textLine1 = new Paragraph();
textLine1.setText("watermark Text line 1");
textLine1.getParagraphFormat().setDepth((short)2);
textLine1.getParagraphFormat().setSpaceWithin(5);
textLine1.getParagraphFormat().setIndent(2);
Paragraph textLine2 = new Paragraph();
textLine2.setText("watermark Text line 2");
textLine2.getParagraphFormat().setDepth((short)2);
textLine1.getParagraphFormat().setSpaceWithin(5);
textLine2.getParagraphFormat().setIndent(2);
Paragraph textLine3 = new Paragraph();
textLine3.setText("Courtesy of Sravanreddy");
IParagraph paragraph = watermarkTextFrame.getParagraphs().get_Item(0);
watermarkTextFrame.getParagraphs().add(textLine1);
textLine1.getParagraphFormat().setSpaceWithin(10);
watermarkTextFrame.getParagraphs().add(new Paragraph());
watermarkTextFrame.getParagraphs().add(textLine2);
textLine2.getParagraphFormat().setSpaceWithin(10);
watermarkTextFrame.getParagraphs().add(new Paragraph());
watermarkTextFrame.getParagraphs().add(textLine3);
textLine3.getParagraphFormat().setSpaceWithin(10);
// Set font and color
IPortion watermarkPortion = watermarkTextFrame.getParagraphs().get_Item(0).getPortions().get_Item(0);
watermarkPortion.getPortionFormat().setFontHeight(52);
int alpha = 150, red = 200, green = 200, blue = 200;
watermarkPortion.getPortionFormat().getFillFormat().setFillType(FillType.Solid);
watermarkPortion.getPortionFormat().getFillFormat().getSolidFillColor()
.setColor(new Color(red, green, blue, alpha));
// Lock Shapes from modifying
watermarkShape.getAutoShapeLock().setSelectLocked(true);
watermarkShape.getAutoShapeLock().setSizeLocked(true);
watermarkShape.getAutoShapeLock().setTextLocked(true);
watermarkShape.getAutoShapeLock().setPositionLocked(true);
watermarkShape.getAutoShapeLock().setGroupingLocked(true);
// Save the presentation
pres.save("C:\\Users\\ssanex\\Downloads\\EclipseWorkSpace\\EclipseWorkSpace\\watermarked-presentation_latest123.pptx", SaveFormat.Pptx);
Date end = new Date();
System.out.println("end "+sdf.format(end));
} finally {
if (pres != null)
pres.dispose();
}
@ssanex,
Please try using the following code snippet to set line spacing for your text lines:
Paragraph textLine1 = new Paragraph();
textLine1.setText("watermark Text line 1");
textLine1.getParagraphFormat().setSpaceWithin(60);
Paragraph textLine2 = new Paragraph();
textLine2.setText("watermark Text line 2");
textLine2.getParagraphFormat().setSpaceWithin(60);
Paragraph textLine3 = new Paragraph();
textLine3.setText("Courtesy of Sravanreddy");
textLine3.getParagraphFormat().setSpaceWithin(60);
watermarkTextFrame.getParagraphs().add(textLine1);
watermarkTextFrame.getParagraphs().add(textLine2);
watermarkTextFrame.getParagraphs().add(textLine3);
Hi Andrey,
Do you any update on to lock presentation slides based on that only we are going to purchnage for intel projects.it is critical for us to lock pptx slides for watermark.
@ssanex,
Thank you for the sample presentation. As far as you can see, the presentation slides do not contain any shapes, but only a background was set for each slide. slide.png (183.6 KB). This is why the presentation looks like its slides are locked.
You can convert any presentation to the “locked” presentation as shown below:
using var sourcePresentation = new Presentation("example.pptx");
var slideSize = sourcePresentation.SlideSize.Size;
// Prepare a new "locked" presentation.
using var lockedPresentation = new Presentation();
lockedPresentation.Slides.RemoveAt(0);
lockedPresentation.SlideSize.SetSize(slideSize.Width, slideSize.Height, SlideSizeScaleType.DoNotScale);
foreach (var slide in sourcePresentation.Slides)
{
// Create an image of the original slide.
using var slideImage = slide.GetThumbnail(1.5f, 1.5f);
// Add the image to resources of the new presentation.
var backgroundImage = lockedPresentation.Images.AddImage(slideImage);
// Add an empty slide to the new presentation.
var layout = lockedPresentation.LayoutSlides.First(layout => layout.Name == "Blank");
var lockedSlide = lockedPresentation.Slides.AddEmptySlide(layout);
// Set the slide image as a background for the empty slide.
lockedSlide.Background.Type = BackgroundType.OwnBackground;
lockedSlide.Background.FillFormat.FillType = FillType.Picture;
lockedSlide.Background.FillFormat.PictureFillFormat.PictureFillMode = PictureFillMode.Stretch;
lockedSlide.Background.FillFormat.PictureFillFormat.Picture.Image = backgroundImage;
}
lockedPresentation.Save("locked.pptx", SaveFormat.Pptx);