ABCPDF 中的 Gecko Engine 找不到标签
Gecko Engine in ABCPDF not finding tags
有没有人尝试过使用 ABCPDF Gecko 引擎实现标签?我一使用 Gecko 就可以在 MSHTML 引擎 (Internet Explorer) 上正常工作,它使我的 HTML 更好,它找不到 [=20= 中指定的标签].
我正在使用 style="abcpdf-tag-visible: true;" 来指定使用默认引擎工作的标签。
以下代码生成一个空白文档。
[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);
}
几乎相同的默认引擎代码都能正确生成它。
我一直在与 WebSuperGoo 支持人员交谈。发现文档不是 consistent/complete.
http://www.websupergoo.com/helppdfnet/source/5-abcpdf/xhtmloptions/2-properties/addtags.htm
在 Gecko 中,您的标签必须对页面产生明显的影响才能被选中。在我的例子中,我有一个显示不间断 space 的标签,因此找不到它。
从他们的示例中,将样式更改为以下内容可以找到它:
样式="abcpdf-tag-visible: true; border: 1px solid transparent"
请注意,边框设置显然使这项工作有效。
同样,这修复了他们的演示,因此应该修复 Dillorscroft 的示例。
我需要花更多的时间来解决我的问题,因为我试图在页面上分配空白 spaces(对于 table 的内容),以便它们可以在之后更新html 已呈现,我知道第一个内容页面将从哪里开始。
有没有人尝试过使用 ABCPDF Gecko 引擎实现标签?我一使用 Gecko 就可以在 MSHTML 引擎 (Internet Explorer) 上正常工作,它使我的 HTML 更好,它找不到 [=20= 中指定的标签].
我正在使用 style="abcpdf-tag-visible: true;" 来指定使用默认引擎工作的标签。
以下代码生成一个空白文档。
[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);
}
几乎相同的默认引擎代码都能正确生成它。
我一直在与 WebSuperGoo 支持人员交谈。发现文档不是 consistent/complete.
http://www.websupergoo.com/helppdfnet/source/5-abcpdf/xhtmloptions/2-properties/addtags.htm
在 Gecko 中,您的标签必须对页面产生明显的影响才能被选中。在我的例子中,我有一个显示不间断 space 的标签,因此找不到它。
从他们的示例中,将样式更改为以下内容可以找到它: 样式="abcpdf-tag-visible: true; border: 1px solid transparent"
请注意,边框设置显然使这项工作有效。
同样,这修复了他们的演示,因此应该修复 Dillorscroft 的示例。
我需要花更多的时间来解决我的问题,因为我试图在页面上分配空白 spaces(对于 table 的内容),以便它们可以在之后更新html 已呈现,我知道第一个内容页面将从哪里开始。