You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@pdfbox.apache.org by a7med shre3y <a7...@gmail.com> on 2015/03/23 15:03:24 UTC

Text removal

Hi all,

Currently I am facing a strange problem removing text from the some PDFs.
My program is able to find the text and "remove it" by calling the
COSString.reset() method.
The problem is, when I open the output PDF file, I still see the text but
not selectable (I mean when I try to highlight it with the mouse to copy
it, it's not selectable!). When print the content (tokens) of the output
file, I DO NOT find the text at all!!

I am currently stuck in the PDF specifications 1.5 and really running out
of time.

I'd so much appreciate any help or any idea on what's going on.

Notes:
1. I use use PDFBox 1.7.1
2. This problem does not occur with all PDFs, only some PDFs cause this
problem.

Thank you very much.
a7mad

Re: Text removal

Posted by Andreas Lehmkühler <an...@lehmi.de>.
Hi,

> a7med shre3y <a7...@gmail.com> hat am 23. März 2015 um 15:03
> geschrieben:
> 
> 
> Hi all,
> 
> Currently I am facing a strange problem removing text from the some PDFs.
> My program is able to find the text and "remove it" by calling the
> COSString.reset() method.
> The problem is, when I open the output PDF file, I still see the text but
> not selectable (I mean when I try to highlight it with the mouse to copy
> it, it's not selectable!). When print the content (tokens) of the output
> file, I DO NOT find the text at all!!
> 
> I am currently stuck in the PDF specifications 1.5 and really running out
> of time.
> 
> I'd so much appreciate any help or any idea on what's going on.
> 
> Notes:
> 1. I use use PDFBox 1.7.1
1.7.1 is more than 2 years old (released in july 2012). I strongly recommend to
use a more recent version, such as 1.8.8

BR
Andreas Lehmkühler

> 2. This problem does not occur with all PDFs, only some PDFs cause this
> problem.
> 
> Thank you very much.
> a7mad

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


Re: Text removal

Posted by a7med shre3y <a7...@gmail.com>.
Hi,

I'd just like to thank you all Maruan, Andreas and Peter for your help and
support. Unfortunately it seems like I have to put this issue aside for a
while as it's quite complex specially that I don't have the knowledge yet
for doing it.
Thank you once more, and have a nice weekend :-)

a7mad

On Tue, Mar 24, 2015 at 1:33 PM, Maruan Sahyoun <sa...@fileaffairs.de>
wrote:

>
> > Am 24.03.2015 um 12:49 schrieb a7med shre3y <a7...@gmail.com>:
> >
> > The question here is how does the text still show up in the output
> file???
>
> as written earlier before the 'text' is a drawing i.e. vector graphics the
> same way the ellipses have been drawn.
>
>
> > I assume the text should have been cached somewhere else in the PDF! I
> > don't know if my assumption is correct, do you have any explanation for
> > that?
> >
> > On Tue, Mar 24, 2015 at 10:46 AM, Maruan Sahyoun <sahyoun@fileaffairs.de
> >
> > wrote:
> >
> >>
> >>> Am 24.03.2015 um 10:43 schrieb a7med shre3y <a7...@gmail.com>:
> >>>
> >>> I mean how to find them in the PDF while rotating over the tokens, what
> >> is
> >>> the operator?
> >>>
> >>> On Tue, Mar 24, 2015 at 10:40 AM, Maruan Sahyoun <
> sahyoun@fileaffairs.de
> >>>
> >>> wrote:
> >>>
> >>>>
> >>>>> Am 24.03.2015 um 10:36 schrieb a7med shre3y <a7med.shre3y@gmail.com
> >:
> >>>>>
> >>>>> What are the drawing commands? I'd then investigate one how to
> specify
> >>>> the
> >>>>> text ones.
> >>>>>
> >>>>
> >>>> 738.7469 167.1278 m
> >>
> >> MoveTo
> >>
> >>>> 733.8743 167.1278 l
> >>>>
> >>
> >> LineTo
> >>
> >>
> >>>>
> >>>>
> >>>>> On Tue, Mar 24, 2015 at 10:26 AM, Maruan Sahyoun <
> >> sahyoun@fileaffairs.de
> >>>>>
> >>>>> wrote:
> >>>>>
> >>>>>>
> >>>>>>> Am 24.03.2015 um 10:14 schrieb a7med shre3y <
> a7med.shre3y@gmail.com
> >>> :
> >>>>>>>
> >>>>>>> That's true, I've even tried to change the rendering text mode to
> >> other
> >>>>>>> values already as mentioned in the PDF specs 1.5 table 5.3 before
> >>>>>> removing
> >>>>>>> it also didn't work.
> >>>>>>> So how to remove the graphics content then?
> >>>>>>
> >>>>>> the simple answer - remove the drawing commands.
> >>>>>>
> >>>>>> The longer answer as you obviously don't want to remove all drawing
> >>>>>> commands you'd need to find which are the ones drawing the text. As
> >> you
> >>>>>> would like to remove certain vectors which are matching a certain
> >>>>>> character/glyph you first need to find out which are the ones
> drawing
> >>>> e.g.
> >>>>>> the letter 'T'. I don't think that this is doable in a reasonable
> >>>> amount of
> >>>>>> time for arbitary text.
> >>>>>>
> >>>>>> Maruan
> >>>>>>
> >>>>>>
> >>>>>>>
> >>>>>>> Best Regards,
> >>>>>>>
> >>>>>>> On Tue, Mar 24, 2015 at 10:06 AM, Maruan Sahyoun <
> >>>> sahyoun@fileaffairs.de
> >>>>>>>
> >>>>>>> wrote:
> >>>>>>>
> >>>>>>>> Hi,
> >>>>>>>>
> >>>>>>>>> Am 24.03.2015 um 09:55 schrieb a7med shre3y <
> >> a7med.shre3y@gmail.com
> >>>>> :
> >>>>>>>>>
> >>>>>>>>> You can download it from here:
> >>>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>
> >>
> https://drive.google.com/file/d/0B5Kxacm1mej-MEZubTNYVVJYTFE/view?usp=sharing
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>> looking more closely you correctly replaced the text, but that
> text
> >>>> was
> >>>>>> in
> >>>>>>>> there for searching within the PDF as it used text rendering mode
> 3
> >>>>>>>> (invisible). The 'text' you are still seeing is drawn using vector
> >>>>>> commands
> >>>>>>>> so it's graphics content.
> >>>>>>>>
> >>>>>>>> BR
> >>>>>>>> Maruan
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>> Best Regards,
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> On Tue, Mar 24, 2015 at 9:48 AM, Maruan Sahyoun <
> >>>>>> sahyoun@fileaffairs.de>
> >>>>>>>>> wrote:
> >>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>> Am 24.03.2015 um 09:40 schrieb a7med shre3y <
> >>>> a7med.shre3y@gmail.com
> >>>>>>> :
> >>>>>>>>>>>
> >>>>>>>>>>> Hi,
> >>>>>>>>>>>
> >>>>>>>>>>> In fact PDFBox call the operation of transforming "7R %H
> >> $SSURYHG"
> >>>> to
> >>>>>>>> "To
> >>>>>>>>>>> Be Approved" as "encoding". Anyway, either it's encoding or
> >>>>>> decoding, I
> >>>>>>>>>>> thought it's easier to transform "7R %H $SSURYHG" to "To Be
> >>>> Approved"
> >>>>>>>> and
> >>>>>>>>>>> not the opposite (or at least I don't know). I spent some quite
> >>>> long
> >>>>>>>> time
> >>>>>>>>>>> trying to find out how to find the character codes for the
> glyphs
> >>>> in
> >>>>>>>> the
> >>>>>>>>>>> currently used font, then I found that it's not an easy task.
> By
> >>>> the
> >>>>>>>> way,
> >>>>>>>>>>> if you know how to do that, I'd so much appreciate it because I
> >>>> need
> >>>>>>>> that
> >>>>>>>>>>> for replacing text with another text and for that the new text
> >> must
> >>>>>> be
> >>>>>>>>>>> encoded the same way as the original!
> >>>>>>>>>>>
> >>>>>>>>>>> Back to the text removal, I am able to find the text and also
> >>>> remove
> >>>>>> it
> >>>>>>>>>> by
> >>>>>>>>>>> calling reset, as I mentioned in my first email, when I print
> the
> >>>>>>>> output
> >>>>>>>>>>> content I don't find the text anymore but I still see it when I
> >>>> open
> >>>>>>>> the
> >>>>>>>>>>> file. My first assumption was that there must be some other way
> >> to
> >>>>>>>> remove
> >>>>>>>>>>> the text other than the way I am using, and that's what you've
> >>>>>> actually
> >>>>>>>>>>> confirmed in your reply, so could you please tell me what still
> >>>>>>>> missing?
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> Could you upload the PDF with the reset text too?
> >>>>>>>>>>
> >>>>>>>>>> BR
> >>>>>>>>>> Maruan
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>> Thanks and regards,
> >>>>>>>>>>> a7mad
> >>>>>>>>>>>
> >>>>>>>>>>> On Tue, Mar 24, 2015 at 9:22 AM, Maruan Sahyoun <
> >>>>>>>> sahyoun@fileaffairs.de>
> >>>>>>>>>>> wrote:
> >>>>>>>>>>>
> >>>>>>>>>>>> Hi,
> >>>>>>>>>>>>
> >>>>>>>>>>>>> Am 24.03.2015 um 08:14 schrieb a7med shre3y <
> >>>>>> a7med.shre3y@gmail.com
> >>>>>>>>> :
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Hi,
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Here's how I do it:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> 1. I use the following method to encode the text:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> String encode(String text, PDFont font) throws Exception {
> >>>>>>>>>>>>>  StringBuilder builder = new StringBuilder();
> >>>>>>>>>>>>>  byte[] stringBytes = text.getBytes();
> >>>>>>>>>>>>>  int codeLength = 1;
> >>>>>>>>>>>>>  for(int i = 0; i < stringBytes.length; i += codeLength){
> >>>>>>>>>>>>>          String c = font.encode(stringBytes, i, codeLength);
> >>>>>>>>>>>>>          if(c == null && (i + 1 < stringBytes.length)){
> >>>>>>>>>>>>>              codeLength++;
> >>>>>>>>>>>>>              c = font.encode(stringBytes, i, codeLength);
> >>>>>>>>>>>>>          }
> >>>>>>>>>>>>>          builder.append(c);
> >>>>>>>>>>>>>      }
> >>>>>>>>>>>>>  return builder.toString();
> >>>>>>>>>>>>> }
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> 2. Iterating through the tokens, I find the text either it's
> a
> >>>>>>>>>> COSString
> >>>>>>>>>>>>> ("Tj" operator) or a COSArray ("TJ" operator) then check if
> >> it's
> >>>>>> the
> >>>>>>>>>> text
> >>>>>>>>>>>>> I'm looking for to remove as following:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> if (op.getOperation().equals("Tj")) {
> >>>>>>>>>>>>>                      COSString previous = (COSString)
> >>>>>>>> tokens.get(j
> >>>>>>>>>>>> -
> >>>>>>>>>>>>> 1);
> >>>>>>>>>>>>>                      String string = previous.getString();
> >>>>>>>>>>>>>                      String encodedString = encode(string,
> >>>>>> font);
> >>>>>>>>>>>>
> >>>>>>>>>>>> that string is already encoded. So you'd need to encode "To Be
> >>>>>>>> Approved"
> >>>>>>>>>>>> and compare if that matches the string you are reading from
> the
> >>>> PDF.
> >>>>>>>>>>>>
> >>>>>>>>>>>>>                      if(encodedString.contains("To Be
> >>>>>>>> Approved")){
> >>>>>>>>>>>>>                          previous.reset();
> >>>>>>>>>>>>>                      }
> >>>>>>>>>>>>>                  } else if (op.getOperation().equals("TJ")) {
> >>>>>>>>>>>>>                      COSArray previous = (COSArray)
> >>>> tokens.get(j
> >>>>>>>> -
> >>>>>>>>>>>>> 1);
> >>>>>>>>>>>>>                      StringBuilder stringBuilder = new
> >>>>>>>>>>>>> StringBuilder();
> >>>>>>>>>>>>>                      for (int k = 0; k < previous.size();
> k++)
> >>>> {
> >>>>>>>>>>>>>                          Object arrElement =
> >>>>>>>>>> previous.getObject(k);
> >>>>>>>>>>>>>                          if (arrElement instanceof COSString)
> >> {
> >>>>>>>>>>>>>                              COSString cosString =
> (COSString)
> >>>>>>>>>>>>> arrElement;
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> stringBuilder.append(cosString.getString());
> >>>>>>>>>>>>>                          }
> >>>>>>>>>>>>>                      }
> >>>>>>>>>>>>>                      String string =
> stringBuilder.toString();
> >>>>>>>>>>>>>                      String encodedString = encode(string,
> >>>>>> font);
> >>>>>>>>>>>>>                      if(encodedString.contains("To Be
> >>>>>>>> Approved")){
> >>>>>>>>>>>>>                          previous.clear();
> >>>>>>>>>>>>>                      }
> >>>>>>>>>>>>>                  }
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Note:
> >>>>>>>>>>>>> In case of COSArray, I first iterate through the whole array
> to
> >>>> get
> >>>>>>>> the
> >>>>>>>>>>>>> whole string before encoding and comparison and this works.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Best Regards,
> >>>>>>>>>>>>> a7mad
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> On Mon, Mar 23, 2015 at 10:48 PM, Maruan Sahyoun <
> >>>>>>>>>> sahyoun@fileaffairs.de
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>> Hi,
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> your text is encoded so within the show text operator Tj the
> >>>>>> string
> >>>>>>>> is
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> 7R %H $SSURYHG
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> You wrote that you encode your string to find it - what do
> you
> >>>>>> get?
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> BR
> >>>>>>>>>>>>>> Maruan
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Am 23.03.2015 um 22:01 schrieb a7med shre3y <
> >>>>>>>> a7med.shre3y@gmail.com
> >>>>>>>>>>> :
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Hi Maruan,
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Here's a link from where you can download the PDF.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>
> >>
> https://drive.google.com/file/d/0B5Kxacm1mej-bm82NzNvUXFPSmMtUjc0ZFVjVVlrODZnRzdn/view?usp=sharing
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Kind Regards,
> >>>>>>>>>>>>>>> a7mad
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> On Mon, Mar 23, 2015 at 8:57 PM, Maruan Sahyoun <
> >>>>>>>>>>>> sahyoun@fileaffairs.de>
> >>>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Hi,
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> you need to upload it to a public location as the mailing
> >> list
> >>>>>>>>>> doesn't
> >>>>>>>>>>>>>>>> support attachments.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> BR
> >>>>>>>>>>>>>>>> Maruan
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> Am 23.03.2015 um 19:18 schrieb a7med shre3y <
> >>>>>>>>>> a7med.shre3y@gmail.com
> >>>>>>>>>>>>> :
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> Dear Maruan,
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> Thank you very much for the information. Please find
> >> herewith
> >>>>>>>>>>>> attached
> >>>>>>>>>>>>>>>> the PDF to reproduce the problem.
> >>>>>>>>>>>>>>>>> The text to remove is: "To Be Approved". The text has a
> >>>>>>>> multi-byte
> >>>>>>>>>>>>>>>> encoding, so I call first to encode it in order to find it
> >>>> then
> >>>>>>>>>> remove
> >>>>>>>>>>>>>> it.
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> Best Regards,
> >>>>>>>>>>>>>>>>> a7mad
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> On Mon, Mar 23, 2015 at 4:13 PM, Maruan Sahyoun <
> >>>>>>>>>>>>>> sahyoun@fileaffairs.de>
> >>>>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>>> Dear a7mad,
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> removing text from a PDF is not an easy task as
> >>>>>>>>>>>>>>>>>> - text which might visually appear as a single item
> might
> >>>>>>>>>> consistent
> >>>>>>>>>>>>>> of
> >>>>>>>>>>>>>>>> individual parts within the PDF itself e.g. each character
> >> or
> >>>>>>>> groups
> >>>>>>>>>>>> of
> >>>>>>>>>>>>>>>> characters are place individually in different COSStrings
> >>>>>>>>>>>>>>>>>> - text might be drawn using graphics commands
> >>>>>>>>>>>>>>>>>> - text can appear within different parts of the PDF
> (e.g.
> >>>> the
> >>>>>>>> text
> >>>>>>>>>>>>>>>> might be content of a form field AND the annotation
> >>>> representing
> >>>>>>>> the
> >>>>>>>>>>>>>> form
> >>>>>>>>>>>>>>>> field visually)
> >>>>>>>>>>>>>>>>>> - you need to look up the encoding information to get
> form
> >>>> the
> >>>>>>>>>>>>>>>> characters in the PDF "string" to the ones you are looking
> >> for
> >>>>>>>>>>>>>>>>>> ….
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> If you can post a specific PDF to a public location and
> >>>>>> describe
> >>>>>>>>>> in
> >>>>>>>>>>>>>>>> detail which string should have been replaced which
> hasn't I
> >>>>>> will
> >>>>>>>> be
> >>>>>>>>>>>>>> able
> >>>>>>>>>>>>>>>> to tell you why that might have happened.
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> Maruan
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> Am 23.03.2015 um 15:03 schrieb a7med shre3y <
> >>>>>>>>>>>> a7med.shre3y@gmail.com
> >>>>>>>>>>>>>>> :
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> Hi all,
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> Currently I am facing a strange problem removing text
> >> from
> >>>>>> the
> >>>>>>>>>> some
> >>>>>>>>>>>>>>>> PDFs.
> >>>>>>>>>>>>>>>>>>> My program is able to find the text and "remove it" by
> >>>>>> calling
> >>>>>>>>>> the
> >>>>>>>>>>>>>>>>>>> COSString.reset() method.
> >>>>>>>>>>>>>>>>>>> The problem is, when I open the output PDF file, I
> still
> >>>> see
> >>>>>>>> the
> >>>>>>>>>>>> text
> >>>>>>>>>>>>>>>> but
> >>>>>>>>>>>>>>>>>>> not selectable (I mean when I try to highlight it with
> >> the
> >>>>>>>> mouse
> >>>>>>>>>> to
> >>>>>>>>>>>>>>>> copy
> >>>>>>>>>>>>>>>>>>> it, it's not selectable!). When print the content
> >> (tokens)
> >>>> of
> >>>>>>>> the
> >>>>>>>>>>>>>>>> output
> >>>>>>>>>>>>>>>>>>> file, I DO NOT find the text at all!!
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> I am currently stuck in the PDF specifications 1.5 and
> >>>> really
> >>>>>>>>>>>> running
> >>>>>>>>>>>>>>>> out
> >>>>>>>>>>>>>>>>>>> of time.
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> I'd so much appreciate any help or any idea on what's
> >> going
> >>>>>> on.
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> Notes:
> >>>>>>>>>>>>>>>>>>> 1. I use use PDFBox 1.7.1
> >>>>>>>>>>>>>>>>>>> 2. This problem does not occur with all PDFs, only some
> >>>> PDFs
> >>>>>>>>>> cause
> >>>>>>>>>>>>>>>> this
> >>>>>>>>>>>>>>>>>>> problem.
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> Thank you very much.
> >>>>>>>>>>>>>>>>>>> a7mad
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>
> ---------------------------------------------------------------------
> >>>>>>>>>>>>>>>>>> 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
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>
> >> ---------------------------------------------------------------------
> >>>>>>>>>>>>>> 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
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>> ---------------------------------------------------------------------
> >>>>>>>>>> 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
> >>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> ---------------------------------------------------------------------
> >>>>>> 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
> >>>>
> >>>>
> >>
> >>
> >> ---------------------------------------------------------------------
> >> 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
>
>

Re: Text removal

Posted by Maruan Sahyoun <sa...@fileaffairs.de>.
> Am 24.03.2015 um 12:49 schrieb a7med shre3y <a7...@gmail.com>:
> 
> The question here is how does the text still show up in the output file???

as written earlier before the 'text' is a drawing i.e. vector graphics the same way the ellipses have been drawn.


> I assume the text should have been cached somewhere else in the PDF! I
> don't know if my assumption is correct, do you have any explanation for
> that?
> 
> On Tue, Mar 24, 2015 at 10:46 AM, Maruan Sahyoun <sa...@fileaffairs.de>
> wrote:
> 
>> 
>>> Am 24.03.2015 um 10:43 schrieb a7med shre3y <a7...@gmail.com>:
>>> 
>>> I mean how to find them in the PDF while rotating over the tokens, what
>> is
>>> the operator?
>>> 
>>> On Tue, Mar 24, 2015 at 10:40 AM, Maruan Sahyoun <sahyoun@fileaffairs.de
>>> 
>>> wrote:
>>> 
>>>> 
>>>>> Am 24.03.2015 um 10:36 schrieb a7med shre3y <a7...@gmail.com>:
>>>>> 
>>>>> What are the drawing commands? I'd then investigate one how to specify
>>>> the
>>>>> text ones.
>>>>> 
>>>> 
>>>> 738.7469 167.1278 m
>> 
>> MoveTo
>> 
>>>> 733.8743 167.1278 l
>>>> 
>> 
>> LineTo
>> 
>> 
>>>> 
>>>> 
>>>>> On Tue, Mar 24, 2015 at 10:26 AM, Maruan Sahyoun <
>> sahyoun@fileaffairs.de
>>>>> 
>>>>> wrote:
>>>>> 
>>>>>> 
>>>>>>> Am 24.03.2015 um 10:14 schrieb a7med shre3y <a7med.shre3y@gmail.com
>>> :
>>>>>>> 
>>>>>>> That's true, I've even tried to change the rendering text mode to
>> other
>>>>>>> values already as mentioned in the PDF specs 1.5 table 5.3 before
>>>>>> removing
>>>>>>> it also didn't work.
>>>>>>> So how to remove the graphics content then?
>>>>>> 
>>>>>> the simple answer - remove the drawing commands.
>>>>>> 
>>>>>> The longer answer as you obviously don't want to remove all drawing
>>>>>> commands you'd need to find which are the ones drawing the text. As
>> you
>>>>>> would like to remove certain vectors which are matching a certain
>>>>>> character/glyph you first need to find out which are the ones drawing
>>>> e.g.
>>>>>> the letter 'T'. I don't think that this is doable in a reasonable
>>>> amount of
>>>>>> time for arbitary text.
>>>>>> 
>>>>>> Maruan
>>>>>> 
>>>>>> 
>>>>>>> 
>>>>>>> Best Regards,
>>>>>>> 
>>>>>>> On Tue, Mar 24, 2015 at 10:06 AM, Maruan Sahyoun <
>>>> sahyoun@fileaffairs.de
>>>>>>> 
>>>>>>> wrote:
>>>>>>> 
>>>>>>>> Hi,
>>>>>>>> 
>>>>>>>>> Am 24.03.2015 um 09:55 schrieb a7med shre3y <
>> a7med.shre3y@gmail.com
>>>>> :
>>>>>>>>> 
>>>>>>>>> You can download it from here:
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>> 
>> https://drive.google.com/file/d/0B5Kxacm1mej-MEZubTNYVVJYTFE/view?usp=sharing
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> looking more closely you correctly replaced the text, but that text
>>>> was
>>>>>> in
>>>>>>>> there for searching within the PDF as it used text rendering mode 3
>>>>>>>> (invisible). The 'text' you are still seeing is drawn using vector
>>>>>> commands
>>>>>>>> so it's graphics content.
>>>>>>>> 
>>>>>>>> BR
>>>>>>>> Maruan
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> Best Regards,
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> On Tue, Mar 24, 2015 at 9:48 AM, Maruan Sahyoun <
>>>>>> sahyoun@fileaffairs.de>
>>>>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>>> Am 24.03.2015 um 09:40 schrieb a7med shre3y <
>>>> a7med.shre3y@gmail.com
>>>>>>> :
>>>>>>>>>>> 
>>>>>>>>>>> Hi,
>>>>>>>>>>> 
>>>>>>>>>>> In fact PDFBox call the operation of transforming "7R %H
>> $SSURYHG"
>>>> to
>>>>>>>> "To
>>>>>>>>>>> Be Approved" as "encoding". Anyway, either it's encoding or
>>>>>> decoding, I
>>>>>>>>>>> thought it's easier to transform "7R %H $SSURYHG" to "To Be
>>>> Approved"
>>>>>>>> and
>>>>>>>>>>> not the opposite (or at least I don't know). I spent some quite
>>>> long
>>>>>>>> time
>>>>>>>>>>> trying to find out how to find the character codes for the glyphs
>>>> in
>>>>>>>> the
>>>>>>>>>>> currently used font, then I found that it's not an easy task. By
>>>> the
>>>>>>>> way,
>>>>>>>>>>> if you know how to do that, I'd so much appreciate it because I
>>>> need
>>>>>>>> that
>>>>>>>>>>> for replacing text with another text and for that the new text
>> must
>>>>>> be
>>>>>>>>>>> encoded the same way as the original!
>>>>>>>>>>> 
>>>>>>>>>>> Back to the text removal, I am able to find the text and also
>>>> remove
>>>>>> it
>>>>>>>>>> by
>>>>>>>>>>> calling reset, as I mentioned in my first email, when I print the
>>>>>>>> output
>>>>>>>>>>> content I don't find the text anymore but I still see it when I
>>>> open
>>>>>>>> the
>>>>>>>>>>> file. My first assumption was that there must be some other way
>> to
>>>>>>>> remove
>>>>>>>>>>> the text other than the way I am using, and that's what you've
>>>>>> actually
>>>>>>>>>>> confirmed in your reply, so could you please tell me what still
>>>>>>>> missing?
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> Could you upload the PDF with the reset text too?
>>>>>>>>>> 
>>>>>>>>>> BR
>>>>>>>>>> Maruan
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>>> Thanks and regards,
>>>>>>>>>>> a7mad
>>>>>>>>>>> 
>>>>>>>>>>> On Tue, Mar 24, 2015 at 9:22 AM, Maruan Sahyoun <
>>>>>>>> sahyoun@fileaffairs.de>
>>>>>>>>>>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>>> Hi,
>>>>>>>>>>>> 
>>>>>>>>>>>>> Am 24.03.2015 um 08:14 schrieb a7med shre3y <
>>>>>> a7med.shre3y@gmail.com
>>>>>>>>> :
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Here's how I do it:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 1. I use the following method to encode the text:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> String encode(String text, PDFont font) throws Exception {
>>>>>>>>>>>>>  StringBuilder builder = new StringBuilder();
>>>>>>>>>>>>>  byte[] stringBytes = text.getBytes();
>>>>>>>>>>>>>  int codeLength = 1;
>>>>>>>>>>>>>  for(int i = 0; i < stringBytes.length; i += codeLength){
>>>>>>>>>>>>>          String c = font.encode(stringBytes, i, codeLength);
>>>>>>>>>>>>>          if(c == null && (i + 1 < stringBytes.length)){
>>>>>>>>>>>>>              codeLength++;
>>>>>>>>>>>>>              c = font.encode(stringBytes, i, codeLength);
>>>>>>>>>>>>>          }
>>>>>>>>>>>>>          builder.append(c);
>>>>>>>>>>>>>      }
>>>>>>>>>>>>>  return builder.toString();
>>>>>>>>>>>>> }
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 2. Iterating through the tokens, I find the text either it's a
>>>>>>>>>> COSString
>>>>>>>>>>>>> ("Tj" operator) or a COSArray ("TJ" operator) then check if
>> it's
>>>>>> the
>>>>>>>>>> text
>>>>>>>>>>>>> I'm looking for to remove as following:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> if (op.getOperation().equals("Tj")) {
>>>>>>>>>>>>>                      COSString previous = (COSString)
>>>>>>>> tokens.get(j
>>>>>>>>>>>> -
>>>>>>>>>>>>> 1);
>>>>>>>>>>>>>                      String string = previous.getString();
>>>>>>>>>>>>>                      String encodedString = encode(string,
>>>>>> font);
>>>>>>>>>>>> 
>>>>>>>>>>>> that string is already encoded. So you'd need to encode "To Be
>>>>>>>> Approved"
>>>>>>>>>>>> and compare if that matches the string you are reading from the
>>>> PDF.
>>>>>>>>>>>> 
>>>>>>>>>>>>>                      if(encodedString.contains("To Be
>>>>>>>> Approved")){
>>>>>>>>>>>>>                          previous.reset();
>>>>>>>>>>>>>                      }
>>>>>>>>>>>>>                  } else if (op.getOperation().equals("TJ")) {
>>>>>>>>>>>>>                      COSArray previous = (COSArray)
>>>> tokens.get(j
>>>>>>>> -
>>>>>>>>>>>>> 1);
>>>>>>>>>>>>>                      StringBuilder stringBuilder = new
>>>>>>>>>>>>> StringBuilder();
>>>>>>>>>>>>>                      for (int k = 0; k < previous.size(); k++)
>>>> {
>>>>>>>>>>>>>                          Object arrElement =
>>>>>>>>>> previous.getObject(k);
>>>>>>>>>>>>>                          if (arrElement instanceof COSString)
>> {
>>>>>>>>>>>>>                              COSString cosString = (COSString)
>>>>>>>>>>>>> arrElement;
>>>>>>>>>>>>> 
>>>>>>>>>>>>> stringBuilder.append(cosString.getString());
>>>>>>>>>>>>>                          }
>>>>>>>>>>>>>                      }
>>>>>>>>>>>>>                      String string = stringBuilder.toString();
>>>>>>>>>>>>>                      String encodedString = encode(string,
>>>>>> font);
>>>>>>>>>>>>>                      if(encodedString.contains("To Be
>>>>>>>> Approved")){
>>>>>>>>>>>>>                          previous.clear();
>>>>>>>>>>>>>                      }
>>>>>>>>>>>>>                  }
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Note:
>>>>>>>>>>>>> In case of COSArray, I first iterate through the whole array to
>>>> get
>>>>>>>> the
>>>>>>>>>>>>> whole string before encoding and comparison and this works.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Best Regards,
>>>>>>>>>>>>> a7mad
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> On Mon, Mar 23, 2015 at 10:48 PM, Maruan Sahyoun <
>>>>>>>>>> sahyoun@fileaffairs.de
>>>>>>>>>>>>> 
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> your text is encoded so within the show text operator Tj the
>>>>>> string
>>>>>>>> is
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 7R %H $SSURYHG
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> You wrote that you encode your string to find it - what do you
>>>>>> get?
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> BR
>>>>>>>>>>>>>> Maruan
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Am 23.03.2015 um 22:01 schrieb a7med shre3y <
>>>>>>>> a7med.shre3y@gmail.com
>>>>>>>>>>> :
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Hi Maruan,
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Here's a link from where you can download the PDF.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>> 
>> https://drive.google.com/file/d/0B5Kxacm1mej-bm82NzNvUXFPSmMtUjc0ZFVjVVlrODZnRzdn/view?usp=sharing
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Kind Regards,
>>>>>>>>>>>>>>> a7mad
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> On Mon, Mar 23, 2015 at 8:57 PM, Maruan Sahyoun <
>>>>>>>>>>>> sahyoun@fileaffairs.de>
>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> you need to upload it to a public location as the mailing
>> list
>>>>>>>>>> doesn't
>>>>>>>>>>>>>>>> support attachments.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> BR
>>>>>>>>>>>>>>>> Maruan
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Am 23.03.2015 um 19:18 schrieb a7med shre3y <
>>>>>>>>>> a7med.shre3y@gmail.com
>>>>>>>>>>>>> :
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Dear Maruan,
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Thank you very much for the information. Please find
>> herewith
>>>>>>>>>>>> attached
>>>>>>>>>>>>>>>> the PDF to reproduce the problem.
>>>>>>>>>>>>>>>>> The text to remove is: "To Be Approved". The text has a
>>>>>>>> multi-byte
>>>>>>>>>>>>>>>> encoding, so I call first to encode it in order to find it
>>>> then
>>>>>>>>>> remove
>>>>>>>>>>>>>> it.
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Best Regards,
>>>>>>>>>>>>>>>>> a7mad
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> On Mon, Mar 23, 2015 at 4:13 PM, Maruan Sahyoun <
>>>>>>>>>>>>>> sahyoun@fileaffairs.de>
>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>> Dear a7mad,
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> removing text from a PDF is not an easy task as
>>>>>>>>>>>>>>>>>> - text which might visually appear as a single item might
>>>>>>>>>> consistent
>>>>>>>>>>>>>> of
>>>>>>>>>>>>>>>> individual parts within the PDF itself e.g. each character
>> or
>>>>>>>> groups
>>>>>>>>>>>> of
>>>>>>>>>>>>>>>> characters are place individually in different COSStrings
>>>>>>>>>>>>>>>>>> - text might be drawn using graphics commands
>>>>>>>>>>>>>>>>>> - text can appear within different parts of the PDF (e.g.
>>>> the
>>>>>>>> text
>>>>>>>>>>>>>>>> might be content of a form field AND the annotation
>>>> representing
>>>>>>>> the
>>>>>>>>>>>>>> form
>>>>>>>>>>>>>>>> field visually)
>>>>>>>>>>>>>>>>>> - you need to look up the encoding information to get form
>>>> the
>>>>>>>>>>>>>>>> characters in the PDF "string" to the ones you are looking
>> for
>>>>>>>>>>>>>>>>>> ….
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> If you can post a specific PDF to a public location and
>>>>>> describe
>>>>>>>>>> in
>>>>>>>>>>>>>>>> detail which string should have been replaced which hasn't I
>>>>>> will
>>>>>>>> be
>>>>>>>>>>>>>> able
>>>>>>>>>>>>>>>> to tell you why that might have happened.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Maruan
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Am 23.03.2015 um 15:03 schrieb a7med shre3y <
>>>>>>>>>>>> a7med.shre3y@gmail.com
>>>>>>>>>>>>>>> :
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Hi all,
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Currently I am facing a strange problem removing text
>> from
>>>>>> the
>>>>>>>>>> some
>>>>>>>>>>>>>>>> PDFs.
>>>>>>>>>>>>>>>>>>> My program is able to find the text and "remove it" by
>>>>>> calling
>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>> COSString.reset() method.
>>>>>>>>>>>>>>>>>>> The problem is, when I open the output PDF file, I still
>>>> see
>>>>>>>> the
>>>>>>>>>>>> text
>>>>>>>>>>>>>>>> but
>>>>>>>>>>>>>>>>>>> not selectable (I mean when I try to highlight it with
>> the
>>>>>>>> mouse
>>>>>>>>>> to
>>>>>>>>>>>>>>>> copy
>>>>>>>>>>>>>>>>>>> it, it's not selectable!). When print the content
>> (tokens)
>>>> of
>>>>>>>> the
>>>>>>>>>>>>>>>> output
>>>>>>>>>>>>>>>>>>> file, I DO NOT find the text at all!!
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> I am currently stuck in the PDF specifications 1.5 and
>>>> really
>>>>>>>>>>>> running
>>>>>>>>>>>>>>>> out
>>>>>>>>>>>>>>>>>>> of time.
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> I'd so much appreciate any help or any idea on what's
>> going
>>>>>> on.
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Notes:
>>>>>>>>>>>>>>>>>>> 1. I use use PDFBox 1.7.1
>>>>>>>>>>>>>>>>>>> 2. This problem does not occur with all PDFs, only some
>>>> PDFs
>>>>>>>>>> cause
>>>>>>>>>>>>>>>> this
>>>>>>>>>>>>>>>>>>> problem.
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Thank you very much.
>>>>>>>>>>>>>>>>>>> a7mad
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>>>>>>>> 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
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>> 
>> ---------------------------------------------------------------------
>>>>>>>>>>>>>> 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
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>> ---------------------------------------------------------------------
>>>>>>>>>> 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
>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> ---------------------------------------------------------------------
>>>>>> 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
>>>> 
>>>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> 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


Re: Text removal

Posted by a7med shre3y <a7...@gmail.com>.
The question here is how does the text still show up in the output file???
I assume the text should have been cached somewhere else in the PDF! I
don't know if my assumption is correct, do you have any explanation for
that?

On Tue, Mar 24, 2015 at 10:46 AM, Maruan Sahyoun <sa...@fileaffairs.de>
wrote:

>
> > Am 24.03.2015 um 10:43 schrieb a7med shre3y <a7...@gmail.com>:
> >
> > I mean how to find them in the PDF while rotating over the tokens, what
> is
> > the operator?
> >
> > On Tue, Mar 24, 2015 at 10:40 AM, Maruan Sahyoun <sahyoun@fileaffairs.de
> >
> > wrote:
> >
> >>
> >>> Am 24.03.2015 um 10:36 schrieb a7med shre3y <a7...@gmail.com>:
> >>>
> >>> What are the drawing commands? I'd then investigate one how to specify
> >> the
> >>> text ones.
> >>>
> >>
> >> 738.7469 167.1278 m
>
> MoveTo
>
> >> 733.8743 167.1278 l
> >>
>
> LineTo
>
>
> >>
> >>
> >>> On Tue, Mar 24, 2015 at 10:26 AM, Maruan Sahyoun <
> sahyoun@fileaffairs.de
> >>>
> >>> wrote:
> >>>
> >>>>
> >>>>> Am 24.03.2015 um 10:14 schrieb a7med shre3y <a7med.shre3y@gmail.com
> >:
> >>>>>
> >>>>> That's true, I've even tried to change the rendering text mode to
> other
> >>>>> values already as mentioned in the PDF specs 1.5 table 5.3 before
> >>>> removing
> >>>>> it also didn't work.
> >>>>> So how to remove the graphics content then?
> >>>>
> >>>> the simple answer - remove the drawing commands.
> >>>>
> >>>> The longer answer as you obviously don't want to remove all drawing
> >>>> commands you'd need to find which are the ones drawing the text. As
> you
> >>>> would like to remove certain vectors which are matching a certain
> >>>> character/glyph you first need to find out which are the ones drawing
> >> e.g.
> >>>> the letter 'T'. I don't think that this is doable in a reasonable
> >> amount of
> >>>> time for arbitary text.
> >>>>
> >>>> Maruan
> >>>>
> >>>>
> >>>>>
> >>>>> Best Regards,
> >>>>>
> >>>>> On Tue, Mar 24, 2015 at 10:06 AM, Maruan Sahyoun <
> >> sahyoun@fileaffairs.de
> >>>>>
> >>>>> wrote:
> >>>>>
> >>>>>> Hi,
> >>>>>>
> >>>>>>> Am 24.03.2015 um 09:55 schrieb a7med shre3y <
> a7med.shre3y@gmail.com
> >>> :
> >>>>>>>
> >>>>>>> You can download it from here:
> >>>>>>>
> >>>>>>
> >>>>
> >>
> https://drive.google.com/file/d/0B5Kxacm1mej-MEZubTNYVVJYTFE/view?usp=sharing
> >>>>>>>
> >>>>>>
> >>>>>> looking more closely you correctly replaced the text, but that text
> >> was
> >>>> in
> >>>>>> there for searching within the PDF as it used text rendering mode 3
> >>>>>> (invisible). The 'text' you are still seeing is drawn using vector
> >>>> commands
> >>>>>> so it's graphics content.
> >>>>>>
> >>>>>> BR
> >>>>>> Maruan
> >>>>>>
> >>>>>>
> >>>>>>> Best Regards,
> >>>>>>>
> >>>>>>>
> >>>>>>> On Tue, Mar 24, 2015 at 9:48 AM, Maruan Sahyoun <
> >>>> sahyoun@fileaffairs.de>
> >>>>>>> wrote:
> >>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>> Am 24.03.2015 um 09:40 schrieb a7med shre3y <
> >> a7med.shre3y@gmail.com
> >>>>> :
> >>>>>>>>>
> >>>>>>>>> Hi,
> >>>>>>>>>
> >>>>>>>>> In fact PDFBox call the operation of transforming "7R %H
> $SSURYHG"
> >> to
> >>>>>> "To
> >>>>>>>>> Be Approved" as "encoding". Anyway, either it's encoding or
> >>>> decoding, I
> >>>>>>>>> thought it's easier to transform "7R %H $SSURYHG" to "To Be
> >> Approved"
> >>>>>> and
> >>>>>>>>> not the opposite (or at least I don't know). I spent some quite
> >> long
> >>>>>> time
> >>>>>>>>> trying to find out how to find the character codes for the glyphs
> >> in
> >>>>>> the
> >>>>>>>>> currently used font, then I found that it's not an easy task. By
> >> the
> >>>>>> way,
> >>>>>>>>> if you know how to do that, I'd so much appreciate it because I
> >> need
> >>>>>> that
> >>>>>>>>> for replacing text with another text and for that the new text
> must
> >>>> be
> >>>>>>>>> encoded the same way as the original!
> >>>>>>>>>
> >>>>>>>>> Back to the text removal, I am able to find the text and also
> >> remove
> >>>> it
> >>>>>>>> by
> >>>>>>>>> calling reset, as I mentioned in my first email, when I print the
> >>>>>> output
> >>>>>>>>> content I don't find the text anymore but I still see it when I
> >> open
> >>>>>> the
> >>>>>>>>> file. My first assumption was that there must be some other way
> to
> >>>>>> remove
> >>>>>>>>> the text other than the way I am using, and that's what you've
> >>>> actually
> >>>>>>>>> confirmed in your reply, so could you please tell me what still
> >>>>>> missing?
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>> Could you upload the PDF with the reset text too?
> >>>>>>>>
> >>>>>>>> BR
> >>>>>>>> Maruan
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>> Thanks and regards,
> >>>>>>>>> a7mad
> >>>>>>>>>
> >>>>>>>>> On Tue, Mar 24, 2015 at 9:22 AM, Maruan Sahyoun <
> >>>>>> sahyoun@fileaffairs.de>
> >>>>>>>>> wrote:
> >>>>>>>>>
> >>>>>>>>>> Hi,
> >>>>>>>>>>
> >>>>>>>>>>> Am 24.03.2015 um 08:14 schrieb a7med shre3y <
> >>>> a7med.shre3y@gmail.com
> >>>>>>> :
> >>>>>>>>>>>
> >>>>>>>>>>> Hi,
> >>>>>>>>>>>
> >>>>>>>>>>> Here's how I do it:
> >>>>>>>>>>>
> >>>>>>>>>>> 1. I use the following method to encode the text:
> >>>>>>>>>>>
> >>>>>>>>>>> String encode(String text, PDFont font) throws Exception {
> >>>>>>>>>>>   StringBuilder builder = new StringBuilder();
> >>>>>>>>>>>   byte[] stringBytes = text.getBytes();
> >>>>>>>>>>>   int codeLength = 1;
> >>>>>>>>>>>   for(int i = 0; i < stringBytes.length; i += codeLength){
> >>>>>>>>>>>           String c = font.encode(stringBytes, i, codeLength);
> >>>>>>>>>>>           if(c == null && (i + 1 < stringBytes.length)){
> >>>>>>>>>>>               codeLength++;
> >>>>>>>>>>>               c = font.encode(stringBytes, i, codeLength);
> >>>>>>>>>>>           }
> >>>>>>>>>>>           builder.append(c);
> >>>>>>>>>>>       }
> >>>>>>>>>>>   return builder.toString();
> >>>>>>>>>>> }
> >>>>>>>>>>>
> >>>>>>>>>>> 2. Iterating through the tokens, I find the text either it's a
> >>>>>>>> COSString
> >>>>>>>>>>> ("Tj" operator) or a COSArray ("TJ" operator) then check if
> it's
> >>>> the
> >>>>>>>> text
> >>>>>>>>>>> I'm looking for to remove as following:
> >>>>>>>>>>>
> >>>>>>>>>>> if (op.getOperation().equals("Tj")) {
> >>>>>>>>>>>                       COSString previous = (COSString)
> >>>>>> tokens.get(j
> >>>>>>>>>> -
> >>>>>>>>>>> 1);
> >>>>>>>>>>>                       String string = previous.getString();
> >>>>>>>>>>>                       String encodedString = encode(string,
> >>>> font);
> >>>>>>>>>>
> >>>>>>>>>> that string is already encoded. So you'd need to encode "To Be
> >>>>>> Approved"
> >>>>>>>>>> and compare if that matches the string you are reading from the
> >> PDF.
> >>>>>>>>>>
> >>>>>>>>>>>                       if(encodedString.contains("To Be
> >>>>>> Approved")){
> >>>>>>>>>>>                           previous.reset();
> >>>>>>>>>>>                       }
> >>>>>>>>>>>                   } else if (op.getOperation().equals("TJ")) {
> >>>>>>>>>>>                       COSArray previous = (COSArray)
> >> tokens.get(j
> >>>>>> -
> >>>>>>>>>>> 1);
> >>>>>>>>>>>                       StringBuilder stringBuilder = new
> >>>>>>>>>>> StringBuilder();
> >>>>>>>>>>>                       for (int k = 0; k < previous.size(); k++)
> >> {
> >>>>>>>>>>>                           Object arrElement =
> >>>>>>>> previous.getObject(k);
> >>>>>>>>>>>                           if (arrElement instanceof COSString)
> {
> >>>>>>>>>>>                               COSString cosString = (COSString)
> >>>>>>>>>>> arrElement;
> >>>>>>>>>>>
> >>>>>>>>>>> stringBuilder.append(cosString.getString());
> >>>>>>>>>>>                           }
> >>>>>>>>>>>                       }
> >>>>>>>>>>>                       String string = stringBuilder.toString();
> >>>>>>>>>>>                       String encodedString = encode(string,
> >>>> font);
> >>>>>>>>>>>                       if(encodedString.contains("To Be
> >>>>>> Approved")){
> >>>>>>>>>>>                           previous.clear();
> >>>>>>>>>>>                       }
> >>>>>>>>>>>                   }
> >>>>>>>>>>>
> >>>>>>>>>>> Note:
> >>>>>>>>>>> In case of COSArray, I first iterate through the whole array to
> >> get
> >>>>>> the
> >>>>>>>>>>> whole string before encoding and comparison and this works.
> >>>>>>>>>>>
> >>>>>>>>>>> Best Regards,
> >>>>>>>>>>> a7mad
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> On Mon, Mar 23, 2015 at 10:48 PM, Maruan Sahyoun <
> >>>>>>>> sahyoun@fileaffairs.de
> >>>>>>>>>>>
> >>>>>>>>>>> wrote:
> >>>>>>>>>>>
> >>>>>>>>>>>> Hi,
> >>>>>>>>>>>>
> >>>>>>>>>>>> your text is encoded so within the show text operator Tj the
> >>>> string
> >>>>>> is
> >>>>>>>>>>>>
> >>>>>>>>>>>> 7R %H $SSURYHG
> >>>>>>>>>>>>
> >>>>>>>>>>>> You wrote that you encode your string to find it - what do you
> >>>> get?
> >>>>>>>>>>>>
> >>>>>>>>>>>> BR
> >>>>>>>>>>>> Maruan
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>> Am 23.03.2015 um 22:01 schrieb a7med shre3y <
> >>>>>> a7med.shre3y@gmail.com
> >>>>>>>>> :
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Hi Maruan,
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Here's a link from where you can download the PDF.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>
> >>
> https://drive.google.com/file/d/0B5Kxacm1mej-bm82NzNvUXFPSmMtUjc0ZFVjVVlrODZnRzdn/view?usp=sharing
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Kind Regards,
> >>>>>>>>>>>>> a7mad
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> On Mon, Mar 23, 2015 at 8:57 PM, Maruan Sahyoun <
> >>>>>>>>>> sahyoun@fileaffairs.de>
> >>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>> Hi,
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> you need to upload it to a public location as the mailing
> list
> >>>>>>>> doesn't
> >>>>>>>>>>>>>> support attachments.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> BR
> >>>>>>>>>>>>>> Maruan
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Am 23.03.2015 um 19:18 schrieb a7med shre3y <
> >>>>>>>> a7med.shre3y@gmail.com
> >>>>>>>>>>> :
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Dear Maruan,
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Thank you very much for the information. Please find
> herewith
> >>>>>>>>>> attached
> >>>>>>>>>>>>>> the PDF to reproduce the problem.
> >>>>>>>>>>>>>>> The text to remove is: "To Be Approved". The text has a
> >>>>>> multi-byte
> >>>>>>>>>>>>>> encoding, so I call first to encode it in order to find it
> >> then
> >>>>>>>> remove
> >>>>>>>>>>>> it.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Best Regards,
> >>>>>>>>>>>>>>> a7mad
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> On Mon, Mar 23, 2015 at 4:13 PM, Maruan Sahyoun <
> >>>>>>>>>>>> sahyoun@fileaffairs.de>
> >>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>> Dear a7mad,
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> removing text from a PDF is not an easy task as
> >>>>>>>>>>>>>>>> - text which might visually appear as a single item might
> >>>>>>>> consistent
> >>>>>>>>>>>> of
> >>>>>>>>>>>>>> individual parts within the PDF itself e.g. each character
> or
> >>>>>> groups
> >>>>>>>>>> of
> >>>>>>>>>>>>>> characters are place individually in different COSStrings
> >>>>>>>>>>>>>>>> - text might be drawn using graphics commands
> >>>>>>>>>>>>>>>> - text can appear within different parts of the PDF (e.g.
> >> the
> >>>>>> text
> >>>>>>>>>>>>>> might be content of a form field AND the annotation
> >> representing
> >>>>>> the
> >>>>>>>>>>>> form
> >>>>>>>>>>>>>> field visually)
> >>>>>>>>>>>>>>>> - you need to look up the encoding information to get form
> >> the
> >>>>>>>>>>>>>> characters in the PDF "string" to the ones you are looking
> for
> >>>>>>>>>>>>>>>> ….
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> If you can post a specific PDF to a public location and
> >>>> describe
> >>>>>>>> in
> >>>>>>>>>>>>>> detail which string should have been replaced which hasn't I
> >>>> will
> >>>>>> be
> >>>>>>>>>>>> able
> >>>>>>>>>>>>>> to tell you why that might have happened.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Maruan
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> Am 23.03.2015 um 15:03 schrieb a7med shre3y <
> >>>>>>>>>> a7med.shre3y@gmail.com
> >>>>>>>>>>>>> :
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> Hi all,
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> Currently I am facing a strange problem removing text
> from
> >>>> the
> >>>>>>>> some
> >>>>>>>>>>>>>> PDFs.
> >>>>>>>>>>>>>>>>> My program is able to find the text and "remove it" by
> >>>> calling
> >>>>>>>> the
> >>>>>>>>>>>>>>>>> COSString.reset() method.
> >>>>>>>>>>>>>>>>> The problem is, when I open the output PDF file, I still
> >> see
> >>>>>> the
> >>>>>>>>>> text
> >>>>>>>>>>>>>> but
> >>>>>>>>>>>>>>>>> not selectable (I mean when I try to highlight it with
> the
> >>>>>> mouse
> >>>>>>>> to
> >>>>>>>>>>>>>> copy
> >>>>>>>>>>>>>>>>> it, it's not selectable!). When print the content
> (tokens)
> >> of
> >>>>>> the
> >>>>>>>>>>>>>> output
> >>>>>>>>>>>>>>>>> file, I DO NOT find the text at all!!
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> I am currently stuck in the PDF specifications 1.5 and
> >> really
> >>>>>>>>>> running
> >>>>>>>>>>>>>> out
> >>>>>>>>>>>>>>>>> of time.
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> I'd so much appreciate any help or any idea on what's
> going
> >>>> on.
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> Notes:
> >>>>>>>>>>>>>>>>> 1. I use use PDFBox 1.7.1
> >>>>>>>>>>>>>>>>> 2. This problem does not occur with all PDFs, only some
> >> PDFs
> >>>>>>>> cause
> >>>>>>>>>>>>>> this
> >>>>>>>>>>>>>>>>> problem.
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> Thank you very much.
> >>>>>>>>>>>>>>>>> a7mad
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>
> >>>> ---------------------------------------------------------------------
> >>>>>>>>>>>>>>>> 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
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>
> ---------------------------------------------------------------------
> >>>>>>>>>>>> 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
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >> ---------------------------------------------------------------------
> >>>>>>>> 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
> >>>>>>
> >>>>>>
> >>>>
> >>>>
> >>>> ---------------------------------------------------------------------
> >>>> 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
> >>
> >>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
> For additional commands, e-mail: users-help@pdfbox.apache.org
>
>

Re: Text removal

Posted by Maruan Sahyoun <sa...@fileaffairs.de>.
> Am 24.03.2015 um 10:43 schrieb a7med shre3y <a7...@gmail.com>:
> 
> I mean how to find them in the PDF while rotating over the tokens, what is
> the operator?
> 
> On Tue, Mar 24, 2015 at 10:40 AM, Maruan Sahyoun <sa...@fileaffairs.de>
> wrote:
> 
>> 
>>> Am 24.03.2015 um 10:36 schrieb a7med shre3y <a7...@gmail.com>:
>>> 
>>> What are the drawing commands? I'd then investigate one how to specify
>> the
>>> text ones.
>>> 
>> 
>> 738.7469 167.1278 m

MoveTo

>> 733.8743 167.1278 l
>> 

LineTo


>> 
>> 
>>> On Tue, Mar 24, 2015 at 10:26 AM, Maruan Sahyoun <sahyoun@fileaffairs.de
>>> 
>>> wrote:
>>> 
>>>> 
>>>>> Am 24.03.2015 um 10:14 schrieb a7med shre3y <a7...@gmail.com>:
>>>>> 
>>>>> That's true, I've even tried to change the rendering text mode to other
>>>>> values already as mentioned in the PDF specs 1.5 table 5.3 before
>>>> removing
>>>>> it also didn't work.
>>>>> So how to remove the graphics content then?
>>>> 
>>>> the simple answer - remove the drawing commands.
>>>> 
>>>> The longer answer as you obviously don't want to remove all drawing
>>>> commands you'd need to find which are the ones drawing the text. As you
>>>> would like to remove certain vectors which are matching a certain
>>>> character/glyph you first need to find out which are the ones drawing
>> e.g.
>>>> the letter 'T'. I don't think that this is doable in a reasonable
>> amount of
>>>> time for arbitary text.
>>>> 
>>>> Maruan
>>>> 
>>>> 
>>>>> 
>>>>> Best Regards,
>>>>> 
>>>>> On Tue, Mar 24, 2015 at 10:06 AM, Maruan Sahyoun <
>> sahyoun@fileaffairs.de
>>>>> 
>>>>> wrote:
>>>>> 
>>>>>> Hi,
>>>>>> 
>>>>>>> Am 24.03.2015 um 09:55 schrieb a7med shre3y <a7med.shre3y@gmail.com
>>> :
>>>>>>> 
>>>>>>> You can download it from here:
>>>>>>> 
>>>>>> 
>>>> 
>> https://drive.google.com/file/d/0B5Kxacm1mej-MEZubTNYVVJYTFE/view?usp=sharing
>>>>>>> 
>>>>>> 
>>>>>> looking more closely you correctly replaced the text, but that text
>> was
>>>> in
>>>>>> there for searching within the PDF as it used text rendering mode 3
>>>>>> (invisible). The 'text' you are still seeing is drawn using vector
>>>> commands
>>>>>> so it's graphics content.
>>>>>> 
>>>>>> BR
>>>>>> Maruan
>>>>>> 
>>>>>> 
>>>>>>> Best Regards,
>>>>>>> 
>>>>>>> 
>>>>>>> On Tue, Mar 24, 2015 at 9:48 AM, Maruan Sahyoun <
>>>> sahyoun@fileaffairs.de>
>>>>>>> wrote:
>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> Am 24.03.2015 um 09:40 schrieb a7med shre3y <
>> a7med.shre3y@gmail.com
>>>>> :
>>>>>>>>> 
>>>>>>>>> Hi,
>>>>>>>>> 
>>>>>>>>> In fact PDFBox call the operation of transforming "7R %H $SSURYHG"
>> to
>>>>>> "To
>>>>>>>>> Be Approved" as "encoding". Anyway, either it's encoding or
>>>> decoding, I
>>>>>>>>> thought it's easier to transform "7R %H $SSURYHG" to "To Be
>> Approved"
>>>>>> and
>>>>>>>>> not the opposite (or at least I don't know). I spent some quite
>> long
>>>>>> time
>>>>>>>>> trying to find out how to find the character codes for the glyphs
>> in
>>>>>> the
>>>>>>>>> currently used font, then I found that it's not an easy task. By
>> the
>>>>>> way,
>>>>>>>>> if you know how to do that, I'd so much appreciate it because I
>> need
>>>>>> that
>>>>>>>>> for replacing text with another text and for that the new text must
>>>> be
>>>>>>>>> encoded the same way as the original!
>>>>>>>>> 
>>>>>>>>> Back to the text removal, I am able to find the text and also
>> remove
>>>> it
>>>>>>>> by
>>>>>>>>> calling reset, as I mentioned in my first email, when I print the
>>>>>> output
>>>>>>>>> content I don't find the text anymore but I still see it when I
>> open
>>>>>> the
>>>>>>>>> file. My first assumption was that there must be some other way to
>>>>>> remove
>>>>>>>>> the text other than the way I am using, and that's what you've
>>>> actually
>>>>>>>>> confirmed in your reply, so could you please tell me what still
>>>>>> missing?
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> Could you upload the PDF with the reset text too?
>>>>>>>> 
>>>>>>>> BR
>>>>>>>> Maruan
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> Thanks and regards,
>>>>>>>>> a7mad
>>>>>>>>> 
>>>>>>>>> On Tue, Mar 24, 2015 at 9:22 AM, Maruan Sahyoun <
>>>>>> sahyoun@fileaffairs.de>
>>>>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>>> Hi,
>>>>>>>>>> 
>>>>>>>>>>> Am 24.03.2015 um 08:14 schrieb a7med shre3y <
>>>> a7med.shre3y@gmail.com
>>>>>>> :
>>>>>>>>>>> 
>>>>>>>>>>> Hi,
>>>>>>>>>>> 
>>>>>>>>>>> Here's how I do it:
>>>>>>>>>>> 
>>>>>>>>>>> 1. I use the following method to encode the text:
>>>>>>>>>>> 
>>>>>>>>>>> String encode(String text, PDFont font) throws Exception {
>>>>>>>>>>>   StringBuilder builder = new StringBuilder();
>>>>>>>>>>>   byte[] stringBytes = text.getBytes();
>>>>>>>>>>>   int codeLength = 1;
>>>>>>>>>>>   for(int i = 0; i < stringBytes.length; i += codeLength){
>>>>>>>>>>>           String c = font.encode(stringBytes, i, codeLength);
>>>>>>>>>>>           if(c == null && (i + 1 < stringBytes.length)){
>>>>>>>>>>>               codeLength++;
>>>>>>>>>>>               c = font.encode(stringBytes, i, codeLength);
>>>>>>>>>>>           }
>>>>>>>>>>>           builder.append(c);
>>>>>>>>>>>       }
>>>>>>>>>>>   return builder.toString();
>>>>>>>>>>> }
>>>>>>>>>>> 
>>>>>>>>>>> 2. Iterating through the tokens, I find the text either it's a
>>>>>>>> COSString
>>>>>>>>>>> ("Tj" operator) or a COSArray ("TJ" operator) then check if it's
>>>> the
>>>>>>>> text
>>>>>>>>>>> I'm looking for to remove as following:
>>>>>>>>>>> 
>>>>>>>>>>> if (op.getOperation().equals("Tj")) {
>>>>>>>>>>>                       COSString previous = (COSString)
>>>>>> tokens.get(j
>>>>>>>>>> -
>>>>>>>>>>> 1);
>>>>>>>>>>>                       String string = previous.getString();
>>>>>>>>>>>                       String encodedString = encode(string,
>>>> font);
>>>>>>>>>> 
>>>>>>>>>> that string is already encoded. So you'd need to encode "To Be
>>>>>> Approved"
>>>>>>>>>> and compare if that matches the string you are reading from the
>> PDF.
>>>>>>>>>> 
>>>>>>>>>>>                       if(encodedString.contains("To Be
>>>>>> Approved")){
>>>>>>>>>>>                           previous.reset();
>>>>>>>>>>>                       }
>>>>>>>>>>>                   } else if (op.getOperation().equals("TJ")) {
>>>>>>>>>>>                       COSArray previous = (COSArray)
>> tokens.get(j
>>>>>> -
>>>>>>>>>>> 1);
>>>>>>>>>>>                       StringBuilder stringBuilder = new
>>>>>>>>>>> StringBuilder();
>>>>>>>>>>>                       for (int k = 0; k < previous.size(); k++)
>> {
>>>>>>>>>>>                           Object arrElement =
>>>>>>>> previous.getObject(k);
>>>>>>>>>>>                           if (arrElement instanceof COSString) {
>>>>>>>>>>>                               COSString cosString = (COSString)
>>>>>>>>>>> arrElement;
>>>>>>>>>>> 
>>>>>>>>>>> stringBuilder.append(cosString.getString());
>>>>>>>>>>>                           }
>>>>>>>>>>>                       }
>>>>>>>>>>>                       String string = stringBuilder.toString();
>>>>>>>>>>>                       String encodedString = encode(string,
>>>> font);
>>>>>>>>>>>                       if(encodedString.contains("To Be
>>>>>> Approved")){
>>>>>>>>>>>                           previous.clear();
>>>>>>>>>>>                       }
>>>>>>>>>>>                   }
>>>>>>>>>>> 
>>>>>>>>>>> Note:
>>>>>>>>>>> In case of COSArray, I first iterate through the whole array to
>> get
>>>>>> the
>>>>>>>>>>> whole string before encoding and comparison and this works.
>>>>>>>>>>> 
>>>>>>>>>>> Best Regards,
>>>>>>>>>>> a7mad
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> On Mon, Mar 23, 2015 at 10:48 PM, Maruan Sahyoun <
>>>>>>>> sahyoun@fileaffairs.de
>>>>>>>>>>> 
>>>>>>>>>>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>>> Hi,
>>>>>>>>>>>> 
>>>>>>>>>>>> your text is encoded so within the show text operator Tj the
>>>> string
>>>>>> is
>>>>>>>>>>>> 
>>>>>>>>>>>> 7R %H $SSURYHG
>>>>>>>>>>>> 
>>>>>>>>>>>> You wrote that you encode your string to find it - what do you
>>>> get?
>>>>>>>>>>>> 
>>>>>>>>>>>> BR
>>>>>>>>>>>> Maruan
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>>> Am 23.03.2015 um 22:01 schrieb a7med shre3y <
>>>>>> a7med.shre3y@gmail.com
>>>>>>>>> :
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Hi Maruan,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Here's a link from where you can download the PDF.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>> 
>> https://drive.google.com/file/d/0B5Kxacm1mej-bm82NzNvUXFPSmMtUjc0ZFVjVVlrODZnRzdn/view?usp=sharing
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Kind Regards,
>>>>>>>>>>>>> a7mad
>>>>>>>>>>>>> 
>>>>>>>>>>>>> On Mon, Mar 23, 2015 at 8:57 PM, Maruan Sahyoun <
>>>>>>>>>> sahyoun@fileaffairs.de>
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> you need to upload it to a public location as the mailing list
>>>>>>>> doesn't
>>>>>>>>>>>>>> support attachments.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> BR
>>>>>>>>>>>>>> Maruan
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Am 23.03.2015 um 19:18 schrieb a7med shre3y <
>>>>>>>> a7med.shre3y@gmail.com
>>>>>>>>>>> :
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Dear Maruan,
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Thank you very much for the information. Please find herewith
>>>>>>>>>> attached
>>>>>>>>>>>>>> the PDF to reproduce the problem.
>>>>>>>>>>>>>>> The text to remove is: "To Be Approved". The text has a
>>>>>> multi-byte
>>>>>>>>>>>>>> encoding, so I call first to encode it in order to find it
>> then
>>>>>>>> remove
>>>>>>>>>>>> it.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Best Regards,
>>>>>>>>>>>>>>> a7mad
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> On Mon, Mar 23, 2015 at 4:13 PM, Maruan Sahyoun <
>>>>>>>>>>>> sahyoun@fileaffairs.de>
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>> Dear a7mad,
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> removing text from a PDF is not an easy task as
>>>>>>>>>>>>>>>> - text which might visually appear as a single item might
>>>>>>>> consistent
>>>>>>>>>>>> of
>>>>>>>>>>>>>> individual parts within the PDF itself e.g. each character or
>>>>>> groups
>>>>>>>>>> of
>>>>>>>>>>>>>> characters are place individually in different COSStrings
>>>>>>>>>>>>>>>> - text might be drawn using graphics commands
>>>>>>>>>>>>>>>> - text can appear within different parts of the PDF (e.g.
>> the
>>>>>> text
>>>>>>>>>>>>>> might be content of a form field AND the annotation
>> representing
>>>>>> the
>>>>>>>>>>>> form
>>>>>>>>>>>>>> field visually)
>>>>>>>>>>>>>>>> - you need to look up the encoding information to get form
>> the
>>>>>>>>>>>>>> characters in the PDF "string" to the ones you are looking for
>>>>>>>>>>>>>>>> ….
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> If you can post a specific PDF to a public location and
>>>> describe
>>>>>>>> in
>>>>>>>>>>>>>> detail which string should have been replaced which hasn't I
>>>> will
>>>>>> be
>>>>>>>>>>>> able
>>>>>>>>>>>>>> to tell you why that might have happened.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Maruan
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Am 23.03.2015 um 15:03 schrieb a7med shre3y <
>>>>>>>>>> a7med.shre3y@gmail.com
>>>>>>>>>>>>> :
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Hi all,
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Currently I am facing a strange problem removing text from
>>>> the
>>>>>>>> some
>>>>>>>>>>>>>> PDFs.
>>>>>>>>>>>>>>>>> My program is able to find the text and "remove it" by
>>>> calling
>>>>>>>> the
>>>>>>>>>>>>>>>>> COSString.reset() method.
>>>>>>>>>>>>>>>>> The problem is, when I open the output PDF file, I still
>> see
>>>>>> the
>>>>>>>>>> text
>>>>>>>>>>>>>> but
>>>>>>>>>>>>>>>>> not selectable (I mean when I try to highlight it with the
>>>>>> mouse
>>>>>>>> to
>>>>>>>>>>>>>> copy
>>>>>>>>>>>>>>>>> it, it's not selectable!). When print the content (tokens)
>> of
>>>>>> the
>>>>>>>>>>>>>> output
>>>>>>>>>>>>>>>>> file, I DO NOT find the text at all!!
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> I am currently stuck in the PDF specifications 1.5 and
>> really
>>>>>>>>>> running
>>>>>>>>>>>>>> out
>>>>>>>>>>>>>>>>> of time.
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> I'd so much appreciate any help or any idea on what's going
>>>> on.
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Notes:
>>>>>>>>>>>>>>>>> 1. I use use PDFBox 1.7.1
>>>>>>>>>>>>>>>>> 2. This problem does not occur with all PDFs, only some
>> PDFs
>>>>>>>> cause
>>>>>>>>>>>>>> this
>>>>>>>>>>>>>>>>> problem.
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Thank you very much.
>>>>>>>>>>>>>>>>> a7mad
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>> 
>>>> ---------------------------------------------------------------------
>>>>>>>>>>>>>>>> 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
>>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>> 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
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>> ---------------------------------------------------------------------
>>>>>>>> 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
>>>>>> 
>>>>>> 
>>>> 
>>>> 
>>>> ---------------------------------------------------------------------
>>>> 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
>> 
>> 


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


Re: Text removal

Posted by a7med shre3y <a7...@gmail.com>.
I mean how to find them in the PDF while rotating over the tokens, what is
the operator?

On Tue, Mar 24, 2015 at 10:40 AM, Maruan Sahyoun <sa...@fileaffairs.de>
wrote:

>
> > Am 24.03.2015 um 10:36 schrieb a7med shre3y <a7...@gmail.com>:
> >
> > What are the drawing commands? I'd then investigate one how to specify
> the
> > text ones.
> >
>
> 738.7469 167.1278 m
> 733.8743 167.1278 l
>
>
>
> > On Tue, Mar 24, 2015 at 10:26 AM, Maruan Sahyoun <sahyoun@fileaffairs.de
> >
> > wrote:
> >
> >>
> >>> Am 24.03.2015 um 10:14 schrieb a7med shre3y <a7...@gmail.com>:
> >>>
> >>> That's true, I've even tried to change the rendering text mode to other
> >>> values already as mentioned in the PDF specs 1.5 table 5.3 before
> >> removing
> >>> it also didn't work.
> >>> So how to remove the graphics content then?
> >>
> >> the simple answer - remove the drawing commands.
> >>
> >> The longer answer as you obviously don't want to remove all drawing
> >> commands you'd need to find which are the ones drawing the text. As you
> >> would like to remove certain vectors which are matching a certain
> >> character/glyph you first need to find out which are the ones drawing
> e.g.
> >> the letter 'T'. I don't think that this is doable in a reasonable
> amount of
> >> time for arbitary text.
> >>
> >> Maruan
> >>
> >>
> >>>
> >>> Best Regards,
> >>>
> >>> On Tue, Mar 24, 2015 at 10:06 AM, Maruan Sahyoun <
> sahyoun@fileaffairs.de
> >>>
> >>> wrote:
> >>>
> >>>> Hi,
> >>>>
> >>>>> Am 24.03.2015 um 09:55 schrieb a7med shre3y <a7med.shre3y@gmail.com
> >:
> >>>>>
> >>>>> You can download it from here:
> >>>>>
> >>>>
> >>
> https://drive.google.com/file/d/0B5Kxacm1mej-MEZubTNYVVJYTFE/view?usp=sharing
> >>>>>
> >>>>
> >>>> looking more closely you correctly replaced the text, but that text
> was
> >> in
> >>>> there for searching within the PDF as it used text rendering mode 3
> >>>> (invisible). The 'text' you are still seeing is drawn using vector
> >> commands
> >>>> so it's graphics content.
> >>>>
> >>>> BR
> >>>> Maruan
> >>>>
> >>>>
> >>>>> Best Regards,
> >>>>>
> >>>>>
> >>>>> On Tue, Mar 24, 2015 at 9:48 AM, Maruan Sahyoun <
> >> sahyoun@fileaffairs.de>
> >>>>> wrote:
> >>>>>
> >>>>>>
> >>>>>>
> >>>>>>> Am 24.03.2015 um 09:40 schrieb a7med shre3y <
> a7med.shre3y@gmail.com
> >>> :
> >>>>>>>
> >>>>>>> Hi,
> >>>>>>>
> >>>>>>> In fact PDFBox call the operation of transforming "7R %H $SSURYHG"
> to
> >>>> "To
> >>>>>>> Be Approved" as "encoding". Anyway, either it's encoding or
> >> decoding, I
> >>>>>>> thought it's easier to transform "7R %H $SSURYHG" to "To Be
> Approved"
> >>>> and
> >>>>>>> not the opposite (or at least I don't know). I spent some quite
> long
> >>>> time
> >>>>>>> trying to find out how to find the character codes for the glyphs
> in
> >>>> the
> >>>>>>> currently used font, then I found that it's not an easy task. By
> the
> >>>> way,
> >>>>>>> if you know how to do that, I'd so much appreciate it because I
> need
> >>>> that
> >>>>>>> for replacing text with another text and for that the new text must
> >> be
> >>>>>>> encoded the same way as the original!
> >>>>>>>
> >>>>>>> Back to the text removal, I am able to find the text and also
> remove
> >> it
> >>>>>> by
> >>>>>>> calling reset, as I mentioned in my first email, when I print the
> >>>> output
> >>>>>>> content I don't find the text anymore but I still see it when I
> open
> >>>> the
> >>>>>>> file. My first assumption was that there must be some other way to
> >>>> remove
> >>>>>>> the text other than the way I am using, and that's what you've
> >> actually
> >>>>>>> confirmed in your reply, so could you please tell me what still
> >>>> missing?
> >>>>>>>
> >>>>>>
> >>>>>> Could you upload the PDF with the reset text too?
> >>>>>>
> >>>>>> BR
> >>>>>> Maruan
> >>>>>>
> >>>>>>
> >>>>>>> Thanks and regards,
> >>>>>>> a7mad
> >>>>>>>
> >>>>>>> On Tue, Mar 24, 2015 at 9:22 AM, Maruan Sahyoun <
> >>>> sahyoun@fileaffairs.de>
> >>>>>>> wrote:
> >>>>>>>
> >>>>>>>> Hi,
> >>>>>>>>
> >>>>>>>>> Am 24.03.2015 um 08:14 schrieb a7med shre3y <
> >> a7med.shre3y@gmail.com
> >>>>> :
> >>>>>>>>>
> >>>>>>>>> Hi,
> >>>>>>>>>
> >>>>>>>>> Here's how I do it:
> >>>>>>>>>
> >>>>>>>>> 1. I use the following method to encode the text:
> >>>>>>>>>
> >>>>>>>>> String encode(String text, PDFont font) throws Exception {
> >>>>>>>>>    StringBuilder builder = new StringBuilder();
> >>>>>>>>>    byte[] stringBytes = text.getBytes();
> >>>>>>>>>    int codeLength = 1;
> >>>>>>>>>    for(int i = 0; i < stringBytes.length; i += codeLength){
> >>>>>>>>>            String c = font.encode(stringBytes, i, codeLength);
> >>>>>>>>>            if(c == null && (i + 1 < stringBytes.length)){
> >>>>>>>>>                codeLength++;
> >>>>>>>>>                c = font.encode(stringBytes, i, codeLength);
> >>>>>>>>>            }
> >>>>>>>>>            builder.append(c);
> >>>>>>>>>        }
> >>>>>>>>>    return builder.toString();
> >>>>>>>>> }
> >>>>>>>>>
> >>>>>>>>> 2. Iterating through the tokens, I find the text either it's a
> >>>>>> COSString
> >>>>>>>>> ("Tj" operator) or a COSArray ("TJ" operator) then check if it's
> >> the
> >>>>>> text
> >>>>>>>>> I'm looking for to remove as following:
> >>>>>>>>>
> >>>>>>>>> if (op.getOperation().equals("Tj")) {
> >>>>>>>>>                        COSString previous = (COSString)
> >>>> tokens.get(j
> >>>>>>>> -
> >>>>>>>>> 1);
> >>>>>>>>>                        String string = previous.getString();
> >>>>>>>>>                        String encodedString = encode(string,
> >> font);
> >>>>>>>>
> >>>>>>>> that string is already encoded. So you'd need to encode "To Be
> >>>> Approved"
> >>>>>>>> and compare if that matches the string you are reading from the
> PDF.
> >>>>>>>>
> >>>>>>>>>                        if(encodedString.contains("To Be
> >>>> Approved")){
> >>>>>>>>>                            previous.reset();
> >>>>>>>>>                        }
> >>>>>>>>>                    } else if (op.getOperation().equals("TJ")) {
> >>>>>>>>>                        COSArray previous = (COSArray)
> tokens.get(j
> >>>> -
> >>>>>>>>> 1);
> >>>>>>>>>                        StringBuilder stringBuilder = new
> >>>>>>>>> StringBuilder();
> >>>>>>>>>                        for (int k = 0; k < previous.size(); k++)
> {
> >>>>>>>>>                            Object arrElement =
> >>>>>> previous.getObject(k);
> >>>>>>>>>                            if (arrElement instanceof COSString) {
> >>>>>>>>>                                COSString cosString = (COSString)
> >>>>>>>>> arrElement;
> >>>>>>>>>
> >>>>>>>>> stringBuilder.append(cosString.getString());
> >>>>>>>>>                            }
> >>>>>>>>>                        }
> >>>>>>>>>                        String string = stringBuilder.toString();
> >>>>>>>>>                        String encodedString = encode(string,
> >> font);
> >>>>>>>>>                        if(encodedString.contains("To Be
> >>>> Approved")){
> >>>>>>>>>                            previous.clear();
> >>>>>>>>>                        }
> >>>>>>>>>                    }
> >>>>>>>>>
> >>>>>>>>> Note:
> >>>>>>>>> In case of COSArray, I first iterate through the whole array to
> get
> >>>> the
> >>>>>>>>> whole string before encoding and comparison and this works.
> >>>>>>>>>
> >>>>>>>>> Best Regards,
> >>>>>>>>> a7mad
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> On Mon, Mar 23, 2015 at 10:48 PM, Maruan Sahyoun <
> >>>>>> sahyoun@fileaffairs.de
> >>>>>>>>>
> >>>>>>>>> wrote:
> >>>>>>>>>
> >>>>>>>>>> Hi,
> >>>>>>>>>>
> >>>>>>>>>> your text is encoded so within the show text operator Tj the
> >> string
> >>>> is
> >>>>>>>>>>
> >>>>>>>>>> 7R %H $SSURYHG
> >>>>>>>>>>
> >>>>>>>>>> You wrote that you encode your string to find it - what do you
> >> get?
> >>>>>>>>>>
> >>>>>>>>>> BR
> >>>>>>>>>> Maruan
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>> Am 23.03.2015 um 22:01 schrieb a7med shre3y <
> >>>> a7med.shre3y@gmail.com
> >>>>>>> :
> >>>>>>>>>>>
> >>>>>>>>>>> Hi Maruan,
> >>>>>>>>>>>
> >>>>>>>>>>> Here's a link from where you can download the PDF.
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>
> >>
> https://drive.google.com/file/d/0B5Kxacm1mej-bm82NzNvUXFPSmMtUjc0ZFVjVVlrODZnRzdn/view?usp=sharing
> >>>>>>>>>>>
> >>>>>>>>>>> Kind Regards,
> >>>>>>>>>>> a7mad
> >>>>>>>>>>>
> >>>>>>>>>>> On Mon, Mar 23, 2015 at 8:57 PM, Maruan Sahyoun <
> >>>>>>>> sahyoun@fileaffairs.de>
> >>>>>>>>>>> wrote:
> >>>>>>>>>>>
> >>>>>>>>>>>> Hi,
> >>>>>>>>>>>>
> >>>>>>>>>>>> you need to upload it to a public location as the mailing list
> >>>>>> doesn't
> >>>>>>>>>>>> support attachments.
> >>>>>>>>>>>>
> >>>>>>>>>>>> BR
> >>>>>>>>>>>> Maruan
> >>>>>>>>>>>>
> >>>>>>>>>>>>> Am 23.03.2015 um 19:18 schrieb a7med shre3y <
> >>>>>> a7med.shre3y@gmail.com
> >>>>>>>>> :
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Dear Maruan,
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Thank you very much for the information. Please find herewith
> >>>>>>>> attached
> >>>>>>>>>>>> the PDF to reproduce the problem.
> >>>>>>>>>>>>> The text to remove is: "To Be Approved". The text has a
> >>>> multi-byte
> >>>>>>>>>>>> encoding, so I call first to encode it in order to find it
> then
> >>>>>> remove
> >>>>>>>>>> it.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Best Regards,
> >>>>>>>>>>>>> a7mad
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>> On Mon, Mar 23, 2015 at 4:13 PM, Maruan Sahyoun <
> >>>>>>>>>> sahyoun@fileaffairs.de>
> >>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>> Dear a7mad,
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> removing text from a PDF is not an easy task as
> >>>>>>>>>>>>>> - text which might visually appear as a single item might
> >>>>>> consistent
> >>>>>>>>>> of
> >>>>>>>>>>>> individual parts within the PDF itself e.g. each character or
> >>>> groups
> >>>>>>>> of
> >>>>>>>>>>>> characters are place individually in different COSStrings
> >>>>>>>>>>>>>> - text might be drawn using graphics commands
> >>>>>>>>>>>>>> - text can appear within different parts of the PDF (e.g.
> the
> >>>> text
> >>>>>>>>>>>> might be content of a form field AND the annotation
> representing
> >>>> the
> >>>>>>>>>> form
> >>>>>>>>>>>> field visually)
> >>>>>>>>>>>>>> - you need to look up the encoding information to get form
> the
> >>>>>>>>>>>> characters in the PDF "string" to the ones you are looking for
> >>>>>>>>>>>>>> ….
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> If you can post a specific PDF to a public location and
> >> describe
> >>>>>> in
> >>>>>>>>>>>> detail which string should have been replaced which hasn't I
> >> will
> >>>> be
> >>>>>>>>>> able
> >>>>>>>>>>>> to tell you why that might have happened.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Maruan
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Am 23.03.2015 um 15:03 schrieb a7med shre3y <
> >>>>>>>> a7med.shre3y@gmail.com
> >>>>>>>>>>> :
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Hi all,
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Currently I am facing a strange problem removing text from
> >> the
> >>>>>> some
> >>>>>>>>>>>> PDFs.
> >>>>>>>>>>>>>>> My program is able to find the text and "remove it" by
> >> calling
> >>>>>> the
> >>>>>>>>>>>>>>> COSString.reset() method.
> >>>>>>>>>>>>>>> The problem is, when I open the output PDF file, I still
> see
> >>>> the
> >>>>>>>> text
> >>>>>>>>>>>> but
> >>>>>>>>>>>>>>> not selectable (I mean when I try to highlight it with the
> >>>> mouse
> >>>>>> to
> >>>>>>>>>>>> copy
> >>>>>>>>>>>>>>> it, it's not selectable!). When print the content (tokens)
> of
> >>>> the
> >>>>>>>>>>>> output
> >>>>>>>>>>>>>>> file, I DO NOT find the text at all!!
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> I am currently stuck in the PDF specifications 1.5 and
> really
> >>>>>>>> running
> >>>>>>>>>>>> out
> >>>>>>>>>>>>>>> of time.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> I'd so much appreciate any help or any idea on what's going
> >> on.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Notes:
> >>>>>>>>>>>>>>> 1. I use use PDFBox 1.7.1
> >>>>>>>>>>>>>>> 2. This problem does not occur with all PDFs, only some
> PDFs
> >>>>>> cause
> >>>>>>>>>>>> this
> >>>>>>>>>>>>>>> problem.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Thank you very much.
> >>>>>>>>>>>>>>> a7mad
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>
> >> ---------------------------------------------------------------------
> >>>>>>>>>>>>>> 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
> >>>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>> ---------------------------------------------------------------------
> >>>>>>>>>> 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
> >>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> ---------------------------------------------------------------------
> >>>>>> 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
> >>>>
> >>>>
> >>
> >>
> >> ---------------------------------------------------------------------
> >> 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
>
>

Re: Text removal

Posted by Maruan Sahyoun <sa...@fileaffairs.de>.
> Am 24.03.2015 um 10:36 schrieb a7med shre3y <a7...@gmail.com>:
> 
> What are the drawing commands? I'd then investigate one how to specify the
> text ones.
> 

738.7469 167.1278 m
733.8743 167.1278 l



> On Tue, Mar 24, 2015 at 10:26 AM, Maruan Sahyoun <sa...@fileaffairs.de>
> wrote:
> 
>> 
>>> Am 24.03.2015 um 10:14 schrieb a7med shre3y <a7...@gmail.com>:
>>> 
>>> That's true, I've even tried to change the rendering text mode to other
>>> values already as mentioned in the PDF specs 1.5 table 5.3 before
>> removing
>>> it also didn't work.
>>> So how to remove the graphics content then?
>> 
>> the simple answer - remove the drawing commands.
>> 
>> The longer answer as you obviously don't want to remove all drawing
>> commands you'd need to find which are the ones drawing the text. As you
>> would like to remove certain vectors which are matching a certain
>> character/glyph you first need to find out which are the ones drawing e.g.
>> the letter 'T'. I don't think that this is doable in a reasonable amount of
>> time for arbitary text.
>> 
>> Maruan
>> 
>> 
>>> 
>>> Best Regards,
>>> 
>>> On Tue, Mar 24, 2015 at 10:06 AM, Maruan Sahyoun <sahyoun@fileaffairs.de
>>> 
>>> wrote:
>>> 
>>>> Hi,
>>>> 
>>>>> Am 24.03.2015 um 09:55 schrieb a7med shre3y <a7...@gmail.com>:
>>>>> 
>>>>> You can download it from here:
>>>>> 
>>>> 
>> https://drive.google.com/file/d/0B5Kxacm1mej-MEZubTNYVVJYTFE/view?usp=sharing
>>>>> 
>>>> 
>>>> looking more closely you correctly replaced the text, but that text was
>> in
>>>> there for searching within the PDF as it used text rendering mode 3
>>>> (invisible). The 'text' you are still seeing is drawn using vector
>> commands
>>>> so it's graphics content.
>>>> 
>>>> BR
>>>> Maruan
>>>> 
>>>> 
>>>>> Best Regards,
>>>>> 
>>>>> 
>>>>> On Tue, Mar 24, 2015 at 9:48 AM, Maruan Sahyoun <
>> sahyoun@fileaffairs.de>
>>>>> wrote:
>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> Am 24.03.2015 um 09:40 schrieb a7med shre3y <a7med.shre3y@gmail.com
>>> :
>>>>>>> 
>>>>>>> Hi,
>>>>>>> 
>>>>>>> In fact PDFBox call the operation of transforming "7R %H $SSURYHG" to
>>>> "To
>>>>>>> Be Approved" as "encoding". Anyway, either it's encoding or
>> decoding, I
>>>>>>> thought it's easier to transform "7R %H $SSURYHG" to "To Be Approved"
>>>> and
>>>>>>> not the opposite (or at least I don't know). I spent some quite long
>>>> time
>>>>>>> trying to find out how to find the character codes for the glyphs in
>>>> the
>>>>>>> currently used font, then I found that it's not an easy task. By the
>>>> way,
>>>>>>> if you know how to do that, I'd so much appreciate it because I need
>>>> that
>>>>>>> for replacing text with another text and for that the new text must
>> be
>>>>>>> encoded the same way as the original!
>>>>>>> 
>>>>>>> Back to the text removal, I am able to find the text and also remove
>> it
>>>>>> by
>>>>>>> calling reset, as I mentioned in my first email, when I print the
>>>> output
>>>>>>> content I don't find the text anymore but I still see it when I open
>>>> the
>>>>>>> file. My first assumption was that there must be some other way to
>>>> remove
>>>>>>> the text other than the way I am using, and that's what you've
>> actually
>>>>>>> confirmed in your reply, so could you please tell me what still
>>>> missing?
>>>>>>> 
>>>>>> 
>>>>>> Could you upload the PDF with the reset text too?
>>>>>> 
>>>>>> BR
>>>>>> Maruan
>>>>>> 
>>>>>> 
>>>>>>> Thanks and regards,
>>>>>>> a7mad
>>>>>>> 
>>>>>>> On Tue, Mar 24, 2015 at 9:22 AM, Maruan Sahyoun <
>>>> sahyoun@fileaffairs.de>
>>>>>>> wrote:
>>>>>>> 
>>>>>>>> Hi,
>>>>>>>> 
>>>>>>>>> Am 24.03.2015 um 08:14 schrieb a7med shre3y <
>> a7med.shre3y@gmail.com
>>>>> :
>>>>>>>>> 
>>>>>>>>> Hi,
>>>>>>>>> 
>>>>>>>>> Here's how I do it:
>>>>>>>>> 
>>>>>>>>> 1. I use the following method to encode the text:
>>>>>>>>> 
>>>>>>>>> String encode(String text, PDFont font) throws Exception {
>>>>>>>>>    StringBuilder builder = new StringBuilder();
>>>>>>>>>    byte[] stringBytes = text.getBytes();
>>>>>>>>>    int codeLength = 1;
>>>>>>>>>    for(int i = 0; i < stringBytes.length; i += codeLength){
>>>>>>>>>            String c = font.encode(stringBytes, i, codeLength);
>>>>>>>>>            if(c == null && (i + 1 < stringBytes.length)){
>>>>>>>>>                codeLength++;
>>>>>>>>>                c = font.encode(stringBytes, i, codeLength);
>>>>>>>>>            }
>>>>>>>>>            builder.append(c);
>>>>>>>>>        }
>>>>>>>>>    return builder.toString();
>>>>>>>>> }
>>>>>>>>> 
>>>>>>>>> 2. Iterating through the tokens, I find the text either it's a
>>>>>> COSString
>>>>>>>>> ("Tj" operator) or a COSArray ("TJ" operator) then check if it's
>> the
>>>>>> text
>>>>>>>>> I'm looking for to remove as following:
>>>>>>>>> 
>>>>>>>>> if (op.getOperation().equals("Tj")) {
>>>>>>>>>                        COSString previous = (COSString)
>>>> tokens.get(j
>>>>>>>> -
>>>>>>>>> 1);
>>>>>>>>>                        String string = previous.getString();
>>>>>>>>>                        String encodedString = encode(string,
>> font);
>>>>>>>> 
>>>>>>>> that string is already encoded. So you'd need to encode "To Be
>>>> Approved"
>>>>>>>> and compare if that matches the string you are reading from the PDF.
>>>>>>>> 
>>>>>>>>>                        if(encodedString.contains("To Be
>>>> Approved")){
>>>>>>>>>                            previous.reset();
>>>>>>>>>                        }
>>>>>>>>>                    } else if (op.getOperation().equals("TJ")) {
>>>>>>>>>                        COSArray previous = (COSArray) tokens.get(j
>>>> -
>>>>>>>>> 1);
>>>>>>>>>                        StringBuilder stringBuilder = new
>>>>>>>>> StringBuilder();
>>>>>>>>>                        for (int k = 0; k < previous.size(); k++) {
>>>>>>>>>                            Object arrElement =
>>>>>> previous.getObject(k);
>>>>>>>>>                            if (arrElement instanceof COSString) {
>>>>>>>>>                                COSString cosString = (COSString)
>>>>>>>>> arrElement;
>>>>>>>>> 
>>>>>>>>> stringBuilder.append(cosString.getString());
>>>>>>>>>                            }
>>>>>>>>>                        }
>>>>>>>>>                        String string = stringBuilder.toString();
>>>>>>>>>                        String encodedString = encode(string,
>> font);
>>>>>>>>>                        if(encodedString.contains("To Be
>>>> Approved")){
>>>>>>>>>                            previous.clear();
>>>>>>>>>                        }
>>>>>>>>>                    }
>>>>>>>>> 
>>>>>>>>> Note:
>>>>>>>>> In case of COSArray, I first iterate through the whole array to get
>>>> the
>>>>>>>>> whole string before encoding and comparison and this works.
>>>>>>>>> 
>>>>>>>>> Best Regards,
>>>>>>>>> a7mad
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> On Mon, Mar 23, 2015 at 10:48 PM, Maruan Sahyoun <
>>>>>> sahyoun@fileaffairs.de
>>>>>>>>> 
>>>>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>>> Hi,
>>>>>>>>>> 
>>>>>>>>>> your text is encoded so within the show text operator Tj the
>> string
>>>> is
>>>>>>>>>> 
>>>>>>>>>> 7R %H $SSURYHG
>>>>>>>>>> 
>>>>>>>>>> You wrote that you encode your string to find it - what do you
>> get?
>>>>>>>>>> 
>>>>>>>>>> BR
>>>>>>>>>> Maruan
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>>> Am 23.03.2015 um 22:01 schrieb a7med shre3y <
>>>> a7med.shre3y@gmail.com
>>>>>>> :
>>>>>>>>>>> 
>>>>>>>>>>> Hi Maruan,
>>>>>>>>>>> 
>>>>>>>>>>> Here's a link from where you can download the PDF.
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>> 
>> https://drive.google.com/file/d/0B5Kxacm1mej-bm82NzNvUXFPSmMtUjc0ZFVjVVlrODZnRzdn/view?usp=sharing
>>>>>>>>>>> 
>>>>>>>>>>> Kind Regards,
>>>>>>>>>>> a7mad
>>>>>>>>>>> 
>>>>>>>>>>> On Mon, Mar 23, 2015 at 8:57 PM, Maruan Sahyoun <
>>>>>>>> sahyoun@fileaffairs.de>
>>>>>>>>>>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>>> Hi,
>>>>>>>>>>>> 
>>>>>>>>>>>> you need to upload it to a public location as the mailing list
>>>>>> doesn't
>>>>>>>>>>>> support attachments.
>>>>>>>>>>>> 
>>>>>>>>>>>> BR
>>>>>>>>>>>> Maruan
>>>>>>>>>>>> 
>>>>>>>>>>>>> Am 23.03.2015 um 19:18 schrieb a7med shre3y <
>>>>>> a7med.shre3y@gmail.com
>>>>>>>>> :
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Dear Maruan,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Thank you very much for the information. Please find herewith
>>>>>>>> attached
>>>>>>>>>>>> the PDF to reproduce the problem.
>>>>>>>>>>>>> The text to remove is: "To Be Approved". The text has a
>>>> multi-byte
>>>>>>>>>>>> encoding, so I call first to encode it in order to find it then
>>>>>> remove
>>>>>>>>>> it.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Best Regards,
>>>>>>>>>>>>> a7mad
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> On Mon, Mar 23, 2015 at 4:13 PM, Maruan Sahyoun <
>>>>>>>>>> sahyoun@fileaffairs.de>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>> Dear a7mad,
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> removing text from a PDF is not an easy task as
>>>>>>>>>>>>>> - text which might visually appear as a single item might
>>>>>> consistent
>>>>>>>>>> of
>>>>>>>>>>>> individual parts within the PDF itself e.g. each character or
>>>> groups
>>>>>>>> of
>>>>>>>>>>>> characters are place individually in different COSStrings
>>>>>>>>>>>>>> - text might be drawn using graphics commands
>>>>>>>>>>>>>> - text can appear within different parts of the PDF (e.g. the
>>>> text
>>>>>>>>>>>> might be content of a form field AND the annotation representing
>>>> the
>>>>>>>>>> form
>>>>>>>>>>>> field visually)
>>>>>>>>>>>>>> - you need to look up the encoding information to get form the
>>>>>>>>>>>> characters in the PDF "string" to the ones you are looking for
>>>>>>>>>>>>>> ….
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> If you can post a specific PDF to a public location and
>> describe
>>>>>> in
>>>>>>>>>>>> detail which string should have been replaced which hasn't I
>> will
>>>> be
>>>>>>>>>> able
>>>>>>>>>>>> to tell you why that might have happened.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Maruan
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Am 23.03.2015 um 15:03 schrieb a7med shre3y <
>>>>>>>> a7med.shre3y@gmail.com
>>>>>>>>>>> :
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Hi all,
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Currently I am facing a strange problem removing text from
>> the
>>>>>> some
>>>>>>>>>>>> PDFs.
>>>>>>>>>>>>>>> My program is able to find the text and "remove it" by
>> calling
>>>>>> the
>>>>>>>>>>>>>>> COSString.reset() method.
>>>>>>>>>>>>>>> The problem is, when I open the output PDF file, I still see
>>>> the
>>>>>>>> text
>>>>>>>>>>>> but
>>>>>>>>>>>>>>> not selectable (I mean when I try to highlight it with the
>>>> mouse
>>>>>> to
>>>>>>>>>>>> copy
>>>>>>>>>>>>>>> it, it's not selectable!). When print the content (tokens) of
>>>> the
>>>>>>>>>>>> output
>>>>>>>>>>>>>>> file, I DO NOT find the text at all!!
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> I am currently stuck in the PDF specifications 1.5 and really
>>>>>>>> running
>>>>>>>>>>>> out
>>>>>>>>>>>>>>> of time.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> I'd so much appreciate any help or any idea on what's going
>> on.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Notes:
>>>>>>>>>>>>>>> 1. I use use PDFBox 1.7.1
>>>>>>>>>>>>>>> 2. This problem does not occur with all PDFs, only some PDFs
>>>>>> cause
>>>>>>>>>>>> this
>>>>>>>>>>>>>>> problem.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Thank you very much.
>>>>>>>>>>>>>>> a7mad
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>> 
>> ---------------------------------------------------------------------
>>>>>>>>>>>>>> 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
>>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>> ---------------------------------------------------------------------
>>>>>>>>>> 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
>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> ---------------------------------------------------------------------
>>>>>> 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
>>>> 
>>>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> 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


Re: Text removal

Posted by a7med shre3y <a7...@gmail.com>.
What are the drawing commands? I'd then investigate one how to specify the
text ones.

On Tue, Mar 24, 2015 at 10:26 AM, Maruan Sahyoun <sa...@fileaffairs.de>
wrote:

>
> > Am 24.03.2015 um 10:14 schrieb a7med shre3y <a7...@gmail.com>:
> >
> > That's true, I've even tried to change the rendering text mode to other
> > values already as mentioned in the PDF specs 1.5 table 5.3 before
> removing
> > it also didn't work.
> > So how to remove the graphics content then?
>
> the simple answer - remove the drawing commands.
>
> The longer answer as you obviously don't want to remove all drawing
> commands you'd need to find which are the ones drawing the text. As you
> would like to remove certain vectors which are matching a certain
> character/glyph you first need to find out which are the ones drawing e.g.
> the letter 'T'. I don't think that this is doable in a reasonable amount of
> time for arbitary text.
>
> Maruan
>
>
> >
> > Best Regards,
> >
> > On Tue, Mar 24, 2015 at 10:06 AM, Maruan Sahyoun <sahyoun@fileaffairs.de
> >
> > wrote:
> >
> >> Hi,
> >>
> >>> Am 24.03.2015 um 09:55 schrieb a7med shre3y <a7...@gmail.com>:
> >>>
> >>> You can download it from here:
> >>>
> >>
> https://drive.google.com/file/d/0B5Kxacm1mej-MEZubTNYVVJYTFE/view?usp=sharing
> >>>
> >>
> >> looking more closely you correctly replaced the text, but that text was
> in
> >> there for searching within the PDF as it used text rendering mode 3
> >> (invisible). The 'text' you are still seeing is drawn using vector
> commands
> >> so it's graphics content.
> >>
> >> BR
> >> Maruan
> >>
> >>
> >>> Best Regards,
> >>>
> >>>
> >>> On Tue, Mar 24, 2015 at 9:48 AM, Maruan Sahyoun <
> sahyoun@fileaffairs.de>
> >>> wrote:
> >>>
> >>>>
> >>>>
> >>>>> Am 24.03.2015 um 09:40 schrieb a7med shre3y <a7med.shre3y@gmail.com
> >:
> >>>>>
> >>>>> Hi,
> >>>>>
> >>>>> In fact PDFBox call the operation of transforming "7R %H $SSURYHG" to
> >> "To
> >>>>> Be Approved" as "encoding". Anyway, either it's encoding or
> decoding, I
> >>>>> thought it's easier to transform "7R %H $SSURYHG" to "To Be Approved"
> >> and
> >>>>> not the opposite (or at least I don't know). I spent some quite long
> >> time
> >>>>> trying to find out how to find the character codes for the glyphs in
> >> the
> >>>>> currently used font, then I found that it's not an easy task. By the
> >> way,
> >>>>> if you know how to do that, I'd so much appreciate it because I need
> >> that
> >>>>> for replacing text with another text and for that the new text must
> be
> >>>>> encoded the same way as the original!
> >>>>>
> >>>>> Back to the text removal, I am able to find the text and also remove
> it
> >>>> by
> >>>>> calling reset, as I mentioned in my first email, when I print the
> >> output
> >>>>> content I don't find the text anymore but I still see it when I open
> >> the
> >>>>> file. My first assumption was that there must be some other way to
> >> remove
> >>>>> the text other than the way I am using, and that's what you've
> actually
> >>>>> confirmed in your reply, so could you please tell me what still
> >> missing?
> >>>>>
> >>>>
> >>>> Could you upload the PDF with the reset text too?
> >>>>
> >>>> BR
> >>>> Maruan
> >>>>
> >>>>
> >>>>> Thanks and regards,
> >>>>> a7mad
> >>>>>
> >>>>> On Tue, Mar 24, 2015 at 9:22 AM, Maruan Sahyoun <
> >> sahyoun@fileaffairs.de>
> >>>>> wrote:
> >>>>>
> >>>>>> Hi,
> >>>>>>
> >>>>>>> Am 24.03.2015 um 08:14 schrieb a7med shre3y <
> a7med.shre3y@gmail.com
> >>> :
> >>>>>>>
> >>>>>>> Hi,
> >>>>>>>
> >>>>>>> Here's how I do it:
> >>>>>>>
> >>>>>>> 1. I use the following method to encode the text:
> >>>>>>>
> >>>>>>> String encode(String text, PDFont font) throws Exception {
> >>>>>>>     StringBuilder builder = new StringBuilder();
> >>>>>>>     byte[] stringBytes = text.getBytes();
> >>>>>>>     int codeLength = 1;
> >>>>>>>     for(int i = 0; i < stringBytes.length; i += codeLength){
> >>>>>>>             String c = font.encode(stringBytes, i, codeLength);
> >>>>>>>             if(c == null && (i + 1 < stringBytes.length)){
> >>>>>>>                 codeLength++;
> >>>>>>>                 c = font.encode(stringBytes, i, codeLength);
> >>>>>>>             }
> >>>>>>>             builder.append(c);
> >>>>>>>         }
> >>>>>>>     return builder.toString();
> >>>>>>> }
> >>>>>>>
> >>>>>>> 2. Iterating through the tokens, I find the text either it's a
> >>>> COSString
> >>>>>>> ("Tj" operator) or a COSArray ("TJ" operator) then check if it's
> the
> >>>> text
> >>>>>>> I'm looking for to remove as following:
> >>>>>>>
> >>>>>>> if (op.getOperation().equals("Tj")) {
> >>>>>>>                         COSString previous = (COSString)
> >> tokens.get(j
> >>>>>> -
> >>>>>>> 1);
> >>>>>>>                         String string = previous.getString();
> >>>>>>>                         String encodedString = encode(string,
> font);
> >>>>>>
> >>>>>> that string is already encoded. So you'd need to encode "To Be
> >> Approved"
> >>>>>> and compare if that matches the string you are reading from the PDF.
> >>>>>>
> >>>>>>>                         if(encodedString.contains("To Be
> >> Approved")){
> >>>>>>>                             previous.reset();
> >>>>>>>                         }
> >>>>>>>                     } else if (op.getOperation().equals("TJ")) {
> >>>>>>>                         COSArray previous = (COSArray) tokens.get(j
> >> -
> >>>>>>> 1);
> >>>>>>>                         StringBuilder stringBuilder = new
> >>>>>>> StringBuilder();
> >>>>>>>                         for (int k = 0; k < previous.size(); k++) {
> >>>>>>>                             Object arrElement =
> >>>> previous.getObject(k);
> >>>>>>>                             if (arrElement instanceof COSString) {
> >>>>>>>                                 COSString cosString = (COSString)
> >>>>>>> arrElement;
> >>>>>>>
> >>>>>>> stringBuilder.append(cosString.getString());
> >>>>>>>                             }
> >>>>>>>                         }
> >>>>>>>                         String string = stringBuilder.toString();
> >>>>>>>                         String encodedString = encode(string,
> font);
> >>>>>>>                         if(encodedString.contains("To Be
> >> Approved")){
> >>>>>>>                             previous.clear();
> >>>>>>>                         }
> >>>>>>>                     }
> >>>>>>>
> >>>>>>> Note:
> >>>>>>> In case of COSArray, I first iterate through the whole array to get
> >> the
> >>>>>>> whole string before encoding and comparison and this works.
> >>>>>>>
> >>>>>>> Best Regards,
> >>>>>>> a7mad
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> On Mon, Mar 23, 2015 at 10:48 PM, Maruan Sahyoun <
> >>>> sahyoun@fileaffairs.de
> >>>>>>>
> >>>>>>> wrote:
> >>>>>>>
> >>>>>>>> Hi,
> >>>>>>>>
> >>>>>>>> your text is encoded so within the show text operator Tj the
> string
> >> is
> >>>>>>>>
> >>>>>>>> 7R %H $SSURYHG
> >>>>>>>>
> >>>>>>>> You wrote that you encode your string to find it - what do you
> get?
> >>>>>>>>
> >>>>>>>> BR
> >>>>>>>> Maruan
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>> Am 23.03.2015 um 22:01 schrieb a7med shre3y <
> >> a7med.shre3y@gmail.com
> >>>>> :
> >>>>>>>>>
> >>>>>>>>> Hi Maruan,
> >>>>>>>>>
> >>>>>>>>> Here's a link from where you can download the PDF.
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>
> >>
> https://drive.google.com/file/d/0B5Kxacm1mej-bm82NzNvUXFPSmMtUjc0ZFVjVVlrODZnRzdn/view?usp=sharing
> >>>>>>>>>
> >>>>>>>>> Kind Regards,
> >>>>>>>>> a7mad
> >>>>>>>>>
> >>>>>>>>> On Mon, Mar 23, 2015 at 8:57 PM, Maruan Sahyoun <
> >>>>>> sahyoun@fileaffairs.de>
> >>>>>>>>> wrote:
> >>>>>>>>>
> >>>>>>>>>> Hi,
> >>>>>>>>>>
> >>>>>>>>>> you need to upload it to a public location as the mailing list
> >>>> doesn't
> >>>>>>>>>> support attachments.
> >>>>>>>>>>
> >>>>>>>>>> BR
> >>>>>>>>>> Maruan
> >>>>>>>>>>
> >>>>>>>>>>> Am 23.03.2015 um 19:18 schrieb a7med shre3y <
> >>>> a7med.shre3y@gmail.com
> >>>>>>> :
> >>>>>>>>>>>
> >>>>>>>>>>> Dear Maruan,
> >>>>>>>>>>>
> >>>>>>>>>>> Thank you very much for the information. Please find herewith
> >>>>>> attached
> >>>>>>>>>> the PDF to reproduce the problem.
> >>>>>>>>>>> The text to remove is: "To Be Approved". The text has a
> >> multi-byte
> >>>>>>>>>> encoding, so I call first to encode it in order to find it then
> >>>> remove
> >>>>>>>> it.
> >>>>>>>>>>>
> >>>>>>>>>>> Best Regards,
> >>>>>>>>>>> a7mad
> >>>>>>>>>>>
> >>>>>>>>>>>> On Mon, Mar 23, 2015 at 4:13 PM, Maruan Sahyoun <
> >>>>>>>> sahyoun@fileaffairs.de>
> >>>>>>>>>> wrote:
> >>>>>>>>>>>> Dear a7mad,
> >>>>>>>>>>>>
> >>>>>>>>>>>> removing text from a PDF is not an easy task as
> >>>>>>>>>>>> - text which might visually appear as a single item might
> >>>> consistent
> >>>>>>>> of
> >>>>>>>>>> individual parts within the PDF itself e.g. each character or
> >> groups
> >>>>>> of
> >>>>>>>>>> characters are place individually in different COSStrings
> >>>>>>>>>>>> - text might be drawn using graphics commands
> >>>>>>>>>>>> - text can appear within different parts of the PDF (e.g. the
> >> text
> >>>>>>>>>> might be content of a form field AND the annotation representing
> >> the
> >>>>>>>> form
> >>>>>>>>>> field visually)
> >>>>>>>>>>>> - you need to look up the encoding information to get form the
> >>>>>>>>>> characters in the PDF "string" to the ones you are looking for
> >>>>>>>>>>>> ….
> >>>>>>>>>>>>
> >>>>>>>>>>>> If you can post a specific PDF to a public location and
> describe
> >>>> in
> >>>>>>>>>> detail which string should have been replaced which hasn't I
> will
> >> be
> >>>>>>>> able
> >>>>>>>>>> to tell you why that might have happened.
> >>>>>>>>>>>>
> >>>>>>>>>>>> Maruan
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>> Am 23.03.2015 um 15:03 schrieb a7med shre3y <
> >>>>>> a7med.shre3y@gmail.com
> >>>>>>>>> :
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Hi all,
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Currently I am facing a strange problem removing text from
> the
> >>>> some
> >>>>>>>>>> PDFs.
> >>>>>>>>>>>>> My program is able to find the text and "remove it" by
> calling
> >>>> the
> >>>>>>>>>>>>> COSString.reset() method.
> >>>>>>>>>>>>> The problem is, when I open the output PDF file, I still see
> >> the
> >>>>>> text
> >>>>>>>>>> but
> >>>>>>>>>>>>> not selectable (I mean when I try to highlight it with the
> >> mouse
> >>>> to
> >>>>>>>>>> copy
> >>>>>>>>>>>>> it, it's not selectable!). When print the content (tokens) of
> >> the
> >>>>>>>>>> output
> >>>>>>>>>>>>> file, I DO NOT find the text at all!!
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> I am currently stuck in the PDF specifications 1.5 and really
> >>>>>> running
> >>>>>>>>>> out
> >>>>>>>>>>>>> of time.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> I'd so much appreciate any help or any idea on what's going
> on.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Notes:
> >>>>>>>>>>>>> 1. I use use PDFBox 1.7.1
> >>>>>>>>>>>>> 2. This problem does not occur with all PDFs, only some PDFs
> >>>> cause
> >>>>>>>>>> this
> >>>>>>>>>>>>> problem.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Thank you very much.
> >>>>>>>>>>>>> a7mad
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>
> ---------------------------------------------------------------------
> >>>>>>>>>>>> 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
> >>>>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >> ---------------------------------------------------------------------
> >>>>>>>> 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
> >>>>>>
> >>>>>>
> >>>>
> >>>>
> >>>> ---------------------------------------------------------------------
> >>>> 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
> >>
> >>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
> For additional commands, e-mail: users-help@pdfbox.apache.org
>
>

Re: Text removal

Posted by Maruan Sahyoun <sa...@fileaffairs.de>.
> Am 24.03.2015 um 10:14 schrieb a7med shre3y <a7...@gmail.com>:
> 
> That's true, I've even tried to change the rendering text mode to other
> values already as mentioned in the PDF specs 1.5 table 5.3 before removing
> it also didn't work.
> So how to remove the graphics content then?

the simple answer - remove the drawing commands.

The longer answer as you obviously don't want to remove all drawing commands you'd need to find which are the ones drawing the text. As you would like to remove certain vectors which are matching a certain character/glyph you first need to find out which are the ones drawing e.g. the letter 'T'. I don't think that this is doable in a reasonable amount of time for arbitary text.

Maruan


> 
> Best Regards,
> 
> On Tue, Mar 24, 2015 at 10:06 AM, Maruan Sahyoun <sa...@fileaffairs.de>
> wrote:
> 
>> Hi,
>> 
>>> Am 24.03.2015 um 09:55 schrieb a7med shre3y <a7...@gmail.com>:
>>> 
>>> You can download it from here:
>>> 
>> https://drive.google.com/file/d/0B5Kxacm1mej-MEZubTNYVVJYTFE/view?usp=sharing
>>> 
>> 
>> looking more closely you correctly replaced the text, but that text was in
>> there for searching within the PDF as it used text rendering mode 3
>> (invisible). The 'text' you are still seeing is drawn using vector commands
>> so it's graphics content.
>> 
>> BR
>> Maruan
>> 
>> 
>>> Best Regards,
>>> 
>>> 
>>> On Tue, Mar 24, 2015 at 9:48 AM, Maruan Sahyoun <sa...@fileaffairs.de>
>>> wrote:
>>> 
>>>> 
>>>> 
>>>>> Am 24.03.2015 um 09:40 schrieb a7med shre3y <a7...@gmail.com>:
>>>>> 
>>>>> Hi,
>>>>> 
>>>>> In fact PDFBox call the operation of transforming "7R %H $SSURYHG" to
>> "To
>>>>> Be Approved" as "encoding". Anyway, either it's encoding or decoding, I
>>>>> thought it's easier to transform "7R %H $SSURYHG" to "To Be Approved"
>> and
>>>>> not the opposite (or at least I don't know). I spent some quite long
>> time
>>>>> trying to find out how to find the character codes for the glyphs in
>> the
>>>>> currently used font, then I found that it's not an easy task. By the
>> way,
>>>>> if you know how to do that, I'd so much appreciate it because I need
>> that
>>>>> for replacing text with another text and for that the new text must be
>>>>> encoded the same way as the original!
>>>>> 
>>>>> Back to the text removal, I am able to find the text and also remove it
>>>> by
>>>>> calling reset, as I mentioned in my first email, when I print the
>> output
>>>>> content I don't find the text anymore but I still see it when I open
>> the
>>>>> file. My first assumption was that there must be some other way to
>> remove
>>>>> the text other than the way I am using, and that's what you've actually
>>>>> confirmed in your reply, so could you please tell me what still
>> missing?
>>>>> 
>>>> 
>>>> Could you upload the PDF with the reset text too?
>>>> 
>>>> BR
>>>> Maruan
>>>> 
>>>> 
>>>>> Thanks and regards,
>>>>> a7mad
>>>>> 
>>>>> On Tue, Mar 24, 2015 at 9:22 AM, Maruan Sahyoun <
>> sahyoun@fileaffairs.de>
>>>>> wrote:
>>>>> 
>>>>>> Hi,
>>>>>> 
>>>>>>> Am 24.03.2015 um 08:14 schrieb a7med shre3y <a7med.shre3y@gmail.com
>>> :
>>>>>>> 
>>>>>>> Hi,
>>>>>>> 
>>>>>>> Here's how I do it:
>>>>>>> 
>>>>>>> 1. I use the following method to encode the text:
>>>>>>> 
>>>>>>> String encode(String text, PDFont font) throws Exception {
>>>>>>>     StringBuilder builder = new StringBuilder();
>>>>>>>     byte[] stringBytes = text.getBytes();
>>>>>>>     int codeLength = 1;
>>>>>>>     for(int i = 0; i < stringBytes.length; i += codeLength){
>>>>>>>             String c = font.encode(stringBytes, i, codeLength);
>>>>>>>             if(c == null && (i + 1 < stringBytes.length)){
>>>>>>>                 codeLength++;
>>>>>>>                 c = font.encode(stringBytes, i, codeLength);
>>>>>>>             }
>>>>>>>             builder.append(c);
>>>>>>>         }
>>>>>>>     return builder.toString();
>>>>>>> }
>>>>>>> 
>>>>>>> 2. Iterating through the tokens, I find the text either it's a
>>>> COSString
>>>>>>> ("Tj" operator) or a COSArray ("TJ" operator) then check if it's the
>>>> text
>>>>>>> I'm looking for to remove as following:
>>>>>>> 
>>>>>>> if (op.getOperation().equals("Tj")) {
>>>>>>>                         COSString previous = (COSString)
>> tokens.get(j
>>>>>> -
>>>>>>> 1);
>>>>>>>                         String string = previous.getString();
>>>>>>>                         String encodedString = encode(string, font);
>>>>>> 
>>>>>> that string is already encoded. So you'd need to encode "To Be
>> Approved"
>>>>>> and compare if that matches the string you are reading from the PDF.
>>>>>> 
>>>>>>>                         if(encodedString.contains("To Be
>> Approved")){
>>>>>>>                             previous.reset();
>>>>>>>                         }
>>>>>>>                     } else if (op.getOperation().equals("TJ")) {
>>>>>>>                         COSArray previous = (COSArray) tokens.get(j
>> -
>>>>>>> 1);
>>>>>>>                         StringBuilder stringBuilder = new
>>>>>>> StringBuilder();
>>>>>>>                         for (int k = 0; k < previous.size(); k++) {
>>>>>>>                             Object arrElement =
>>>> previous.getObject(k);
>>>>>>>                             if (arrElement instanceof COSString) {
>>>>>>>                                 COSString cosString = (COSString)
>>>>>>> arrElement;
>>>>>>> 
>>>>>>> stringBuilder.append(cosString.getString());
>>>>>>>                             }
>>>>>>>                         }
>>>>>>>                         String string = stringBuilder.toString();
>>>>>>>                         String encodedString = encode(string, font);
>>>>>>>                         if(encodedString.contains("To Be
>> Approved")){
>>>>>>>                             previous.clear();
>>>>>>>                         }
>>>>>>>                     }
>>>>>>> 
>>>>>>> Note:
>>>>>>> In case of COSArray, I first iterate through the whole array to get
>> the
>>>>>>> whole string before encoding and comparison and this works.
>>>>>>> 
>>>>>>> Best Regards,
>>>>>>> a7mad
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> On Mon, Mar 23, 2015 at 10:48 PM, Maruan Sahyoun <
>>>> sahyoun@fileaffairs.de
>>>>>>> 
>>>>>>> wrote:
>>>>>>> 
>>>>>>>> Hi,
>>>>>>>> 
>>>>>>>> your text is encoded so within the show text operator Tj the string
>> is
>>>>>>>> 
>>>>>>>> 7R %H $SSURYHG
>>>>>>>> 
>>>>>>>> You wrote that you encode your string to find it - what do you get?
>>>>>>>> 
>>>>>>>> BR
>>>>>>>> Maruan
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> Am 23.03.2015 um 22:01 schrieb a7med shre3y <
>> a7med.shre3y@gmail.com
>>>>> :
>>>>>>>>> 
>>>>>>>>> Hi Maruan,
>>>>>>>>> 
>>>>>>>>> Here's a link from where you can download the PDF.
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>> 
>> https://drive.google.com/file/d/0B5Kxacm1mej-bm82NzNvUXFPSmMtUjc0ZFVjVVlrODZnRzdn/view?usp=sharing
>>>>>>>>> 
>>>>>>>>> Kind Regards,
>>>>>>>>> a7mad
>>>>>>>>> 
>>>>>>>>> On Mon, Mar 23, 2015 at 8:57 PM, Maruan Sahyoun <
>>>>>> sahyoun@fileaffairs.de>
>>>>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>>> Hi,
>>>>>>>>>> 
>>>>>>>>>> you need to upload it to a public location as the mailing list
>>>> doesn't
>>>>>>>>>> support attachments.
>>>>>>>>>> 
>>>>>>>>>> BR
>>>>>>>>>> Maruan
>>>>>>>>>> 
>>>>>>>>>>> Am 23.03.2015 um 19:18 schrieb a7med shre3y <
>>>> a7med.shre3y@gmail.com
>>>>>>> :
>>>>>>>>>>> 
>>>>>>>>>>> Dear Maruan,
>>>>>>>>>>> 
>>>>>>>>>>> Thank you very much for the information. Please find herewith
>>>>>> attached
>>>>>>>>>> the PDF to reproduce the problem.
>>>>>>>>>>> The text to remove is: "To Be Approved". The text has a
>> multi-byte
>>>>>>>>>> encoding, so I call first to encode it in order to find it then
>>>> remove
>>>>>>>> it.
>>>>>>>>>>> 
>>>>>>>>>>> Best Regards,
>>>>>>>>>>> a7mad
>>>>>>>>>>> 
>>>>>>>>>>>> On Mon, Mar 23, 2015 at 4:13 PM, Maruan Sahyoun <
>>>>>>>> sahyoun@fileaffairs.de>
>>>>>>>>>> wrote:
>>>>>>>>>>>> Dear a7mad,
>>>>>>>>>>>> 
>>>>>>>>>>>> removing text from a PDF is not an easy task as
>>>>>>>>>>>> - text which might visually appear as a single item might
>>>> consistent
>>>>>>>> of
>>>>>>>>>> individual parts within the PDF itself e.g. each character or
>> groups
>>>>>> of
>>>>>>>>>> characters are place individually in different COSStrings
>>>>>>>>>>>> - text might be drawn using graphics commands
>>>>>>>>>>>> - text can appear within different parts of the PDF (e.g. the
>> text
>>>>>>>>>> might be content of a form field AND the annotation representing
>> the
>>>>>>>> form
>>>>>>>>>> field visually)
>>>>>>>>>>>> - you need to look up the encoding information to get form the
>>>>>>>>>> characters in the PDF "string" to the ones you are looking for
>>>>>>>>>>>> ….
>>>>>>>>>>>> 
>>>>>>>>>>>> If you can post a specific PDF to a public location and describe
>>>> in
>>>>>>>>>> detail which string should have been replaced which hasn't I will
>> be
>>>>>>>> able
>>>>>>>>>> to tell you why that might have happened.
>>>>>>>>>>>> 
>>>>>>>>>>>> Maruan
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>>> Am 23.03.2015 um 15:03 schrieb a7med shre3y <
>>>>>> a7med.shre3y@gmail.com
>>>>>>>>> :
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Hi all,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Currently I am facing a strange problem removing text from the
>>>> some
>>>>>>>>>> PDFs.
>>>>>>>>>>>>> My program is able to find the text and "remove it" by calling
>>>> the
>>>>>>>>>>>>> COSString.reset() method.
>>>>>>>>>>>>> The problem is, when I open the output PDF file, I still see
>> the
>>>>>> text
>>>>>>>>>> but
>>>>>>>>>>>>> not selectable (I mean when I try to highlight it with the
>> mouse
>>>> to
>>>>>>>>>> copy
>>>>>>>>>>>>> it, it's not selectable!). When print the content (tokens) of
>> the
>>>>>>>>>> output
>>>>>>>>>>>>> file, I DO NOT find the text at all!!
>>>>>>>>>>>>> 
>>>>>>>>>>>>> I am currently stuck in the PDF specifications 1.5 and really
>>>>>> running
>>>>>>>>>> out
>>>>>>>>>>>>> of time.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> I'd so much appreciate any help or any idea on what's going on.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Notes:
>>>>>>>>>>>>> 1. I use use PDFBox 1.7.1
>>>>>>>>>>>>> 2. This problem does not occur with all PDFs, only some PDFs
>>>> cause
>>>>>>>>>> this
>>>>>>>>>>>>> problem.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Thank you very much.
>>>>>>>>>>>>> a7mad
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>> 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
>>>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>> ---------------------------------------------------------------------
>>>>>>>> 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
>>>>>> 
>>>>>> 
>>>> 
>>>> 
>>>> ---------------------------------------------------------------------
>>>> 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
>> 
>> 


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


Re: Text removal

Posted by a7med shre3y <a7...@gmail.com>.
That's true, I've even tried to change the rendering text mode to other
values already as mentioned in the PDF specs 1.5 table 5.3 before removing
it also didn't work.
So how to remove the graphics content then?

Best Regards,

On Tue, Mar 24, 2015 at 10:06 AM, Maruan Sahyoun <sa...@fileaffairs.de>
wrote:

> Hi,
>
> > Am 24.03.2015 um 09:55 schrieb a7med shre3y <a7...@gmail.com>:
> >
> > You can download it from here:
> >
> https://drive.google.com/file/d/0B5Kxacm1mej-MEZubTNYVVJYTFE/view?usp=sharing
> >
>
> looking more closely you correctly replaced the text, but that text was in
> there for searching within the PDF as it used text rendering mode 3
> (invisible). The 'text' you are still seeing is drawn using vector commands
> so it's graphics content.
>
> BR
> Maruan
>
>
> > Best Regards,
> >
> >
> > On Tue, Mar 24, 2015 at 9:48 AM, Maruan Sahyoun <sa...@fileaffairs.de>
> > wrote:
> >
> >>
> >>
> >>> Am 24.03.2015 um 09:40 schrieb a7med shre3y <a7...@gmail.com>:
> >>>
> >>> Hi,
> >>>
> >>> In fact PDFBox call the operation of transforming "7R %H $SSURYHG" to
> "To
> >>> Be Approved" as "encoding". Anyway, either it's encoding or decoding, I
> >>> thought it's easier to transform "7R %H $SSURYHG" to "To Be Approved"
> and
> >>> not the opposite (or at least I don't know). I spent some quite long
> time
> >>> trying to find out how to find the character codes for the glyphs in
> the
> >>> currently used font, then I found that it's not an easy task. By the
> way,
> >>> if you know how to do that, I'd so much appreciate it because I need
> that
> >>> for replacing text with another text and for that the new text must be
> >>> encoded the same way as the original!
> >>>
> >>> Back to the text removal, I am able to find the text and also remove it
> >> by
> >>> calling reset, as I mentioned in my first email, when I print the
> output
> >>> content I don't find the text anymore but I still see it when I open
> the
> >>> file. My first assumption was that there must be some other way to
> remove
> >>> the text other than the way I am using, and that's what you've actually
> >>> confirmed in your reply, so could you please tell me what still
> missing?
> >>>
> >>
> >> Could you upload the PDF with the reset text too?
> >>
> >> BR
> >> Maruan
> >>
> >>
> >>> Thanks and regards,
> >>> a7mad
> >>>
> >>> On Tue, Mar 24, 2015 at 9:22 AM, Maruan Sahyoun <
> sahyoun@fileaffairs.de>
> >>> wrote:
> >>>
> >>>> Hi,
> >>>>
> >>>>> Am 24.03.2015 um 08:14 schrieb a7med shre3y <a7med.shre3y@gmail.com
> >:
> >>>>>
> >>>>> Hi,
> >>>>>
> >>>>> Here's how I do it:
> >>>>>
> >>>>> 1. I use the following method to encode the text:
> >>>>>
> >>>>> String encode(String text, PDFont font) throws Exception {
> >>>>>      StringBuilder builder = new StringBuilder();
> >>>>>      byte[] stringBytes = text.getBytes();
> >>>>>      int codeLength = 1;
> >>>>>      for(int i = 0; i < stringBytes.length; i += codeLength){
> >>>>>              String c = font.encode(stringBytes, i, codeLength);
> >>>>>              if(c == null && (i + 1 < stringBytes.length)){
> >>>>>                  codeLength++;
> >>>>>                  c = font.encode(stringBytes, i, codeLength);
> >>>>>              }
> >>>>>              builder.append(c);
> >>>>>          }
> >>>>>      return builder.toString();
> >>>>>  }
> >>>>>
> >>>>> 2. Iterating through the tokens, I find the text either it's a
> >> COSString
> >>>>> ("Tj" operator) or a COSArray ("TJ" operator) then check if it's the
> >> text
> >>>>> I'm looking for to remove as following:
> >>>>>
> >>>>> if (op.getOperation().equals("Tj")) {
> >>>>>                          COSString previous = (COSString)
> tokens.get(j
> >>>> -
> >>>>> 1);
> >>>>>                          String string = previous.getString();
> >>>>>                          String encodedString = encode(string, font);
> >>>>
> >>>> that string is already encoded. So you'd need to encode "To Be
> Approved"
> >>>> and compare if that matches the string you are reading from the PDF.
> >>>>
> >>>>>                          if(encodedString.contains("To Be
> Approved")){
> >>>>>                              previous.reset();
> >>>>>                          }
> >>>>>                      } else if (op.getOperation().equals("TJ")) {
> >>>>>                          COSArray previous = (COSArray) tokens.get(j
> -
> >>>>> 1);
> >>>>>                          StringBuilder stringBuilder = new
> >>>>> StringBuilder();
> >>>>>                          for (int k = 0; k < previous.size(); k++) {
> >>>>>                              Object arrElement =
> >> previous.getObject(k);
> >>>>>                              if (arrElement instanceof COSString) {
> >>>>>                                  COSString cosString = (COSString)
> >>>>> arrElement;
> >>>>>
> >>>>> stringBuilder.append(cosString.getString());
> >>>>>                              }
> >>>>>                          }
> >>>>>                          String string = stringBuilder.toString();
> >>>>>                          String encodedString = encode(string, font);
> >>>>>                          if(encodedString.contains("To Be
> Approved")){
> >>>>>                              previous.clear();
> >>>>>                          }
> >>>>>                      }
> >>>>>
> >>>>> Note:
> >>>>> In case of COSArray, I first iterate through the whole array to get
> the
> >>>>> whole string before encoding and comparison and this works.
> >>>>>
> >>>>> Best Regards,
> >>>>> a7mad
> >>>>>
> >>>>>
> >>>>>
> >>>>> On Mon, Mar 23, 2015 at 10:48 PM, Maruan Sahyoun <
> >> sahyoun@fileaffairs.de
> >>>>>
> >>>>> wrote:
> >>>>>
> >>>>>> Hi,
> >>>>>>
> >>>>>> your text is encoded so within the show text operator Tj the string
> is
> >>>>>>
> >>>>>> 7R %H $SSURYHG
> >>>>>>
> >>>>>> You wrote that you encode your string to find it - what do you get?
> >>>>>>
> >>>>>> BR
> >>>>>> Maruan
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>> Am 23.03.2015 um 22:01 schrieb a7med shre3y <
> a7med.shre3y@gmail.com
> >>> :
> >>>>>>>
> >>>>>>> Hi Maruan,
> >>>>>>>
> >>>>>>> Here's a link from where you can download the PDF.
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>
> >>
> https://drive.google.com/file/d/0B5Kxacm1mej-bm82NzNvUXFPSmMtUjc0ZFVjVVlrODZnRzdn/view?usp=sharing
> >>>>>>>
> >>>>>>> Kind Regards,
> >>>>>>> a7mad
> >>>>>>>
> >>>>>>> On Mon, Mar 23, 2015 at 8:57 PM, Maruan Sahyoun <
> >>>> sahyoun@fileaffairs.de>
> >>>>>>> wrote:
> >>>>>>>
> >>>>>>>> Hi,
> >>>>>>>>
> >>>>>>>> you need to upload it to a public location as the mailing list
> >> doesn't
> >>>>>>>> support attachments.
> >>>>>>>>
> >>>>>>>> BR
> >>>>>>>> Maruan
> >>>>>>>>
> >>>>>>>>> Am 23.03.2015 um 19:18 schrieb a7med shre3y <
> >> a7med.shre3y@gmail.com
> >>>>> :
> >>>>>>>>>
> >>>>>>>>> Dear Maruan,
> >>>>>>>>>
> >>>>>>>>> Thank you very much for the information. Please find herewith
> >>>> attached
> >>>>>>>> the PDF to reproduce the problem.
> >>>>>>>>> The text to remove is: "To Be Approved". The text has a
> multi-byte
> >>>>>>>> encoding, so I call first to encode it in order to find it then
> >> remove
> >>>>>> it.
> >>>>>>>>>
> >>>>>>>>> Best Regards,
> >>>>>>>>> a7mad
> >>>>>>>>>
> >>>>>>>>>> On Mon, Mar 23, 2015 at 4:13 PM, Maruan Sahyoun <
> >>>>>> sahyoun@fileaffairs.de>
> >>>>>>>> wrote:
> >>>>>>>>>> Dear a7mad,
> >>>>>>>>>>
> >>>>>>>>>> removing text from a PDF is not an easy task as
> >>>>>>>>>> - text which might visually appear as a single item might
> >> consistent
> >>>>>> of
> >>>>>>>> individual parts within the PDF itself e.g. each character or
> groups
> >>>> of
> >>>>>>>> characters are place individually in different COSStrings
> >>>>>>>>>> - text might be drawn using graphics commands
> >>>>>>>>>> - text can appear within different parts of the PDF (e.g. the
> text
> >>>>>>>> might be content of a form field AND the annotation representing
> the
> >>>>>> form
> >>>>>>>> field visually)
> >>>>>>>>>> - you need to look up the encoding information to get form the
> >>>>>>>> characters in the PDF "string" to the ones you are looking for
> >>>>>>>>>> ….
> >>>>>>>>>>
> >>>>>>>>>> If you can post a specific PDF to a public location and describe
> >> in
> >>>>>>>> detail which string should have been replaced which hasn't I will
> be
> >>>>>> able
> >>>>>>>> to tell you why that might have happened.
> >>>>>>>>>>
> >>>>>>>>>> Maruan
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>> Am 23.03.2015 um 15:03 schrieb a7med shre3y <
> >>>> a7med.shre3y@gmail.com
> >>>>>>> :
> >>>>>>>>>>>
> >>>>>>>>>>> Hi all,
> >>>>>>>>>>>
> >>>>>>>>>>> Currently I am facing a strange problem removing text from the
> >> some
> >>>>>>>> PDFs.
> >>>>>>>>>>> My program is able to find the text and "remove it" by calling
> >> the
> >>>>>>>>>>> COSString.reset() method.
> >>>>>>>>>>> The problem is, when I open the output PDF file, I still see
> the
> >>>> text
> >>>>>>>> but
> >>>>>>>>>>> not selectable (I mean when I try to highlight it with the
> mouse
> >> to
> >>>>>>>> copy
> >>>>>>>>>>> it, it's not selectable!). When print the content (tokens) of
> the
> >>>>>>>> output
> >>>>>>>>>>> file, I DO NOT find the text at all!!
> >>>>>>>>>>>
> >>>>>>>>>>> I am currently stuck in the PDF specifications 1.5 and really
> >>>> running
> >>>>>>>> out
> >>>>>>>>>>> of time.
> >>>>>>>>>>>
> >>>>>>>>>>> I'd so much appreciate any help or any idea on what's going on.
> >>>>>>>>>>>
> >>>>>>>>>>> Notes:
> >>>>>>>>>>> 1. I use use PDFBox 1.7.1
> >>>>>>>>>>> 2. This problem does not occur with all PDFs, only some PDFs
> >> cause
> >>>>>>>> this
> >>>>>>>>>>> problem.
> >>>>>>>>>>>
> >>>>>>>>>>> Thank you very much.
> >>>>>>>>>>> a7mad
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>> ---------------------------------------------------------------------
> >>>>>>>>>> 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
> >>>>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> ---------------------------------------------------------------------
> >>>>>> 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
> >>>>
> >>>>
> >>
> >>
> >> ---------------------------------------------------------------------
> >> 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
>
>

Re: Text removal

Posted by Maruan Sahyoun <sa...@fileaffairs.de>.
Hi,

> Am 24.03.2015 um 09:55 schrieb a7med shre3y <a7...@gmail.com>:
> 
> You can download it from here:
> https://drive.google.com/file/d/0B5Kxacm1mej-MEZubTNYVVJYTFE/view?usp=sharing
> 

looking more closely you correctly replaced the text, but that text was in there for searching within the PDF as it used text rendering mode 3 (invisible). The 'text' you are still seeing is drawn using vector commands so it's graphics content.

BR
Maruan


> Best Regards,
> 
> 
> On Tue, Mar 24, 2015 at 9:48 AM, Maruan Sahyoun <sa...@fileaffairs.de>
> wrote:
> 
>> 
>> 
>>> Am 24.03.2015 um 09:40 schrieb a7med shre3y <a7...@gmail.com>:
>>> 
>>> Hi,
>>> 
>>> In fact PDFBox call the operation of transforming "7R %H $SSURYHG" to "To
>>> Be Approved" as "encoding". Anyway, either it's encoding or decoding, I
>>> thought it's easier to transform "7R %H $SSURYHG" to "To Be Approved" and
>>> not the opposite (or at least I don't know). I spent some quite long time
>>> trying to find out how to find the character codes for the glyphs in the
>>> currently used font, then I found that it's not an easy task. By the way,
>>> if you know how to do that, I'd so much appreciate it because I need that
>>> for replacing text with another text and for that the new text must be
>>> encoded the same way as the original!
>>> 
>>> Back to the text removal, I am able to find the text and also remove it
>> by
>>> calling reset, as I mentioned in my first email, when I print the output
>>> content I don't find the text anymore but I still see it when I open the
>>> file. My first assumption was that there must be some other way to remove
>>> the text other than the way I am using, and that's what you've actually
>>> confirmed in your reply, so could you please tell me what still missing?
>>> 
>> 
>> Could you upload the PDF with the reset text too?
>> 
>> BR
>> Maruan
>> 
>> 
>>> Thanks and regards,
>>> a7mad
>>> 
>>> On Tue, Mar 24, 2015 at 9:22 AM, Maruan Sahyoun <sa...@fileaffairs.de>
>>> wrote:
>>> 
>>>> Hi,
>>>> 
>>>>> Am 24.03.2015 um 08:14 schrieb a7med shre3y <a7...@gmail.com>:
>>>>> 
>>>>> Hi,
>>>>> 
>>>>> Here's how I do it:
>>>>> 
>>>>> 1. I use the following method to encode the text:
>>>>> 
>>>>> String encode(String text, PDFont font) throws Exception {
>>>>>      StringBuilder builder = new StringBuilder();
>>>>>      byte[] stringBytes = text.getBytes();
>>>>>      int codeLength = 1;
>>>>>      for(int i = 0; i < stringBytes.length; i += codeLength){
>>>>>              String c = font.encode(stringBytes, i, codeLength);
>>>>>              if(c == null && (i + 1 < stringBytes.length)){
>>>>>                  codeLength++;
>>>>>                  c = font.encode(stringBytes, i, codeLength);
>>>>>              }
>>>>>              builder.append(c);
>>>>>          }
>>>>>      return builder.toString();
>>>>>  }
>>>>> 
>>>>> 2. Iterating through the tokens, I find the text either it's a
>> COSString
>>>>> ("Tj" operator) or a COSArray ("TJ" operator) then check if it's the
>> text
>>>>> I'm looking for to remove as following:
>>>>> 
>>>>> if (op.getOperation().equals("Tj")) {
>>>>>                          COSString previous = (COSString) tokens.get(j
>>>> -
>>>>> 1);
>>>>>                          String string = previous.getString();
>>>>>                          String encodedString = encode(string, font);
>>>> 
>>>> that string is already encoded. So you'd need to encode "To Be Approved"
>>>> and compare if that matches the string you are reading from the PDF.
>>>> 
>>>>>                          if(encodedString.contains("To Be Approved")){
>>>>>                              previous.reset();
>>>>>                          }
>>>>>                      } else if (op.getOperation().equals("TJ")) {
>>>>>                          COSArray previous = (COSArray) tokens.get(j -
>>>>> 1);
>>>>>                          StringBuilder stringBuilder = new
>>>>> StringBuilder();
>>>>>                          for (int k = 0; k < previous.size(); k++) {
>>>>>                              Object arrElement =
>> previous.getObject(k);
>>>>>                              if (arrElement instanceof COSString) {
>>>>>                                  COSString cosString = (COSString)
>>>>> arrElement;
>>>>> 
>>>>> stringBuilder.append(cosString.getString());
>>>>>                              }
>>>>>                          }
>>>>>                          String string = stringBuilder.toString();
>>>>>                          String encodedString = encode(string, font);
>>>>>                          if(encodedString.contains("To Be Approved")){
>>>>>                              previous.clear();
>>>>>                          }
>>>>>                      }
>>>>> 
>>>>> Note:
>>>>> In case of COSArray, I first iterate through the whole array to get the
>>>>> whole string before encoding and comparison and this works.
>>>>> 
>>>>> Best Regards,
>>>>> a7mad
>>>>> 
>>>>> 
>>>>> 
>>>>> On Mon, Mar 23, 2015 at 10:48 PM, Maruan Sahyoun <
>> sahyoun@fileaffairs.de
>>>>> 
>>>>> wrote:
>>>>> 
>>>>>> Hi,
>>>>>> 
>>>>>> your text is encoded so within the show text operator Tj the string is
>>>>>> 
>>>>>> 7R %H $SSURYHG
>>>>>> 
>>>>>> You wrote that you encode your string to find it - what do you get?
>>>>>> 
>>>>>> BR
>>>>>> Maruan
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> Am 23.03.2015 um 22:01 schrieb a7med shre3y <a7med.shre3y@gmail.com
>>> :
>>>>>>> 
>>>>>>> Hi Maruan,
>>>>>>> 
>>>>>>> Here's a link from where you can download the PDF.
>>>>>>> 
>>>>>>> 
>>>>>> 
>>>> 
>> https://drive.google.com/file/d/0B5Kxacm1mej-bm82NzNvUXFPSmMtUjc0ZFVjVVlrODZnRzdn/view?usp=sharing
>>>>>>> 
>>>>>>> Kind Regards,
>>>>>>> a7mad
>>>>>>> 
>>>>>>> On Mon, Mar 23, 2015 at 8:57 PM, Maruan Sahyoun <
>>>> sahyoun@fileaffairs.de>
>>>>>>> wrote:
>>>>>>> 
>>>>>>>> Hi,
>>>>>>>> 
>>>>>>>> you need to upload it to a public location as the mailing list
>> doesn't
>>>>>>>> support attachments.
>>>>>>>> 
>>>>>>>> BR
>>>>>>>> Maruan
>>>>>>>> 
>>>>>>>>> Am 23.03.2015 um 19:18 schrieb a7med shre3y <
>> a7med.shre3y@gmail.com
>>>>> :
>>>>>>>>> 
>>>>>>>>> Dear Maruan,
>>>>>>>>> 
>>>>>>>>> Thank you very much for the information. Please find herewith
>>>> attached
>>>>>>>> the PDF to reproduce the problem.
>>>>>>>>> The text to remove is: "To Be Approved". The text has a multi-byte
>>>>>>>> encoding, so I call first to encode it in order to find it then
>> remove
>>>>>> it.
>>>>>>>>> 
>>>>>>>>> Best Regards,
>>>>>>>>> a7mad
>>>>>>>>> 
>>>>>>>>>> On Mon, Mar 23, 2015 at 4:13 PM, Maruan Sahyoun <
>>>>>> sahyoun@fileaffairs.de>
>>>>>>>> wrote:
>>>>>>>>>> Dear a7mad,
>>>>>>>>>> 
>>>>>>>>>> removing text from a PDF is not an easy task as
>>>>>>>>>> - text which might visually appear as a single item might
>> consistent
>>>>>> of
>>>>>>>> individual parts within the PDF itself e.g. each character or groups
>>>> of
>>>>>>>> characters are place individually in different COSStrings
>>>>>>>>>> - text might be drawn using graphics commands
>>>>>>>>>> - text can appear within different parts of the PDF (e.g. the text
>>>>>>>> might be content of a form field AND the annotation representing the
>>>>>> form
>>>>>>>> field visually)
>>>>>>>>>> - you need to look up the encoding information to get form the
>>>>>>>> characters in the PDF "string" to the ones you are looking for
>>>>>>>>>> ….
>>>>>>>>>> 
>>>>>>>>>> If you can post a specific PDF to a public location and describe
>> in
>>>>>>>> detail which string should have been replaced which hasn't I will be
>>>>>> able
>>>>>>>> to tell you why that might have happened.
>>>>>>>>>> 
>>>>>>>>>> Maruan
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>>> Am 23.03.2015 um 15:03 schrieb a7med shre3y <
>>>> a7med.shre3y@gmail.com
>>>>>>> :
>>>>>>>>>>> 
>>>>>>>>>>> Hi all,
>>>>>>>>>>> 
>>>>>>>>>>> Currently I am facing a strange problem removing text from the
>> some
>>>>>>>> PDFs.
>>>>>>>>>>> My program is able to find the text and "remove it" by calling
>> the
>>>>>>>>>>> COSString.reset() method.
>>>>>>>>>>> The problem is, when I open the output PDF file, I still see the
>>>> text
>>>>>>>> but
>>>>>>>>>>> not selectable (I mean when I try to highlight it with the mouse
>> to
>>>>>>>> copy
>>>>>>>>>>> it, it's not selectable!). When print the content (tokens) of the
>>>>>>>> output
>>>>>>>>>>> file, I DO NOT find the text at all!!
>>>>>>>>>>> 
>>>>>>>>>>> I am currently stuck in the PDF specifications 1.5 and really
>>>> running
>>>>>>>> out
>>>>>>>>>>> of time.
>>>>>>>>>>> 
>>>>>>>>>>> I'd so much appreciate any help or any idea on what's going on.
>>>>>>>>>>> 
>>>>>>>>>>> Notes:
>>>>>>>>>>> 1. I use use PDFBox 1.7.1
>>>>>>>>>>> 2. This problem does not occur with all PDFs, only some PDFs
>> cause
>>>>>>>> this
>>>>>>>>>>> problem.
>>>>>>>>>>> 
>>>>>>>>>>> Thank you very much.
>>>>>>>>>>> a7mad
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>> ---------------------------------------------------------------------
>>>>>>>>>> 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
>>>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> ---------------------------------------------------------------------
>>>>>> 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
>>>> 
>>>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> 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


Re: Text removal

Posted by a7med shre3y <a7...@gmail.com>.
You can download it from here:
https://drive.google.com/file/d/0B5Kxacm1mej-MEZubTNYVVJYTFE/view?usp=sharing

Best Regards,


On Tue, Mar 24, 2015 at 9:48 AM, Maruan Sahyoun <sa...@fileaffairs.de>
wrote:

>
>
> > Am 24.03.2015 um 09:40 schrieb a7med shre3y <a7...@gmail.com>:
> >
> > Hi,
> >
> > In fact PDFBox call the operation of transforming "7R %H $SSURYHG" to "To
> > Be Approved" as "encoding". Anyway, either it's encoding or decoding, I
> > thought it's easier to transform "7R %H $SSURYHG" to "To Be Approved" and
> > not the opposite (or at least I don't know). I spent some quite long time
> > trying to find out how to find the character codes for the glyphs in the
> > currently used font, then I found that it's not an easy task. By the way,
> > if you know how to do that, I'd so much appreciate it because I need that
> > for replacing text with another text and for that the new text must be
> > encoded the same way as the original!
> >
> > Back to the text removal, I am able to find the text and also remove it
> by
> > calling reset, as I mentioned in my first email, when I print the output
> > content I don't find the text anymore but I still see it when I open the
> > file. My first assumption was that there must be some other way to remove
> > the text other than the way I am using, and that's what you've actually
> > confirmed in your reply, so could you please tell me what still missing?
> >
>
> Could you upload the PDF with the reset text too?
>
> BR
> Maruan
>
>
> > Thanks and regards,
> > a7mad
> >
> > On Tue, Mar 24, 2015 at 9:22 AM, Maruan Sahyoun <sa...@fileaffairs.de>
> > wrote:
> >
> >> Hi,
> >>
> >>> Am 24.03.2015 um 08:14 schrieb a7med shre3y <a7...@gmail.com>:
> >>>
> >>> Hi,
> >>>
> >>> Here's how I do it:
> >>>
> >>> 1. I use the following method to encode the text:
> >>>
> >>> String encode(String text, PDFont font) throws Exception {
> >>>       StringBuilder builder = new StringBuilder();
> >>>       byte[] stringBytes = text.getBytes();
> >>>       int codeLength = 1;
> >>>       for(int i = 0; i < stringBytes.length; i += codeLength){
> >>>               String c = font.encode(stringBytes, i, codeLength);
> >>>               if(c == null && (i + 1 < stringBytes.length)){
> >>>                   codeLength++;
> >>>                   c = font.encode(stringBytes, i, codeLength);
> >>>               }
> >>>               builder.append(c);
> >>>           }
> >>>       return builder.toString();
> >>>   }
> >>>
> >>> 2. Iterating through the tokens, I find the text either it's a
> COSString
> >>> ("Tj" operator) or a COSArray ("TJ" operator) then check if it's the
> text
> >>> I'm looking for to remove as following:
> >>>
> >>> if (op.getOperation().equals("Tj")) {
> >>>                           COSString previous = (COSString) tokens.get(j
> >> -
> >>> 1);
> >>>                           String string = previous.getString();
> >>>                           String encodedString = encode(string, font);
> >>
> >> that string is already encoded. So you'd need to encode "To Be Approved"
> >> and compare if that matches the string you are reading from the PDF.
> >>
> >>>                           if(encodedString.contains("To Be Approved")){
> >>>                               previous.reset();
> >>>                           }
> >>>                       } else if (op.getOperation().equals("TJ")) {
> >>>                           COSArray previous = (COSArray) tokens.get(j -
> >>> 1);
> >>>                           StringBuilder stringBuilder = new
> >>> StringBuilder();
> >>>                           for (int k = 0; k < previous.size(); k++) {
> >>>                               Object arrElement =
> previous.getObject(k);
> >>>                               if (arrElement instanceof COSString) {
> >>>                                   COSString cosString = (COSString)
> >>> arrElement;
> >>>
> >>> stringBuilder.append(cosString.getString());
> >>>                               }
> >>>                           }
> >>>                           String string = stringBuilder.toString();
> >>>                           String encodedString = encode(string, font);
> >>>                           if(encodedString.contains("To Be Approved")){
> >>>                               previous.clear();
> >>>                           }
> >>>                       }
> >>>
> >>> Note:
> >>> In case of COSArray, I first iterate through the whole array to get the
> >>> whole string before encoding and comparison and this works.
> >>>
> >>> Best Regards,
> >>> a7mad
> >>>
> >>>
> >>>
> >>> On Mon, Mar 23, 2015 at 10:48 PM, Maruan Sahyoun <
> sahyoun@fileaffairs.de
> >>>
> >>> wrote:
> >>>
> >>>> Hi,
> >>>>
> >>>> your text is encoded so within the show text operator Tj the string is
> >>>>
> >>>> 7R %H $SSURYHG
> >>>>
> >>>> You wrote that you encode your string to find it - what do you get?
> >>>>
> >>>> BR
> >>>> Maruan
> >>>>
> >>>>
> >>>>
> >>>>> Am 23.03.2015 um 22:01 schrieb a7med shre3y <a7med.shre3y@gmail.com
> >:
> >>>>>
> >>>>> Hi Maruan,
> >>>>>
> >>>>> Here's a link from where you can download the PDF.
> >>>>>
> >>>>>
> >>>>
> >>
> https://drive.google.com/file/d/0B5Kxacm1mej-bm82NzNvUXFPSmMtUjc0ZFVjVVlrODZnRzdn/view?usp=sharing
> >>>>>
> >>>>> Kind Regards,
> >>>>> a7mad
> >>>>>
> >>>>> On Mon, Mar 23, 2015 at 8:57 PM, Maruan Sahyoun <
> >> sahyoun@fileaffairs.de>
> >>>>> wrote:
> >>>>>
> >>>>>> Hi,
> >>>>>>
> >>>>>> you need to upload it to a public location as the mailing list
> doesn't
> >>>>>> support attachments.
> >>>>>>
> >>>>>> BR
> >>>>>> Maruan
> >>>>>>
> >>>>>>> Am 23.03.2015 um 19:18 schrieb a7med shre3y <
> a7med.shre3y@gmail.com
> >>> :
> >>>>>>>
> >>>>>>> Dear Maruan,
> >>>>>>>
> >>>>>>> Thank you very much for the information. Please find herewith
> >> attached
> >>>>>> the PDF to reproduce the problem.
> >>>>>>> The text to remove is: "To Be Approved". The text has a multi-byte
> >>>>>> encoding, so I call first to encode it in order to find it then
> remove
> >>>> it.
> >>>>>>>
> >>>>>>> Best Regards,
> >>>>>>> a7mad
> >>>>>>>
> >>>>>>>> On Mon, Mar 23, 2015 at 4:13 PM, Maruan Sahyoun <
> >>>> sahyoun@fileaffairs.de>
> >>>>>> wrote:
> >>>>>>>> Dear a7mad,
> >>>>>>>>
> >>>>>>>> removing text from a PDF is not an easy task as
> >>>>>>>> - text which might visually appear as a single item might
> consistent
> >>>> of
> >>>>>> individual parts within the PDF itself e.g. each character or groups
> >> of
> >>>>>> characters are place individually in different COSStrings
> >>>>>>>> - text might be drawn using graphics commands
> >>>>>>>> - text can appear within different parts of the PDF (e.g. the text
> >>>>>> might be content of a form field AND the annotation representing the
> >>>> form
> >>>>>> field visually)
> >>>>>>>> - you need to look up the encoding information to get form the
> >>>>>> characters in the PDF "string" to the ones you are looking for
> >>>>>>>> ….
> >>>>>>>>
> >>>>>>>> If you can post a specific PDF to a public location and describe
> in
> >>>>>> detail which string should have been replaced which hasn't I will be
> >>>> able
> >>>>>> to tell you why that might have happened.
> >>>>>>>>
> >>>>>>>> Maruan
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>> Am 23.03.2015 um 15:03 schrieb a7med shre3y <
> >> a7med.shre3y@gmail.com
> >>>>> :
> >>>>>>>>>
> >>>>>>>>> Hi all,
> >>>>>>>>>
> >>>>>>>>> Currently I am facing a strange problem removing text from the
> some
> >>>>>> PDFs.
> >>>>>>>>> My program is able to find the text and "remove it" by calling
> the
> >>>>>>>>> COSString.reset() method.
> >>>>>>>>> The problem is, when I open the output PDF file, I still see the
> >> text
> >>>>>> but
> >>>>>>>>> not selectable (I mean when I try to highlight it with the mouse
> to
> >>>>>> copy
> >>>>>>>>> it, it's not selectable!). When print the content (tokens) of the
> >>>>>> output
> >>>>>>>>> file, I DO NOT find the text at all!!
> >>>>>>>>>
> >>>>>>>>> I am currently stuck in the PDF specifications 1.5 and really
> >> running
> >>>>>> out
> >>>>>>>>> of time.
> >>>>>>>>>
> >>>>>>>>> I'd so much appreciate any help or any idea on what's going on.
> >>>>>>>>>
> >>>>>>>>> Notes:
> >>>>>>>>> 1. I use use PDFBox 1.7.1
> >>>>>>>>> 2. This problem does not occur with all PDFs, only some PDFs
> cause
> >>>>>> this
> >>>>>>>>> problem.
> >>>>>>>>>
> >>>>>>>>> Thank you very much.
> >>>>>>>>> a7mad
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >> ---------------------------------------------------------------------
> >>>>>>>> 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
> >>>>>>
> >>>>
> >>>>
> >>>> ---------------------------------------------------------------------
> >>>> 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
> >>
> >>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
> For additional commands, e-mail: users-help@pdfbox.apache.org
>
>

Re: Text removal

Posted by Maruan Sahyoun <sa...@fileaffairs.de>.

> Am 24.03.2015 um 09:40 schrieb a7med shre3y <a7...@gmail.com>:
> 
> Hi,
> 
> In fact PDFBox call the operation of transforming "7R %H $SSURYHG" to "To
> Be Approved" as "encoding". Anyway, either it's encoding or decoding, I
> thought it's easier to transform "7R %H $SSURYHG" to "To Be Approved" and
> not the opposite (or at least I don't know). I spent some quite long time
> trying to find out how to find the character codes for the glyphs in the
> currently used font, then I found that it's not an easy task. By the way,
> if you know how to do that, I'd so much appreciate it because I need that
> for replacing text with another text and for that the new text must be
> encoded the same way as the original!
> 
> Back to the text removal, I am able to find the text and also remove it by
> calling reset, as I mentioned in my first email, when I print the output
> content I don't find the text anymore but I still see it when I open the
> file. My first assumption was that there must be some other way to remove
> the text other than the way I am using, and that's what you've actually
> confirmed in your reply, so could you please tell me what still missing?
> 

Could you upload the PDF with the reset text too?

BR
Maruan


> Thanks and regards,
> a7mad
> 
> On Tue, Mar 24, 2015 at 9:22 AM, Maruan Sahyoun <sa...@fileaffairs.de>
> wrote:
> 
>> Hi,
>> 
>>> Am 24.03.2015 um 08:14 schrieb a7med shre3y <a7...@gmail.com>:
>>> 
>>> Hi,
>>> 
>>> Here's how I do it:
>>> 
>>> 1. I use the following method to encode the text:
>>> 
>>> String encode(String text, PDFont font) throws Exception {
>>>       StringBuilder builder = new StringBuilder();
>>>       byte[] stringBytes = text.getBytes();
>>>       int codeLength = 1;
>>>       for(int i = 0; i < stringBytes.length; i += codeLength){
>>>               String c = font.encode(stringBytes, i, codeLength);
>>>               if(c == null && (i + 1 < stringBytes.length)){
>>>                   codeLength++;
>>>                   c = font.encode(stringBytes, i, codeLength);
>>>               }
>>>               builder.append(c);
>>>           }
>>>       return builder.toString();
>>>   }
>>> 
>>> 2. Iterating through the tokens, I find the text either it's a COSString
>>> ("Tj" operator) or a COSArray ("TJ" operator) then check if it's the text
>>> I'm looking for to remove as following:
>>> 
>>> if (op.getOperation().equals("Tj")) {
>>>                           COSString previous = (COSString) tokens.get(j
>> -
>>> 1);
>>>                           String string = previous.getString();
>>>                           String encodedString = encode(string, font);
>> 
>> that string is already encoded. So you'd need to encode "To Be Approved"
>> and compare if that matches the string you are reading from the PDF.
>> 
>>>                           if(encodedString.contains("To Be Approved")){
>>>                               previous.reset();
>>>                           }
>>>                       } else if (op.getOperation().equals("TJ")) {
>>>                           COSArray previous = (COSArray) tokens.get(j -
>>> 1);
>>>                           StringBuilder stringBuilder = new
>>> StringBuilder();
>>>                           for (int k = 0; k < previous.size(); k++) {
>>>                               Object arrElement = previous.getObject(k);
>>>                               if (arrElement instanceof COSString) {
>>>                                   COSString cosString = (COSString)
>>> arrElement;
>>> 
>>> stringBuilder.append(cosString.getString());
>>>                               }
>>>                           }
>>>                           String string = stringBuilder.toString();
>>>                           String encodedString = encode(string, font);
>>>                           if(encodedString.contains("To Be Approved")){
>>>                               previous.clear();
>>>                           }
>>>                       }
>>> 
>>> Note:
>>> In case of COSArray, I first iterate through the whole array to get the
>>> whole string before encoding and comparison and this works.
>>> 
>>> Best Regards,
>>> a7mad
>>> 
>>> 
>>> 
>>> On Mon, Mar 23, 2015 at 10:48 PM, Maruan Sahyoun <sahyoun@fileaffairs.de
>>> 
>>> wrote:
>>> 
>>>> Hi,
>>>> 
>>>> your text is encoded so within the show text operator Tj the string is
>>>> 
>>>> 7R %H $SSURYHG
>>>> 
>>>> You wrote that you encode your string to find it - what do you get?
>>>> 
>>>> BR
>>>> Maruan
>>>> 
>>>> 
>>>> 
>>>>> Am 23.03.2015 um 22:01 schrieb a7med shre3y <a7...@gmail.com>:
>>>>> 
>>>>> Hi Maruan,
>>>>> 
>>>>> Here's a link from where you can download the PDF.
>>>>> 
>>>>> 
>>>> 
>> https://drive.google.com/file/d/0B5Kxacm1mej-bm82NzNvUXFPSmMtUjc0ZFVjVVlrODZnRzdn/view?usp=sharing
>>>>> 
>>>>> Kind Regards,
>>>>> a7mad
>>>>> 
>>>>> On Mon, Mar 23, 2015 at 8:57 PM, Maruan Sahyoun <
>> sahyoun@fileaffairs.de>
>>>>> wrote:
>>>>> 
>>>>>> Hi,
>>>>>> 
>>>>>> you need to upload it to a public location as the mailing list doesn't
>>>>>> support attachments.
>>>>>> 
>>>>>> BR
>>>>>> Maruan
>>>>>> 
>>>>>>> Am 23.03.2015 um 19:18 schrieb a7med shre3y <a7med.shre3y@gmail.com
>>> :
>>>>>>> 
>>>>>>> Dear Maruan,
>>>>>>> 
>>>>>>> Thank you very much for the information. Please find herewith
>> attached
>>>>>> the PDF to reproduce the problem.
>>>>>>> The text to remove is: "To Be Approved". The text has a multi-byte
>>>>>> encoding, so I call first to encode it in order to find it then remove
>>>> it.
>>>>>>> 
>>>>>>> Best Regards,
>>>>>>> a7mad
>>>>>>> 
>>>>>>>> On Mon, Mar 23, 2015 at 4:13 PM, Maruan Sahyoun <
>>>> sahyoun@fileaffairs.de>
>>>>>> wrote:
>>>>>>>> Dear a7mad,
>>>>>>>> 
>>>>>>>> removing text from a PDF is not an easy task as
>>>>>>>> - text which might visually appear as a single item might consistent
>>>> of
>>>>>> individual parts within the PDF itself e.g. each character or groups
>> of
>>>>>> characters are place individually in different COSStrings
>>>>>>>> - text might be drawn using graphics commands
>>>>>>>> - text can appear within different parts of the PDF (e.g. the text
>>>>>> might be content of a form field AND the annotation representing the
>>>> form
>>>>>> field visually)
>>>>>>>> - you need to look up the encoding information to get form the
>>>>>> characters in the PDF "string" to the ones you are looking for
>>>>>>>> ….
>>>>>>>> 
>>>>>>>> If you can post a specific PDF to a public location and describe in
>>>>>> detail which string should have been replaced which hasn't I will be
>>>> able
>>>>>> to tell you why that might have happened.
>>>>>>>> 
>>>>>>>> Maruan
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> Am 23.03.2015 um 15:03 schrieb a7med shre3y <
>> a7med.shre3y@gmail.com
>>>>> :
>>>>>>>>> 
>>>>>>>>> Hi all,
>>>>>>>>> 
>>>>>>>>> Currently I am facing a strange problem removing text from the some
>>>>>> PDFs.
>>>>>>>>> My program is able to find the text and "remove it" by calling the
>>>>>>>>> COSString.reset() method.
>>>>>>>>> The problem is, when I open the output PDF file, I still see the
>> text
>>>>>> but
>>>>>>>>> not selectable (I mean when I try to highlight it with the mouse to
>>>>>> copy
>>>>>>>>> it, it's not selectable!). When print the content (tokens) of the
>>>>>> output
>>>>>>>>> file, I DO NOT find the text at all!!
>>>>>>>>> 
>>>>>>>>> I am currently stuck in the PDF specifications 1.5 and really
>> running
>>>>>> out
>>>>>>>>> of time.
>>>>>>>>> 
>>>>>>>>> I'd so much appreciate any help or any idea on what's going on.
>>>>>>>>> 
>>>>>>>>> Notes:
>>>>>>>>> 1. I use use PDFBox 1.7.1
>>>>>>>>> 2. This problem does not occur with all PDFs, only some PDFs cause
>>>>>> this
>>>>>>>>> problem.
>>>>>>>>> 
>>>>>>>>> Thank you very much.
>>>>>>>>> a7mad
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>> ---------------------------------------------------------------------
>>>>>>>> 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
>>>>>> 
>>>> 
>>>> 
>>>> ---------------------------------------------------------------------
>>>> 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
>> 
>> 


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


Re: Text removal

Posted by a7med shre3y <a7...@gmail.com>.
Hi,

In fact PDFBox call the operation of transforming "7R %H $SSURYHG" to "To
Be Approved" as "encoding". Anyway, either it's encoding or decoding, I
thought it's easier to transform "7R %H $SSURYHG" to "To Be Approved" and
not the opposite (or at least I don't know). I spent some quite long time
trying to find out how to find the character codes for the glyphs in the
currently used font, then I found that it's not an easy task. By the way,
if you know how to do that, I'd so much appreciate it because I need that
for replacing text with another text and for that the new text must be
encoded the same way as the original!

Back to the text removal, I am able to find the text and also remove it by
calling reset, as I mentioned in my first email, when I print the output
content I don't find the text anymore but I still see it when I open the
file. My first assumption was that there must be some other way to remove
the text other than the way I am using, and that's what you've actually
confirmed in your reply, so could you please tell me what still missing?

Thanks and regards,
a7mad

On Tue, Mar 24, 2015 at 9:22 AM, Maruan Sahyoun <sa...@fileaffairs.de>
wrote:

> Hi,
>
> > Am 24.03.2015 um 08:14 schrieb a7med shre3y <a7...@gmail.com>:
> >
> > Hi,
> >
> > Here's how I do it:
> >
> > 1. I use the following method to encode the text:
> >
> > String encode(String text, PDFont font) throws Exception {
> >        StringBuilder builder = new StringBuilder();
> >        byte[] stringBytes = text.getBytes();
> >        int codeLength = 1;
> >        for(int i = 0; i < stringBytes.length; i += codeLength){
> >                String c = font.encode(stringBytes, i, codeLength);
> >                if(c == null && (i + 1 < stringBytes.length)){
> >                    codeLength++;
> >                    c = font.encode(stringBytes, i, codeLength);
> >                }
> >                builder.append(c);
> >            }
> >        return builder.toString();
> >    }
> >
> > 2. Iterating through the tokens, I find the text either it's a COSString
> > ("Tj" operator) or a COSArray ("TJ" operator) then check if it's the text
> > I'm looking for to remove as following:
> >
> > if (op.getOperation().equals("Tj")) {
> >                            COSString previous = (COSString) tokens.get(j
> -
> > 1);
> >                            String string = previous.getString();
> >                            String encodedString = encode(string, font);
>
> that string is already encoded. So you'd need to encode "To Be Approved"
> and compare if that matches the string you are reading from the PDF.
>
> >                            if(encodedString.contains("To Be Approved")){
> >                                previous.reset();
> >                            }
> >                        } else if (op.getOperation().equals("TJ")) {
> >                            COSArray previous = (COSArray) tokens.get(j -
> > 1);
> >                            StringBuilder stringBuilder = new
> > StringBuilder();
> >                            for (int k = 0; k < previous.size(); k++) {
> >                                Object arrElement = previous.getObject(k);
> >                                if (arrElement instanceof COSString) {
> >                                    COSString cosString = (COSString)
> > arrElement;
> >
> > stringBuilder.append(cosString.getString());
> >                                }
> >                            }
> >                            String string = stringBuilder.toString();
> >                            String encodedString = encode(string, font);
> >                            if(encodedString.contains("To Be Approved")){
> >                                previous.clear();
> >                            }
> >                        }
> >
> > Note:
> > In case of COSArray, I first iterate through the whole array to get the
> > whole string before encoding and comparison and this works.
> >
> > Best Regards,
> > a7mad
> >
> >
> >
> > On Mon, Mar 23, 2015 at 10:48 PM, Maruan Sahyoun <sahyoun@fileaffairs.de
> >
> > wrote:
> >
> >> Hi,
> >>
> >> your text is encoded so within the show text operator Tj the string is
> >>
> >> 7R %H $SSURYHG
> >>
> >> You wrote that you encode your string to find it - what do you get?
> >>
> >> BR
> >> Maruan
> >>
> >>
> >>
> >>> Am 23.03.2015 um 22:01 schrieb a7med shre3y <a7...@gmail.com>:
> >>>
> >>> Hi Maruan,
> >>>
> >>> Here's a link from where you can download the PDF.
> >>>
> >>>
> >>
> https://drive.google.com/file/d/0B5Kxacm1mej-bm82NzNvUXFPSmMtUjc0ZFVjVVlrODZnRzdn/view?usp=sharing
> >>>
> >>> Kind Regards,
> >>> a7mad
> >>>
> >>> On Mon, Mar 23, 2015 at 8:57 PM, Maruan Sahyoun <
> sahyoun@fileaffairs.de>
> >>> wrote:
> >>>
> >>>> Hi,
> >>>>
> >>>> you need to upload it to a public location as the mailing list doesn't
> >>>> support attachments.
> >>>>
> >>>> BR
> >>>> Maruan
> >>>>
> >>>>> Am 23.03.2015 um 19:18 schrieb a7med shre3y <a7med.shre3y@gmail.com
> >:
> >>>>>
> >>>>> Dear Maruan,
> >>>>>
> >>>>> Thank you very much for the information. Please find herewith
> attached
> >>>> the PDF to reproduce the problem.
> >>>>> The text to remove is: "To Be Approved". The text has a multi-byte
> >>>> encoding, so I call first to encode it in order to find it then remove
> >> it.
> >>>>>
> >>>>> Best Regards,
> >>>>> a7mad
> >>>>>
> >>>>>> On Mon, Mar 23, 2015 at 4:13 PM, Maruan Sahyoun <
> >> sahyoun@fileaffairs.de>
> >>>> wrote:
> >>>>>> Dear a7mad,
> >>>>>>
> >>>>>> removing text from a PDF is not an easy task as
> >>>>>> - text which might visually appear as a single item might consistent
> >> of
> >>>> individual parts within the PDF itself e.g. each character or groups
> of
> >>>> characters are place individually in different COSStrings
> >>>>>> - text might be drawn using graphics commands
> >>>>>> - text can appear within different parts of the PDF (e.g. the text
> >>>> might be content of a form field AND the annotation representing the
> >> form
> >>>> field visually)
> >>>>>> - you need to look up the encoding information to get form the
> >>>> characters in the PDF "string" to the ones you are looking for
> >>>>>> ….
> >>>>>>
> >>>>>> If you can post a specific PDF to a public location and describe in
> >>>> detail which string should have been replaced which hasn't I will be
> >> able
> >>>> to tell you why that might have happened.
> >>>>>>
> >>>>>> Maruan
> >>>>>>
> >>>>>>
> >>>>>>> Am 23.03.2015 um 15:03 schrieb a7med shre3y <
> a7med.shre3y@gmail.com
> >>> :
> >>>>>>>
> >>>>>>> Hi all,
> >>>>>>>
> >>>>>>> Currently I am facing a strange problem removing text from the some
> >>>> PDFs.
> >>>>>>> My program is able to find the text and "remove it" by calling the
> >>>>>>> COSString.reset() method.
> >>>>>>> The problem is, when I open the output PDF file, I still see the
> text
> >>>> but
> >>>>>>> not selectable (I mean when I try to highlight it with the mouse to
> >>>> copy
> >>>>>>> it, it's not selectable!). When print the content (tokens) of the
> >>>> output
> >>>>>>> file, I DO NOT find the text at all!!
> >>>>>>>
> >>>>>>> I am currently stuck in the PDF specifications 1.5 and really
> running
> >>>> out
> >>>>>>> of time.
> >>>>>>>
> >>>>>>> I'd so much appreciate any help or any idea on what's going on.
> >>>>>>>
> >>>>>>> Notes:
> >>>>>>> 1. I use use PDFBox 1.7.1
> >>>>>>> 2. This problem does not occur with all PDFs, only some PDFs cause
> >>>> this
> >>>>>>> problem.
> >>>>>>>
> >>>>>>> Thank you very much.
> >>>>>>> a7mad
> >>>>>>
> >>>>>>
> >>>>>>
> ---------------------------------------------------------------------
> >>>>>> 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
> >>>>
> >>
> >>
> >> ---------------------------------------------------------------------
> >> 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
>
>

Re: Text removal

Posted by Maruan Sahyoun <sa...@fileaffairs.de>.
Hi,

> Am 24.03.2015 um 08:14 schrieb a7med shre3y <a7...@gmail.com>:
> 
> Hi,
> 
> Here's how I do it:
> 
> 1. I use the following method to encode the text:
> 
> String encode(String text, PDFont font) throws Exception {
>        StringBuilder builder = new StringBuilder();
>        byte[] stringBytes = text.getBytes();
>        int codeLength = 1;
>        for(int i = 0; i < stringBytes.length; i += codeLength){
>                String c = font.encode(stringBytes, i, codeLength);
>                if(c == null && (i + 1 < stringBytes.length)){
>                    codeLength++;
>                    c = font.encode(stringBytes, i, codeLength);
>                }
>                builder.append(c);
>            }
>        return builder.toString();
>    }
> 
> 2. Iterating through the tokens, I find the text either it's a COSString
> ("Tj" operator) or a COSArray ("TJ" operator) then check if it's the text
> I'm looking for to remove as following:
> 
> if (op.getOperation().equals("Tj")) {
>                            COSString previous = (COSString) tokens.get(j -
> 1);
>                            String string = previous.getString();
>                            String encodedString = encode(string, font);

that string is already encoded. So you'd need to encode "To Be Approved" and compare if that matches the string you are reading from the PDF.

>                            if(encodedString.contains("To Be Approved")){
>                                previous.reset();
>                            }
>                        } else if (op.getOperation().equals("TJ")) {
>                            COSArray previous = (COSArray) tokens.get(j -
> 1);
>                            StringBuilder stringBuilder = new
> StringBuilder();
>                            for (int k = 0; k < previous.size(); k++) {
>                                Object arrElement = previous.getObject(k);
>                                if (arrElement instanceof COSString) {
>                                    COSString cosString = (COSString)
> arrElement;
> 
> stringBuilder.append(cosString.getString());
>                                }
>                            }
>                            String string = stringBuilder.toString();
>                            String encodedString = encode(string, font);
>                            if(encodedString.contains("To Be Approved")){
>                                previous.clear();
>                            }
>                        }
> 
> Note:
> In case of COSArray, I first iterate through the whole array to get the
> whole string before encoding and comparison and this works.
> 
> Best Regards,
> a7mad
> 
> 
> 
> On Mon, Mar 23, 2015 at 10:48 PM, Maruan Sahyoun <sa...@fileaffairs.de>
> wrote:
> 
>> Hi,
>> 
>> your text is encoded so within the show text operator Tj the string is
>> 
>> 7R %H $SSURYHG
>> 
>> You wrote that you encode your string to find it - what do you get?
>> 
>> BR
>> Maruan
>> 
>> 
>> 
>>> Am 23.03.2015 um 22:01 schrieb a7med shre3y <a7...@gmail.com>:
>>> 
>>> Hi Maruan,
>>> 
>>> Here's a link from where you can download the PDF.
>>> 
>>> 
>> https://drive.google.com/file/d/0B5Kxacm1mej-bm82NzNvUXFPSmMtUjc0ZFVjVVlrODZnRzdn/view?usp=sharing
>>> 
>>> Kind Regards,
>>> a7mad
>>> 
>>> On Mon, Mar 23, 2015 at 8:57 PM, Maruan Sahyoun <sa...@fileaffairs.de>
>>> wrote:
>>> 
>>>> Hi,
>>>> 
>>>> you need to upload it to a public location as the mailing list doesn't
>>>> support attachments.
>>>> 
>>>> BR
>>>> Maruan
>>>> 
>>>>> Am 23.03.2015 um 19:18 schrieb a7med shre3y <a7...@gmail.com>:
>>>>> 
>>>>> Dear Maruan,
>>>>> 
>>>>> Thank you very much for the information. Please find herewith attached
>>>> the PDF to reproduce the problem.
>>>>> The text to remove is: "To Be Approved". The text has a multi-byte
>>>> encoding, so I call first to encode it in order to find it then remove
>> it.
>>>>> 
>>>>> Best Regards,
>>>>> a7mad
>>>>> 
>>>>>> On Mon, Mar 23, 2015 at 4:13 PM, Maruan Sahyoun <
>> sahyoun@fileaffairs.de>
>>>> wrote:
>>>>>> Dear a7mad,
>>>>>> 
>>>>>> removing text from a PDF is not an easy task as
>>>>>> - text which might visually appear as a single item might consistent
>> of
>>>> individual parts within the PDF itself e.g. each character or groups of
>>>> characters are place individually in different COSStrings
>>>>>> - text might be drawn using graphics commands
>>>>>> - text can appear within different parts of the PDF (e.g. the text
>>>> might be content of a form field AND the annotation representing the
>> form
>>>> field visually)
>>>>>> - you need to look up the encoding information to get form the
>>>> characters in the PDF "string" to the ones you are looking for
>>>>>> ….
>>>>>> 
>>>>>> If you can post a specific PDF to a public location and describe in
>>>> detail which string should have been replaced which hasn't I will be
>> able
>>>> to tell you why that might have happened.
>>>>>> 
>>>>>> Maruan
>>>>>> 
>>>>>> 
>>>>>>> Am 23.03.2015 um 15:03 schrieb a7med shre3y <a7med.shre3y@gmail.com
>>> :
>>>>>>> 
>>>>>>> Hi all,
>>>>>>> 
>>>>>>> Currently I am facing a strange problem removing text from the some
>>>> PDFs.
>>>>>>> My program is able to find the text and "remove it" by calling the
>>>>>>> COSString.reset() method.
>>>>>>> The problem is, when I open the output PDF file, I still see the text
>>>> but
>>>>>>> not selectable (I mean when I try to highlight it with the mouse to
>>>> copy
>>>>>>> it, it's not selectable!). When print the content (tokens) of the
>>>> output
>>>>>>> file, I DO NOT find the text at all!!
>>>>>>> 
>>>>>>> I am currently stuck in the PDF specifications 1.5 and really running
>>>> out
>>>>>>> of time.
>>>>>>> 
>>>>>>> I'd so much appreciate any help or any idea on what's going on.
>>>>>>> 
>>>>>>> Notes:
>>>>>>> 1. I use use PDFBox 1.7.1
>>>>>>> 2. This problem does not occur with all PDFs, only some PDFs cause
>>>> this
>>>>>>> problem.
>>>>>>> 
>>>>>>> Thank you very much.
>>>>>>> a7mad
>>>>>> 
>>>>>> 
>>>>>> ---------------------------------------------------------------------
>>>>>> 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
>>>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> 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


Re: Text removal

Posted by a7med shre3y <a7...@gmail.com>.
Hi,

Here's how I do it:

1. I use the following method to encode the text:

String encode(String text, PDFont font) throws Exception {
        StringBuilder builder = new StringBuilder();
        byte[] stringBytes = text.getBytes();
        int codeLength = 1;
        for(int i = 0; i < stringBytes.length; i += codeLength){
                String c = font.encode(stringBytes, i, codeLength);
                if(c == null && (i + 1 < stringBytes.length)){
                    codeLength++;
                    c = font.encode(stringBytes, i, codeLength);
                }
                builder.append(c);
            }
        return builder.toString();
    }

2. Iterating through the tokens, I find the text either it's a COSString
("Tj" operator) or a COSArray ("TJ" operator) then check if it's the text
I'm looking for to remove as following:

if (op.getOperation().equals("Tj")) {
                            COSString previous = (COSString) tokens.get(j -
1);
                            String string = previous.getString();
                            String encodedString = encode(string, font);
                            if(encodedString.contains("To Be Approved")){
                                previous.reset();
                            }
                        } else if (op.getOperation().equals("TJ")) {
                            COSArray previous = (COSArray) tokens.get(j -
1);
                            StringBuilder stringBuilder = new
StringBuilder();
                            for (int k = 0; k < previous.size(); k++) {
                                Object arrElement = previous.getObject(k);
                                if (arrElement instanceof COSString) {
                                    COSString cosString = (COSString)
arrElement;

stringBuilder.append(cosString.getString());
                                }
                            }
                            String string = stringBuilder.toString();
                            String encodedString = encode(string, font);
                            if(encodedString.contains("To Be Approved")){
                                previous.clear();
                            }
                        }

Note:
In case of COSArray, I first iterate through the whole array to get the
whole string before encoding and comparison and this works.

Best Regards,
a7mad



On Mon, Mar 23, 2015 at 10:48 PM, Maruan Sahyoun <sa...@fileaffairs.de>
wrote:

> Hi,
>
> your text is encoded so within the show text operator Tj the string is
>
> 7R %H $SSURYHG
>
> You wrote that you encode your string to find it - what do you get?
>
> BR
> Maruan
>
>
>
> > Am 23.03.2015 um 22:01 schrieb a7med shre3y <a7...@gmail.com>:
> >
> > Hi Maruan,
> >
> > Here's a link from where you can download the PDF.
> >
> >
> https://drive.google.com/file/d/0B5Kxacm1mej-bm82NzNvUXFPSmMtUjc0ZFVjVVlrODZnRzdn/view?usp=sharing
> >
> > Kind Regards,
> > a7mad
> >
> > On Mon, Mar 23, 2015 at 8:57 PM, Maruan Sahyoun <sa...@fileaffairs.de>
> > wrote:
> >
> >> Hi,
> >>
> >> you need to upload it to a public location as the mailing list doesn't
> >> support attachments.
> >>
> >> BR
> >> Maruan
> >>
> >>> Am 23.03.2015 um 19:18 schrieb a7med shre3y <a7...@gmail.com>:
> >>>
> >>> Dear Maruan,
> >>>
> >>> Thank you very much for the information. Please find herewith attached
> >> the PDF to reproduce the problem.
> >>> The text to remove is: "To Be Approved". The text has a multi-byte
> >> encoding, so I call first to encode it in order to find it then remove
> it.
> >>>
> >>> Best Regards,
> >>> a7mad
> >>>
> >>>> On Mon, Mar 23, 2015 at 4:13 PM, Maruan Sahyoun <
> sahyoun@fileaffairs.de>
> >> wrote:
> >>>> Dear a7mad,
> >>>>
> >>>> removing text from a PDF is not an easy task as
> >>>> - text which might visually appear as a single item might consistent
> of
> >> individual parts within the PDF itself e.g. each character or groups of
> >> characters are place individually in different COSStrings
> >>>> - text might be drawn using graphics commands
> >>>> - text can appear within different parts of the PDF (e.g. the text
> >> might be content of a form field AND the annotation representing the
> form
> >> field visually)
> >>>> - you need to look up the encoding information to get form the
> >> characters in the PDF "string" to the ones you are looking for
> >>>> ….
> >>>>
> >>>> If you can post a specific PDF to a public location and describe in
> >> detail which string should have been replaced which hasn't I will be
> able
> >> to tell you why that might have happened.
> >>>>
> >>>> Maruan
> >>>>
> >>>>
> >>>>> Am 23.03.2015 um 15:03 schrieb a7med shre3y <a7med.shre3y@gmail.com
> >:
> >>>>>
> >>>>> Hi all,
> >>>>>
> >>>>> Currently I am facing a strange problem removing text from the some
> >> PDFs.
> >>>>> My program is able to find the text and "remove it" by calling the
> >>>>> COSString.reset() method.
> >>>>> The problem is, when I open the output PDF file, I still see the text
> >> but
> >>>>> not selectable (I mean when I try to highlight it with the mouse to
> >> copy
> >>>>> it, it's not selectable!). When print the content (tokens) of the
> >> output
> >>>>> file, I DO NOT find the text at all!!
> >>>>>
> >>>>> I am currently stuck in the PDF specifications 1.5 and really running
> >> out
> >>>>> of time.
> >>>>>
> >>>>> I'd so much appreciate any help or any idea on what's going on.
> >>>>>
> >>>>> Notes:
> >>>>> 1. I use use PDFBox 1.7.1
> >>>>> 2. This problem does not occur with all PDFs, only some PDFs cause
> >> this
> >>>>> problem.
> >>>>>
> >>>>> Thank you very much.
> >>>>> a7mad
> >>>>
> >>>>
> >>>> ---------------------------------------------------------------------
> >>>> 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
> >>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
> For additional commands, e-mail: users-help@pdfbox.apache.org
>
>

Re: Text removal

Posted by Maruan Sahyoun <sa...@fileaffairs.de>.
Hi,

your text is encoded so within the show text operator Tj the string is

7R %H $SSURYHG

You wrote that you encode your string to find it - what do you get?

BR
Maruan



> Am 23.03.2015 um 22:01 schrieb a7med shre3y <a7...@gmail.com>:
> 
> Hi Maruan,
> 
> Here's a link from where you can download the PDF.
> 
> https://drive.google.com/file/d/0B5Kxacm1mej-bm82NzNvUXFPSmMtUjc0ZFVjVVlrODZnRzdn/view?usp=sharing
> 
> Kind Regards,
> a7mad
> 
> On Mon, Mar 23, 2015 at 8:57 PM, Maruan Sahyoun <sa...@fileaffairs.de>
> wrote:
> 
>> Hi,
>> 
>> you need to upload it to a public location as the mailing list doesn't
>> support attachments.
>> 
>> BR
>> Maruan
>> 
>>> Am 23.03.2015 um 19:18 schrieb a7med shre3y <a7...@gmail.com>:
>>> 
>>> Dear Maruan,
>>> 
>>> Thank you very much for the information. Please find herewith attached
>> the PDF to reproduce the problem.
>>> The text to remove is: "To Be Approved". The text has a multi-byte
>> encoding, so I call first to encode it in order to find it then remove it.
>>> 
>>> Best Regards,
>>> a7mad
>>> 
>>>> On Mon, Mar 23, 2015 at 4:13 PM, Maruan Sahyoun <sa...@fileaffairs.de>
>> wrote:
>>>> Dear a7mad,
>>>> 
>>>> removing text from a PDF is not an easy task as
>>>> - text which might visually appear as a single item might consistent of
>> individual parts within the PDF itself e.g. each character or groups of
>> characters are place individually in different COSStrings
>>>> - text might be drawn using graphics commands
>>>> - text can appear within different parts of the PDF (e.g. the text
>> might be content of a form field AND the annotation representing the form
>> field visually)
>>>> - you need to look up the encoding information to get form the
>> characters in the PDF "string" to the ones you are looking for
>>>> ….
>>>> 
>>>> If you can post a specific PDF to a public location and describe in
>> detail which string should have been replaced which hasn't I will be able
>> to tell you why that might have happened.
>>>> 
>>>> Maruan
>>>> 
>>>> 
>>>>> Am 23.03.2015 um 15:03 schrieb a7med shre3y <a7...@gmail.com>:
>>>>> 
>>>>> Hi all,
>>>>> 
>>>>> Currently I am facing a strange problem removing text from the some
>> PDFs.
>>>>> My program is able to find the text and "remove it" by calling the
>>>>> COSString.reset() method.
>>>>> The problem is, when I open the output PDF file, I still see the text
>> but
>>>>> not selectable (I mean when I try to highlight it with the mouse to
>> copy
>>>>> it, it's not selectable!). When print the content (tokens) of the
>> output
>>>>> file, I DO NOT find the text at all!!
>>>>> 
>>>>> I am currently stuck in the PDF specifications 1.5 and really running
>> out
>>>>> of time.
>>>>> 
>>>>> I'd so much appreciate any help or any idea on what's going on.
>>>>> 
>>>>> Notes:
>>>>> 1. I use use PDFBox 1.7.1
>>>>> 2. This problem does not occur with all PDFs, only some PDFs cause
>> this
>>>>> problem.
>>>>> 
>>>>> Thank you very much.
>>>>> a7mad
>>>> 
>>>> 
>>>> ---------------------------------------------------------------------
>>>> 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
>> 


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


Re: Text removal

Posted by a7med shre3y <a7...@gmail.com>.
Hi Maruan,

Here's a link from where you can download the PDF.

https://drive.google.com/file/d/0B5Kxacm1mej-bm82NzNvUXFPSmMtUjc0ZFVjVVlrODZnRzdn/view?usp=sharing

Kind Regards,
a7mad

On Mon, Mar 23, 2015 at 8:57 PM, Maruan Sahyoun <sa...@fileaffairs.de>
wrote:

> Hi,
>
> you need to upload it to a public location as the mailing list doesn't
> support attachments.
>
> BR
> Maruan
>
> > Am 23.03.2015 um 19:18 schrieb a7med shre3y <a7...@gmail.com>:
> >
> > Dear Maruan,
> >
> > Thank you very much for the information. Please find herewith attached
> the PDF to reproduce the problem.
> > The text to remove is: "To Be Approved". The text has a multi-byte
> encoding, so I call first to encode it in order to find it then remove it.
> >
> > Best Regards,
> > a7mad
> >
> >> On Mon, Mar 23, 2015 at 4:13 PM, Maruan Sahyoun <sa...@fileaffairs.de>
> wrote:
> >> Dear a7mad,
> >>
> >> removing text from a PDF is not an easy task as
> >> - text which might visually appear as a single item might consistent of
> individual parts within the PDF itself e.g. each character or groups of
> characters are place individually in different COSStrings
> >> - text might be drawn using graphics commands
> >> - text can appear within different parts of the PDF (e.g. the text
> might be content of a form field AND the annotation representing the form
> field visually)
> >> - you need to look up the encoding information to get form the
> characters in the PDF "string" to the ones you are looking for
> >> ….
> >>
> >> If you can post a specific PDF to a public location and describe in
> detail which string should have been replaced which hasn't I will be able
> to tell you why that might have happened.
> >>
> >> Maruan
> >>
> >>
> >> > Am 23.03.2015 um 15:03 schrieb a7med shre3y <a7...@gmail.com>:
> >> >
> >> > Hi all,
> >> >
> >> > Currently I am facing a strange problem removing text from the some
> PDFs.
> >> > My program is able to find the text and "remove it" by calling the
> >> > COSString.reset() method.
> >> > The problem is, when I open the output PDF file, I still see the text
> but
> >> > not selectable (I mean when I try to highlight it with the mouse to
> copy
> >> > it, it's not selectable!). When print the content (tokens) of the
> output
> >> > file, I DO NOT find the text at all!!
> >> >
> >> > I am currently stuck in the PDF specifications 1.5 and really running
> out
> >> > of time.
> >> >
> >> > I'd so much appreciate any help or any idea on what's going on.
> >> >
> >> > Notes:
> >> > 1. I use use PDFBox 1.7.1
> >> > 2. This problem does not occur with all PDFs, only some PDFs cause
> this
> >> > problem.
> >> >
> >> > Thank you very much.
> >> > a7mad
> >>
> >>
> >> ---------------------------------------------------------------------
> >> 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
>

Re: Text removal

Posted by Maruan Sahyoun <sa...@fileaffairs.de>.
Hi,

you need to upload it to a public location as the mailing list doesn't support attachments.

BR
Maruan 

> Am 23.03.2015 um 19:18 schrieb a7med shre3y <a7...@gmail.com>:
> 
> Dear Maruan,
> 
> Thank you very much for the information. Please find herewith attached the PDF to reproduce the problem.
> The text to remove is: "To Be Approved". The text has a multi-byte encoding, so I call first to encode it in order to find it then remove it.
> 
> Best Regards,
> a7mad
> 
>> On Mon, Mar 23, 2015 at 4:13 PM, Maruan Sahyoun <sa...@fileaffairs.de> wrote:
>> Dear a7mad,
>> 
>> removing text from a PDF is not an easy task as
>> - text which might visually appear as a single item might consistent of individual parts within the PDF itself e.g. each character or groups of characters are place individually in different COSStrings
>> - text might be drawn using graphics commands
>> - text can appear within different parts of the PDF (e.g. the text might be content of a form field AND the annotation representing the form field visually)
>> - you need to look up the encoding information to get form the characters in the PDF "string" to the ones you are looking for
>> ….
>> 
>> If you can post a specific PDF to a public location and describe in detail which string should have been replaced which hasn't I will be able to tell you why that might have happened.
>> 
>> Maruan
>> 
>> 
>> > Am 23.03.2015 um 15:03 schrieb a7med shre3y <a7...@gmail.com>:
>> >
>> > Hi all,
>> >
>> > Currently I am facing a strange problem removing text from the some PDFs.
>> > My program is able to find the text and "remove it" by calling the
>> > COSString.reset() method.
>> > The problem is, when I open the output PDF file, I still see the text but
>> > not selectable (I mean when I try to highlight it with the mouse to copy
>> > it, it's not selectable!). When print the content (tokens) of the output
>> > file, I DO NOT find the text at all!!
>> >
>> > I am currently stuck in the PDF specifications 1.5 and really running out
>> > of time.
>> >
>> > I'd so much appreciate any help or any idea on what's going on.
>> >
>> > Notes:
>> > 1. I use use PDFBox 1.7.1
>> > 2. This problem does not occur with all PDFs, only some PDFs cause this
>> > problem.
>> >
>> > Thank you very much.
>> > a7mad
>> 
>> 
>> ---------------------------------------------------------------------
>> 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

Re: Text removal

Posted by a7med shre3y <a7...@gmail.com>.
Dear Maruan,

Thank you very much for the information. Please find herewith attached the
PDF to reproduce the problem.
The text to remove is: "To Be Approved". The text has a multi-byte
encoding, so I call first to encode it in order to find it then remove it.

Best Regards,
a7mad

On Mon, Mar 23, 2015 at 4:13 PM, Maruan Sahyoun <sa...@fileaffairs.de>
wrote:

> Dear a7mad,
>
> removing text from a PDF is not an easy task as
> - text which might visually appear as a single item might consistent of
> individual parts within the PDF itself e.g. each character or groups of
> characters are place individually in different COSStrings
> - text might be drawn using graphics commands
> - text can appear within different parts of the PDF (e.g. the text might
> be content of a form field AND the annotation representing the form field
> visually)
> - you need to look up the encoding information to get form the characters
> in the PDF "string" to the ones you are looking for
> ….
>
> If you can post a specific PDF to a public location and describe in detail
> which string should have been replaced which hasn't I will be able to tell
> you why that might have happened.
>
> Maruan
>
>
> > Am 23.03.2015 um 15:03 schrieb a7med shre3y <a7...@gmail.com>:
> >
> > Hi all,
> >
> > Currently I am facing a strange problem removing text from the some PDFs.
> > My program is able to find the text and "remove it" by calling the
> > COSString.reset() method.
> > The problem is, when I open the output PDF file, I still see the text but
> > not selectable (I mean when I try to highlight it with the mouse to copy
> > it, it's not selectable!). When print the content (tokens) of the output
> > file, I DO NOT find the text at all!!
> >
> > I am currently stuck in the PDF specifications 1.5 and really running out
> > of time.
> >
> > I'd so much appreciate any help or any idea on what's going on.
> >
> > Notes:
> > 1. I use use PDFBox 1.7.1
> > 2. This problem does not occur with all PDFs, only some PDFs cause this
> > problem.
> >
> > Thank you very much.
> > a7mad
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
> For additional commands, e-mail: users-help@pdfbox.apache.org
>
>

Re: Text removal

Posted by Maruan Sahyoun <sa...@fileaffairs.de>.
Dear a7mad,

removing text from a PDF is not an easy task as
- text which might visually appear as a single item might consistent of individual parts within the PDF itself e.g. each character or groups of characters are place individually in different COSStrings
- text might be drawn using graphics commands
- text can appear within different parts of the PDF (e.g. the text might be content of a form field AND the annotation representing the form field visually)
- you need to look up the encoding information to get form the characters in the PDF "string" to the ones you are looking for
….

If you can post a specific PDF to a public location and describe in detail which string should have been replaced which hasn't I will be able to tell you why that might have happened.

Maruan


> Am 23.03.2015 um 15:03 schrieb a7med shre3y <a7...@gmail.com>:
> 
> Hi all,
> 
> Currently I am facing a strange problem removing text from the some PDFs.
> My program is able to find the text and "remove it" by calling the
> COSString.reset() method.
> The problem is, when I open the output PDF file, I still see the text but
> not selectable (I mean when I try to highlight it with the mouse to copy
> it, it's not selectable!). When print the content (tokens) of the output
> file, I DO NOT find the text at all!!
> 
> I am currently stuck in the PDF specifications 1.5 and really running out
> of time.
> 
> I'd so much appreciate any help or any idea on what's going on.
> 
> Notes:
> 1. I use use PDFBox 1.7.1
> 2. This problem does not occur with all PDFs, only some PDFs cause this
> problem.
> 
> Thank you very much.
> a7mad


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