If it is an annotation, then set the print flag

setPrinted(true)

Tilman

Am 30.04.2018 um 17:01 schrieb JZ Q:
Dear Tilman,

Using a sizing parameter solved the problem. Thank you.  I found out the
rubberstamp does not get printed, even if it is visible in PDF reader? Why?
On the print dialog, I have selected to print stamp.

Thanks.
Jason

On Mon, Apr 30, 2018 at 6:54 AM, Tilman Hausherr <[email protected]>
wrote:

In the drawXObject call, divide / multiply the size parameters by a float
value, e.g. 0.5.

TilmaN


Am 30.04.2018 um 03:35 schrieb JZ Q:

Hi everyone,

I used a lightly modified example code  (RubberstampWithImage) to add
rubber stamp to a text field. it works fine except the resolution of image
seems to be too low.

See below,  if I use the image of same pixel width as the box size, the
image becomes very blur. But I increase the image, it only shows part of
it.

So how do I add a clear stamp (image) that fits into the RECT of the text
widget? Thanks.


Field FQN: broker_sig
Image File: broker_signature.png
Image Size: (170, 34)
Box Size (424.46, 16.25)
in inch (5.8952775, 0.22569445)
Box Position (135.035, 182.717)


public static void addStamp(PDDocument document, PDField selectedField,
String imageFilename) throws IOException {

PDPage page = selectedField.getWidgets().get(0).getPage();

PDRectangle rect = selectedField.getWidgets().get(0).getRectangle();
List<PDAnnotation> annotations = page.getAnnotations();
PDAnnotationRubberStamp rubberStamp = new PDAnnotationRubberStamp();

// create a PDXObjectImage with the given image file
PDImageXObject ximage = PDImageXObject.createFromFile(imageFilename,
document);

// define and set the target rectangle
int imgWidth = ximage.getImage().getWidth();
int imgHeight = ximage.getImage().getHeight();
System.out.println("Field FQN: " + selectedField.getFullyQualifie
dName());
System.out.println("Image File: " + imageFilename);
System.out.println("Image Size: (" + imgWidth + ", " + imgHeight + ")");
System.out.println("Box Size (" + rect.getWidth() + ", " +
rect.getHeight()
+ ")");
System.out.println("in inch (" + rect.getWidth()/72 + ", " +
rect.getHeight()/72 + ")");
System.out.println("Box Position (" + rect.getLowerLeftX() + ", " +
rect.getLowerLeftY() + ")");
// Create a PDFormXObject
PDFormXObject form = new PDFormXObject(document);
form.setResources(new PDResources());
form.setBBox(rect);
form.setFormType(1);

// adjust the image to the target rectangle and add it to the stream
OutputStream os = form.getStream().createOutputStream();
//center the object horizontally
float imageLeftX = rect.getLowerLeftX() + (rect.getWidth() - imgWidth)/2;
drawXObject(ximage, form.getResources(), os, imageLeftX,
rect.getLowerLeftY(), imgWidth, imgHeight);
os.close();

PDAppearanceStream myDic = new PDAppearanceStream(form.getCOSObject());
PDAppearanceDictionary appearance = new PDAppearanceDictionary(new
COSDictionary());
appearance.setNormalAppearance(myDic);
rubberStamp.setAppearance(appearance);
rubberStamp.setRectangle(rect);

// add the new RubberStamp to the document
annotations.add(rubberStamp);
}


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]





---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to