Thanks a lot for the explanation and for the transformation scheme:

       "PDF in a String -> decode base64 -> PDF in a byte[] -> use it
in PdfReader"

But do you mean that the PDF they give to me, the PDF with the content
(I get it with the always used System.out.println method)

%PDF-1.1
1 0 obj
<<
/Creator (Developer 2000)
/CreatorDate (Thu Nov 15 08:42:50 AM 2007)
/Author (Oracle Reports)
/Producer (Oracle PDF driver)
/Title (52985491.pdf)
...

is already base64 encoded? I think it is not encoded, because when I
try to decode it I recieve the error "Length of Base64 encoded input
string is not a multiple of 4.". So I thing it is an usual String, not
an encoded String. And that prevents me from reaching the "PDF in a
byte[]" stage form your good "PDF in a String -> decode base64 -> PDF
in a byte[] -> use it in PdfReader" step-by-step scheme.

Feel sorry for been asking so many questions, Paulo, you are being
very helpful to me...


2007/11/15, Paulo Soares <[EMAIL PROTECTED]>:
> You have explained the problem properly but you didn't understand the answer. 
> If you must have a pdf inside a String you MUST code it in some way, for 
> example base64, to preserve all the bytes. Think of PDF as a JPEG image and 
> the way to put a JPEG image inside a String. Just because PDF looks like text 
> in notepad it isn't text.
> The process is (for example):
>
> PDF in a byte[] -> convert to base64 -> PDF in String
> PDF in a String -> decode base64 -> PDF in a byte[] -> use it in PdfReader
>
> Paulo
>
> > -----Original Message-----
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED] On
> > Behalf Of Adriano Leite Ribero
> > Sent: Thursday, November 15, 2007 12:11 PM
> > To: Post all your questions about iText here
> > Subject: Re: [iText-questions] Watermark on a pdf wich is
> > embedded in abrowser
> >
> > I think I have not explained the problem properly.
> >
> > The String I have, let´s call it inputString, has the
> > following content:
> >
> >              %PDF-1.2
> >              %âãÏÓ
> >              3 0 obj
> >              <<
> >              /Linearized 1
> >              ... (etc)
> >
> > (looks similar to the content you see when opening a PDF with notepad,
> > ultraedit, notepad++, etc)
> >
> > If I construct a PdfReader the following way:
> >
> >              PdfReader reader = new PdfReader(inputString.getBytes());
> >
> > it works fine, it opens it, seems no extra transformation is required.
> > Then I manipulate the file (add the watermark as I have mentioned
> > before) and write the resulting PDF to the browser, but it looks
> > exactly like the original one. But the content of the original and
> > final PDF documents are a little different (the size of the
> > manipulated document is bigger).
> >
> > It seems that the watermark is somehow added, and the document
> > structure is not damaged (otherwise, it wouldn´t load), but something
> > is wrong. And it has to be related to the transformation between the
> > inputString and its corresponding byte array.
> >
> > I´ve tryed to encode the inputString to a Base64 char array, but it is
> > not the solution. I think this because an exception is throwed when
> > trying to construct the PdfReader object with the encoded String,
> > thing that did't happen if I don´t encode the String:
> >
> > 07/11/15 12:33:53 java.io.IOException: PDF header signature not found.
> > 07/11/15 12:33:53 at com.lowagie.text.pdf.PRTokeniser.checkPdfHeader
> > 07/11/15 12:33:53 at com.lowagie.text.pdf.PdfReader.readPdf
> > 07/11/15 12:33:53 at com.lowagie.text.pdf.PdfReader.<init>
> >
> > So, the steps should be (and in my code are, in fact):
> >
> > - transform the inputString in a byte[] to construct the PdfReader
> > - construct the PdfReader
> > - add the watermark (works ok starting from a PdfReader)
> > - read the resulting ByteArrayOutputStream (from the PdfStamper
> > associated to the PdfReader) and transforming it back to a String
> > (with toString)
> >
> > What do I miss?
> >
> > Excuse me for so many questions, I think it must be a detail (because
> > I´ve done the same with pdf files).
> > Adriano.
> >
> > 2007/11/15, Adriano Leite Ribero <[EMAIL PROTECTED]>:
> > > Do you mean I have to encode my string (having the pdf content
> > > "%PDF-1.2......") as a base64 char[] and construct the PdfReader
> > > object passing that char[] as a parameter? (I have to check
> > it, but I
> > > think PdfReader(char[]) wasn`t a valid constructor...).
> > >
> > > Again, lot of thanks for your time,
> > > Adriano.
> > >
> > > 2007/11/15, Paulo Soares <[EMAIL PROTECTED]>:
> > > > The problem is that PDF are binary. If you must pass it
> > as a string encoded it first as base64 and decode it before
> > delivering it to PdfReader.
> > > >
> > > > Paulo
> > > >
> > > > > -----Original Message-----
> > > > > From: [EMAIL PROTECTED]
> > > > > [mailto:[EMAIL PROTECTED] On
> > > > > Behalf Of Adriano Leite Ribero
> > > > > Sent: Thursday, November 15, 2007 8:47 AM
> > > > > To: itext-questions@lists.sourceforge.net
> > > > > Subject: [iText-questions] Watermark on a pdf wich is
> > > > > embedded in a browser
> > > > >
> > > > > Hi,
> > > > >
> > > > > I am trying to add some watermark to a pdf document.
> > I've followed
> > > > > correctly the example of the file
> > "AddWatermarkPageNumbers.java" from
> > > > >
> > "http://itextdocs.lowagie.com/tutorial/general/copystamp/index.php";,
> > > > > and it works properly. I have made some changes to fit
> > the method in
> > > > > that java file to my purpose without problems, and
> > renamed the method
> > > > > in it as "addWaterMark", so my method preWaterMark1,
> > which calls it,
> > > > > works fine:
> > > > >
> > > > >   public static void preWaterMark1(String
> > nameOriginalFile, String
> > > > > text, String image, String nameOutputFile) {
> > > > >         try {
> > > > >             PdfReader reader = new PdfReader(nameOriginalFile);
> > > > >             PdfStamper stamp = new PdfStamper(reader, new
> > > > > FileOutputStream(nameOutputFile));
> > > > >             addWaterMark(reader, stamp, text, image);
> > > > >         } catch (Exception e){
> > > > >           System.out.println("MarcaDeAgua.preWaterMark ->
> > > > > Excepción: " + e);
> > > > >         }
> > > > >     }
> > > > >
> > > > >   private static void addWaterMark(PdfReader reader,
> > PdfStamper stamp,
> > > > > String text, String image){... /*works ok*/}
> > > > >
> > > > >
> > > > >   The problem is that i need to do the same with pdf
> > documents that
> > > > > are not files, they are just in the browser. I start
> > from a String
> > > > > having the content of a document of that kind, and,
> > following the same
> > > > > steps I've written preWaterMark2, which uses the same
> > method to write
> > > > > the watermark. But what I get is just the pdf without
> > any visible
> > > > > changes, I can´t see any watermark. But I know the
> > String having the
> > > > > content of the pdf document has changed.
> > > > >
> > > > >   public static String preWaterMark2(String pdfContent,
> > String text,
> > > > > String image){
> > > > >       ByteArrayOutputStream baos = new ByteArrayOutputStream();
> > > > >       try {
> > > > >           PdfReader reader = new
> > > > > PdfReader(pdfContent.getBytes("ISO-8859-1"));
> > > > >           PdfStamper stamp = new PdfStamper(reader, baos);
> > > > >           addWaterMark(reader, stamp, text, image);
> > > > >       } catch (Exception de){
> > > > >           de.printStackTrace();
> > > > >       }
> > > > >       String ret = "";
> > > > >       try{
> > > > >         if (baos.toString()!= null)
> > > > >           ret = baos.toString();
> > > > >       } catch (Exception e){
> > > > >         System.out.println("MarcaDeAgua.preWaterMark ->
> > Excepción: " +
> > > > > e.getMessage());
> > > > >         e.printStackTrace();
> > > > >       }
> > > > >       return ret;
> > > > > }
> > > > >
> > > > > I guess the problem could be related to the transforming process
> > > > > between the String having the PDF content and the
> > byte[] with the same
> > > > > data. I have tryed to change the "ISO-8859-1", but it
> > keeps on showing
> > > > > me a PDF without any watermark.
> > > > >
> > > > > Does anybody know what could be the problem?
> > > > >
> > > > > Lot´s of thanks,
> > > > > Adriano.
>
>
> Aviso Legal:
> Esta mensagem é destinada exclusivamente ao destinatário. Pode conter 
> informação confidencial ou legalmente protegida. A incorrecta transmissão 
> desta mensagem não significa a perca de confidencialidade. Se esta mensagem 
> for recebida por engano, por favor envie-a de volta para o remetente e 
> apague-a do seu sistema de imediato. É proibido a qualquer pessoa que não o 
> destinatário de usar, revelar ou distribuir qualquer parte desta mensagem.
>
> Disclaimer:
> This message is destined exclusively to the intended receiver. It may contain 
> confidential or legally protected information. The incorrect transmission of 
> this message does not mean the loss of its confidentiality. If this message 
> is received by mistake, please send it back to the sender and delete it from 
> your system immediately. It is forbidden to any person who is not the 
> intended receiver to use, distribute or copy any part of this message.
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Splunk Inc.
> Still grepping through log files to find problems?  Stop.
> Now Search log events and configuration files using AJAX and a browser.
> Download your FREE copy of Splunk now >> http://get.splunk.com/
> _______________________________________________
> iText-questions mailing list
> iText-questions@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/itext-questions
> Buy the iText book: http://itext.ugent.be/itext-in-action/
>

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
iText-questions mailing list
iText-questions@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/itext-questions
Buy the iText book: http://itext.ugent.be/itext-in-action/

Reply via email to