Q: We need to apply a mask to an image which is dynamically added to a
PDF being created with the PDFTron SDK and i was wondering if it is
possible to draw a vector rectangle with rounded corners and apply
this over the top of the image?
----------
A: You can easily mask an existing image with another image using
'pdftron.PDF.Image.SetSoftMask' or 'SetMask()'. Masking an image or
any other graphical element is a bit more tricky but is possible.
You would create a 'Soft Mask' form xObject (containing path or other
elements) and pass this soft mask in
image_element.GetGState().SetSoftMask(smask).
The code may look along the following lines:
...
image_element.GetGState().SetSoftMask(CreateSoftMask(doc)).
...
// Pseudocode to create a soft mask using any graphical element
(raster or vector)
// that can be assigned to any other element.
Obj CreateSoftMask(PDFDoc doc)
{
ElementWriter w = new ElementWriter();
ElementBuilder b = new ElementBuilder();
w.Begin(doc);
// start constructing the path
b.PathBegin();
b.MoveTo(306, 396);
b.CurveTo(681, 771, 399.75, 864.75, 306, 771);
b.CurveTo(212.25, 864.75, -69, 771, 306, 396);
b.ClosePath();
Element e = b.PathEnd();
e.SetPathFill(true);
e.SetPathClip(false);
e.SetPathStroke(false);
GState gstate = e.GetGState();
gstate.SetFillColorSpace(pdftron.PDF.ColorSpace.CreateDeviceGray());
gstate.SetFillColor(new ColorPt(0.5));
Rect bbox = new Rect();
e.GetBBox(bbox);
w.WriteElement(e);
Obj xobject=w.End();
xobject.PutName("S", "Transparency");
xobject.PutName("Subtype", "Form");
xobject.PutRect("BBox", bbox.x1, bbox.y1, bbox.x2, bbox.y2);
xobject.PutMatrix("Matrix", new Matrix2D(1, 0, 0, 1, 0, 0));
Obj grp= xobject.PutDict("Group");
grp.PutName("CS","DeviceGray");
grp.PutBool("I",false);
grp.PutBool("K",false);
grp.PutName("S","Transparency");
grp.PutName("Type","Group");
Obj soft_dict = doc.CreateIndirectDict();
if(m_use_alpha) oft_dict.PutName("S", "Alpha");
else soft_dict.PutName("S", "Luminosity");
soft_dict.PutName("Type", "Mask");
soft_dict.Put("G", xobject);
w.Dispose();
b.Dispose();
return soft_dict;
}
--
You received this message because you are subscribed to the "PDFTron PDFNet SDK" group. To post to this group, send email to support@pdftron.com
To unsubscribe from this group, send email to pdfnet-sdk-unsubscribe@googlegroups.com. For more information, please visit us at http://www.pdftron.com