pdfbox-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tilman Hausherr <THaush...@t-online.de>
Subject Re: RubberstampWithImage
Date Mon, 30 Apr 2018 18:19:30 GMT
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 <THausherr@t-online.de>
> 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: users-unsubscribe@pdfbox.apache.org
>> For additional commands, e-mail: users-help@pdfbox.apache.org
>>
>>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
For additional commands, e-mail: users-help@pdfbox.apache.org


Mime
View raw message