So I would create and use a PdfWriter instead of a PdfStamper?
toPdf(PdfWriter writer, OutputStream os)
Thanks,
Doug
________
Carl Zeiss Meditec, Inc.
Research and Development
Senior Staff Software Engineer
5160 Hacienda Drive
Dublin, CA 94568
D o u g L i m
Phone: +1 925.557.4453
Fax: +1 925.557.4615
mailto:[EMAIL PROTECTED]
http://www.meditec.zeiss.com
[EMAIL PROTECTED] wrote on 10/17/2008 01:52:28
AM:
> Use PdfObject.toPdf() to output the object.
>
> Paulo
>
> > -----Original Message-----
> > From: Lim, Doug [mailto:[EMAIL PROTECTED]
> > Sent: Friday, October 17, 2008 2:07 AM
> > To: Post all your questions about iText here
> > Subject: Re: [iText-questions] Editing PDF Stream
> >
> >
> > I think I figured out what my problem is. After I tokenize
> > the commands I figure out which ones I want to keep and put
> > them into my new output content, but I am missing all of the
> > delimiters. I tried putting spaces between all the tokens in
> > a command and eol at the end. This still wasn't right
> > because there are other delimiters also like parenthesis, ().
> > So how do I get to the original content once I use
> > PdfContentParser to parse and identify the lines I want to
> > remove or more correctly to the original content for the
> > command lines I want to keep? Any ideas would be greatly appreciated.
> >
> > Thanks,
> > Doug
> > ________
> >
> > Carl Zeiss Meditec, Inc.
> > Research and Development
> > Senior Staff Software Engineer
> > 5160 Hacienda Drive
> > Dublin, CA 94568
> >
> > D o u g L i m
> >
> > Phone: +1 925.557.4453
> > Fax: +1 925.557.4615
> > mailto:[EMAIL PROTECTED]
> > http://www.meditec.zeiss.com
> >
> > [EMAIL PROTECTED] wrote on
> > 10/16/2008 02:07:30 PM:
> >
> > >
> > > Thanks! I think I am close to getting it working, but right now I
> > > get a message from all the viewers that there is an error in my PDF.
> > > Here is my code. Does anyone see something obvious that I
> > am missing?
> > >
> > > Thanks Doug
> > >
> > > import com.lowagie.text.DocumentException;
> > > import com.lowagie.text.pdf.PRTokeniser;
> > > import com.lowagie.text.pdf.PdfContentParser;
> > > import com.lowagie.text.pdf.PdfNumber;
> > > import com.lowagie.text.pdf.PdfObject;
> > > import com.lowagie.text.pdf.PdfReader;
> > > import com.lowagie.text.pdf.PdfStamper;
> > > import com.lowagie.text.pdf.PdfString;
> > > import com.lowagie.text.pdf.PdfWriter;
> > >
> > > import java.io.FileOutputStream;
> > > import java.io.IOException;
> > > import java.util.ArrayList;
> > > import java.util.logging.Level;
> > > import java.util.logging.Logger;
> > >
> > > /**
> > > *
> > > * @author dlim
> > > */
> > > public class ReadAndRewrite {
> > > /** buffer to build new content to output */
> > > private ArrayList<Byte> outputContent = new ArrayList<Byte>();
> > >
> > >
> > > public void addToContent(byte[] array) {
> > > for (byte element: array) {
> > > this.outputContent.add(element);
> > > }
> > > }
> > >
> > > public void addToContent(PdfObject pdfObject) {
> > > addToContent(pdfObject.getBytes());
> > > }
> > > public void addToContent(String string) {
> > > addToContent( new PdfString(string) );
> > > }
> > >
> > > public void convert() {
> > > try {
> > > PdfReader reader = new PdfReader("Glaucoma.pdf");
> > > FileOutputStream fileOutputStream = new
> > > FileOutputStream("FixedGlaucoma.pdf");
> > > PdfStamper pdfStamper = new PdfStamper(reader,
> > fileOutputStream);
> > >
> > > byte[] content = reader.getPageContent(1);
> > >
> > > // debug - show the content stream
> > > for (byte letter : content) {
> > > System.out.print((char)letter);
> > > }
> > >
> > > // TEST the unmodified content out. <= this works
> > > // reader.setPageContent(1, content);
> > > // pdfStamper.close();
> > > // System.exit(0);
> > >
> > > String cmd;
> > > boolean lastCmdET = false;
> > > PdfContentParser contentParser = new
> > > PdfContentParser(new PRTokeniser(content));
> > > ArrayList<PdfObject> tokens = new
> > ArrayList<PdfObject>();
> > > byte[] space = new PdfString(" ").getBytes();
> > > byte[] eol = new PdfString("\n").getBytes();
> > >
> > > System.out.println("=== Parsed lines ===");
> > >
> > > contentParser.parse(tokens);
> > >
> > > while ( !tokens.isEmpty() ) {
> > > for (PdfObject value: tokens) {
> > > System.out.print(value + " ");
> > > }
> > >
> > > System.out.println();
> > >
> > > cmd = tokens.get(tokens.size() - 1).toString();
> > >
> > > if (!lastCmdET || !"h".equals(cmd)) {
> > > // not an 'h' following an 'ET'
> > > for (PdfObject value: tokens) {
> > > addToContent(value);
> > > }
> > > } else {
> > > System.out.println("DEBUG: h command removed.");
> > > }
> > >
> > > if ( "ET".equals(cmd) ) {
> > > System.out.println("DEBUG: ET last set.");
> > > lastCmdET = true;
> > > } else {
> > > lastCmdET = false;
> > > }
> > >
> > > contentParser.parse(tokens);
> > > }
> > >
> > > byte[] finalContent = new
> > byte[this.outputContent.size()];
> > >
> > > for (int i = 0; i < this.outputContent.size(); ++i) {
> > > finalContent[i] = this.outputContent.get(i);
> > > }
> > >
> > > reader.setPageContent(1, finalContent);
> > > pdfStamper.close();
> > > } catch (DocumentException ex) {
> > > Logger.getLogger(ReadAndRewrite.class.getName()).
> > > log(Level.SEVERE, null, ex);
> > > } catch (IOException ex) {
> > > Logger.getLogger(ReadAndRewrite.class.getName()).
> > > log(Level.SEVERE, null, ex);
> > > }
> > > }
> > >
> > > public static void main(String args[]) {
> > > ReadAndRewrite readAndRewrite = new ReadAndRewrite();
> > > readAndRewrite.convert();
> > > }
> > > }
> > >
> > > ----- Original Message -----
> > >
> > > You'll need PdfStamper for the output, PdfReader.getPageContent(),
> > > PdfReader.setPageContent() and PdfContentParser.
> > >
> > > Paulo
> > >
> > > ----- Original Message -----
> > > From: "Lim, Doug" <[EMAIL PROTECTED]>
> > > To: <[EMAIL PROTECTED]>
> > > Sent: Saturday, October 11, 2008 1:54 AM
> > > Subject: [iText-questions] Editing PDF Stream
> > >
> > >
> > >
> > > Hi,
> > >
> > > I will apologize up-front. I am a complete newbie to iText
> > and PDF files.
> > > The problem I am trying to solve is that I have a bunch of
> > PDF files that
> > > are incorrectly formed. They can be read and viewed by
> > Adobe Reader 9, but
> > > not by our embedded PDF reader. The error in the PDF file can be
> > > characterized by an "h" (close subpath) command immediately
> > following an
> > > "ET" (end text) command in a stream. Using a commercial PDF
> > editor we can
> > > delete all of the "h" commands that immediately follow an
> > "ET" command and
> > > our reader can read the documents. The short term solution
> > I am trying to
> > > implement is to remove any "h" commands immediately
> > following the "ET"
> > > command programmatically. Is iText the right tool for
> > solving this problem?
> > > If not can anyone suggest another tool or approach to
> > solving this problem?
> > >
> > > Thanks,
> > > Doug
> > >
> > >
> > > Thanks,
> > > Doug
> > > ________
> > >
> > > Carl Zeiss Meditec, Inc.
> > > Research and Development
> > > Senior Staff Software Engineer
> > > 5160 Hacienda Drive
> > > Dublin, CA 94568
> > >
> > > D o u g L i m
> > >
> > > Phone: +1 925.557.4453
> > > Fax: +1 925.557.4615
> > > mailto:[EMAIL PROTECTED]
> > > http://www.meditec.zeiss.com
>
>
> 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 the Moblin Your Move Developer's
challenge
> Build the coolest Linux based applications with Moblin SDK & win great
prizes
> Grand prize is a trip for two to an Open Source event anywhere in the
world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> iText-questions mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/itext-questions
>
> Buy the iText book: http://www.1t3xt.com/docs/book.php
----------------------------------------
This message is intended for a particular addressee only and may contain
business or company secrets. If you have received this email in error, please
contact the sender and delete the message immediately. Any use of this email,
including saving, publishing, copying, replication or forwarding of the message
or the contents is not permitted. -------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
iText-questions mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/itext-questions
Buy the iText book: http://www.1t3xt.com/docs/book.php