The only difference I'm able to see through RUPS is that the Adobe
generated PDF files seem to contain a wrapper XObject.

So the appearance stream xobject will say something like:

/R0 gs
/MWFOForm Do


And then the xobject named "/MWFOForm" will contain the actual drawing
instructions for the annotation..

I can't find MWFOForm mentioned in the PDF standard at all-- I'm not sure
what the significance of this is.

Any ideas?

On Wed, Sep 5, 2012 at 5:49 PM, Suneet Shah <[email protected]> wrote:

> Hey there,
>
> I'm using iText to create highlight annotations, and I'm defining the
> appearance stream manually for the highlights.
>
> I've found that when opening such a document in Adobe Reader, the
> highlight displays as expected-- but if you select the highlight and delete
> it, the "appearance" of the highlight is still visible, but there is no
> annotation left.  So in a sense, Adobe Reader is rendering both the
> annotation, and the annotation appearance stream, (not 1 or the other, as
> is the expected behavior).
>
> I've attached an example file created like this, as well as some example
> code for creating such an annotation.
>
> Any idea what I'm doing wrong? I've used iText RUPS and compared a
> highlight annotation generated by Adobe Reader to one generated with my
> code, and I can't really seem to find what I'm doing wrong.
>
> Thanks
>
> ------
>
>  string outputFile = "test.pdf";
>
>
>             using (FileStream fs = new FileStream(outputFile,
> FileMode.Create, FileAccess.Write, FileShare.None))
>             {
>                 using (Document doc = new Document(PageSize.LETTER))
>                 {
>                     using (PdfWriter w = PdfWriter.GetInstance(doc, fs))
>                     {
>
>                         doc.Open();
>
>                         w.CompressionLevel = 0;
>
>                         Paragraph p = new Paragraph("This is a test with
> compression level is 0");
>
>                         doc.Add(p);
>
>                         doc.Add(new Paragraph("This is a test with
> compression level is 0"));
>                         doc.Close();
>                     }
>                 }
>             }
>
>             //Create a new file from our test file with highlighting
>             string highLightFile = "Highlighted.pdf";
>
>             //Bind a reader and stamper to our test PDF
>             PdfReader reader = new PdfReader(outputFile);
>
>             using (FileStream fs = new FileStream(highLightFile,
> FileMode.Create, FileAccess.Write, FileShare.None))
>             {
>                 using (PdfStamper stamper = new PdfStamper(reader, fs))
>                 {
>                     //Create a rectangle for the highlight. NOTE:
> Technically this isn't used but it helps with the quadpoint calculation
>
>                     iTextSharp.text.Rectangle rect = new
> iTextSharp.text.Rectangle(60.6755f, 735.3f, 94.0195f, 749.172f);
>                     //Create an array of quad points based on that
> rectangle. NOTE: The order below doesn't appear to match the actual spec
> but is what Acrobat produces
>                     float[] quad = { rect.Left, rect.Bottom, rect.Right,
> rect.Bottom, rect.Left, rect.Top, rect.Right, rect.Top };
>
>                     //Create our hightlight
>                     PdfAnnotation highlight =
> PdfAnnotation.CreateMarkup(stamper.Writer, rect, null,
> PdfAnnotation.MARKUP_HIGHLIGHT, quad);
>
>
>
>                     //Set the color
>                     highlight.Color = BaseColor.YELLOW;
>
>                     //PdfContentByte canvas = stamper.Writer.DirectContent;
>                     PdfContentByte canvas = stamper.GetUnderContent(1);
>
>                     PdfAppearance highlight_ap =
> canvas.CreateAppearance(rect.Width, rect.Height);
>
>                     /*
>                     highlight_ap.MoveTo(0, 0);
>                     highlight_ap.LineTo(highlight_ap.Width, 0);
>                     highlight_ap.LineTo(highlight_ap.Width,
> highlight_ap.Height);
>                     highlight_ap.LineTo(0, highlight_ap.Height);
>                     highlight_ap.ClosePath();
>                     */
>
>                     PdfGState transparent = new PdfGState();
>                     transparent.FillOpacity = 0.4f;
>                     highlight_ap.SetGState(transparent);
>
>                     highlight_ap.Rectangle(0, 0, highlight_ap.Width,
> highlight_ap.Height);
>                     highlight_ap.SetRGBColorFill(127, 255, 0);
>                     highlight_ap.Fill();
>
>                     stamper.Writer.ReleaseTemplate(highlight_ap);
>                     canvas.AddTemplate(highlight_ap, rect.Left,
> rect.Bottom);
>
>                     PdfName highlight_name = new PdfName("N");
>                     highlight.SetAppearance(highlight_name, highlight_ap);
>
>
>                     //Add the annotation
>                     stamper.AddAnnotation(highlight, 1);
>                 }
>             }
>
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
iText-questions mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/itext-questions

iText(R) is a registered trademark of 1T3XT BVBA.
Many questions posted to this list can (and will) be answered with a reference 
to the iText book: http://www.itextpdf.com/book/
Please check the keywords list before you ask for examples: 
http://itextpdf.com/themes/keywords.php

Reply via email to