1
votes

Has anyone tried to implement tags using the ABCPDF Gecko engine? I have it working fine on the MSHTML engine (Internet Explorer) as soon as I use Gecko, which is rendering my HTML better, it can't find the tags specified in the HTML.

I'm using style="abcpdf-tag-visible: true;" to specify a tag which works using the default engine.

The following code produces a blank document.

 [Test]
        public void Tags_With_Gecko()
        {
            Doc theDoc = new Doc();
            theDoc.Rect.Inset(100, 100);
            theDoc.Rect.Top = 700;

            theDoc.HtmlOptions.Engine = EngineType.Gecko;
            // Tag elements with style 'abcpdf-tag-visible: true'
            theDoc.HtmlOptions.ForGecko.AddTags = true;
            int id = theDoc.AddImageHtml("<FONT id=\"p1\" style=\"abcpdf-tag-visible: true; font-size: 72pt\">Gallia est omnis divisa in partes tres.</FONT>");
            // Frame location of the tagged element
            XRect[] tagRects = theDoc.HtmlOptions.ForGecko.GetTagRects(id);
            foreach (XRect theRect in tagRects)
            {
                theDoc.Rect.String = theRect.ToString();
                theDoc.FrameRect();
            }
            // Output tag ID
            string[] tagIds = theDoc.HtmlOptions.ForGecko.GetTagIDs(id);
            theDoc.Rect.String = theDoc.MediaBox.String;
            theDoc.Rect.Inset(20, 20);
            theDoc.FontSize = 64;
            theDoc.Color.String = "255 0 0";
            theDoc.AddText("Tag ID \"" + tagIds[0] + "\":");
            // Save the document
            const string testFilename = @"C:\pdf\HtmlOptionsGetTagRects.pdf";
            if (File.Exists(testFilename))
                File.Delete(testFilename);

            theDoc.Save(testFilename);
            theDoc.Clear();
            Process.Start(testFilename);
        }

Almost identical code for the default engine produces it correctly.

1
I'm having exactly the same issue. Sent an email to WebSuperGoo for support. Will update here if I get it solved... It was working on one server, failing on another, with Gecko.Ken Forslund

1 Answers

1
votes

I've been talking to WebSuperGoo support. Found out the documentation isn't consistent/complete.

http://www.websupergoo.com/helppdfnet/source/5-abcpdf/xhtmloptions/2-properties/addtags.htm

In Gecko, your tag has to have a visible impact on the page for it to be picked up. In my case, I had a tag that displayed a non-breaking space, and thus it wasn't found.

From their example, changing the style to the following got it to be findable: style="abcpdf-tag-visible: true; border: 1px solid transparent"

Note the Border settings is what makes this work apparently.

Again, this fixes their demo and thus should fix Dillorscroft's example.

I have to futz a bit more to fix my problem, as I am trying to allocate blank spaces on the page (for a table of contents) so they can be updated after the html is rendered and I know where the first content page will start.