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/