pdfbox-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From chitgoks <chitg...@gmail.com>
Subject Re: watermark text issue
Date Sun, 20 Aug 2017 07:33:54 GMT
hi tilman

yes. the watermark is appended to an existing pdf. and my 5th parameter is
true

i just want it not to be selectable. prepend would have worked. but for an
existing page, what happens is that since i made the watermark text
transparent, the page's text also gets transparent.

this is my code. watermarks is an arraylist of string. max of 3.

PDFont font = PDType1Font.HELVETICA;
float fontSize = 80f;
PDPageTree pages = pdfDocument.getPages();

PDExtendedGraphicsState gs = new PDExtendedGraphicsState();
gs.setNonStrokingAlphaConstant(0.3f);
PDPage page = pages.get(0);

try (PDPageContentStream cs = new PDPageContentStream(pdfDocument, page,
AppendMode.APPEND, true, true)) {
    cs.setFont(font, fontSize);
    cs.setNonStrokingColor(Color.GRAY);
    cs.setGraphicsStateParameters(gs);
    for (int w=0; w<watermark.size(); w++) {
float stringWidth = font.getStringWidth(watermark.get(w)) / 1000 * fontSize;
float fontHeight = 15;
cs.saveGraphicsState();
cs.beginText();
if (watermark.size() == 1)
   cs.transform(Matrix.getRotateInstance(Math.toRadians(270),
(page.getCropBox().getWidth() - (fontHeight / 2)) / 2,
(page.getCropBox().getHeight() + stringWidth) / 2));
else if (watermark.size() == 2) {
   cs.transform(Matrix.getRotateInstance(Math.toRadians(270),
(page.getCropBox().getWidth() / 2) - (w == 0 ? -(fontHeight / 2) :
fontHeight),
(page.getCropBox().getHeight() + stringWidth) / 2));
}
else {
   float fontHeightValueToUse = fontHeight / 2;
   if (w == 0)
fontHeightValueToUse = -(fontHeight * 2);
   else if (w == 2)
fontHeightValueToUse = fontHeight * 3;

   cs.transform(Matrix.getRotateInstance(Math.toRadians(270),
(page.getCropBox().getWidth() - fontHeightValueToUse) / 2,
(page.getCropBox().getHeight() + stringWidth) / 2));
}
cs.showText(watermark.get(w));
cs.endText();
cs.restoreGraphicsState();
    }
} catch (Exception e) {

}

Website/Java Games: http://www.chitgoks.com
My Blogs:
http://tech.chitgoks.com
http://wuhtevah.chitgoks.com
http://disneyusa.blogspot.com

On Sun, Aug 20, 2017 at 2:56 PM, Tilman Hausherr <THausherr@t-online.de>
wrote:

> Am 20.08.2017 um 08:38 schrieb chitgoks:
>
>> Hi gilad. thank you for replying
>>
>> there should still be some way to do this right? if not the content stream
>> then i guess the only other way is via overlays
>>
>
> Are you aware that you can always add a content stream to an existing
> page? Either prepend or append. When appending, use the constructor with 5
> parameters and set the last to true. For a watermark, prepend is probably
> better.
>
> Tilman
>
>
>> Website/Java Games: http://www.chitgoks.com
>> My Blogs:
>> http://tech.chitgoks.com
>> http://wuhtevah.chitgoks.com
>> http://disneyusa.blogspot.com
>>
>> On Sat, Aug 19, 2017 at 4:42 PM, Gilad Denneboom <
>> gilad.denneboom@gmail.com>
>> wrote:
>>
>> If you're adding text it will always be selectable. If you don't want it
>>> to
>>> be you need to use an image.
>>>
>>> On Sat, Aug 19, 2017 at 4:53 AM, chitgoks <chitgoks@gmail.com> wrote:
>>>
>>> i have question regarding watermarks
>>>>
>>>> so i have created some transparent like text in the content stream to
>>>>
>>> mimic
>>>
>>>> a watermark
>>>>
>>>> problem is, it can still be selected. is there an option in content
>>>>
>>> stream
>>>
>>>> to flatten this?
>>>>
>>>> i read about overlay but my code is already catered to content stream.
>>>> so
>>>> would be nice not having to use overlay if possible
>>>>
>>>> any ideas?
>>>>
>>>> mark
>>>>
>>>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
> For additional commands, e-mail: users-help@pdfbox.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message