このライブラリの最後のバージョン(itextsharp 5.5.11)を使用しています。私はXMLWorkerHelper
HTML を PDF に変換するために使用していますが、1 つを除いてすべて良好です... XMLWorker がタグ<h1>
、<h2>
などを見ると、このタグがブックマークされます。ブックマークを作成したので、この機能をオフにすることはできますか?
ここでは、一般的なタグを設定します:
chunk = new Chunk(textOfChapter, fontBold_14);
chunk.SetGenericTag(textOfChapter);
paragraph = new Paragraph(chunk);
doc.Add(paragraph);
addHtmlPage(doc, writer, nodePath, i + 1, str);
の場合OnGenericTag
:
public override void OnGenericTag(PdfWriter writer, Document document, Rectangle rect, String text)
{
string name = "dest" + (counter++);
int page = writer.PageNumber;
if (!toc.Keys.Contains<string>(text))
toc.Add(text, new KeyValuePair<string, int>(name, page));
writer.AddNamedDestination(name, page, new PdfDestination(PdfDestination.FITH, rect.GetTop(topOffset)));
}
ここでブックマークを作成します。
private PdfOutline createBookmark(PdfOutline pdfBookmark, XmlNode xmlNode, PdfWriter writer,
string str, Dictionary<string, KeyValuePair<string, int>> toc)
{
var text = xmlNode.Attributes["text"].Value;
KeyValuePair<string, int> value;
var key = "";
key = str + text;
if (toc.ContainsKey(key))
{
value = toc[key];
var page = value.Value;
var bookmark = new PdfOutline(pdfBookmark,
PdfAction.GotoLocalPage(page,
new PdfDestination(PdfDestination.FITH),
writer), str + " " + text, true);
return bookmark;
}
else
{
var bookmark = new PdfOutline(pdfBookmark,
PdfAction.GotoLocalPage(1,
new PdfDestination(PdfDestination.FITH),
writer), "no bookmark*** " + str + " " + text, true);
return bookmark;
}
}
ここで私は使用しますXMLWorker
:
var msCss = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(css));
var msHtml = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(cleanHtml));
FontFactory.Register(inputFont);
XMLWorkerFontProvider fontProvider = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS);
fontProvider.Register(inputFont);
FontFactory.FontImp = fontProvider;
XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, msHtml, msCss, Encoding.UTF8, fontProvider);
そして、私はこれをテストしました。h1
htmlにタグを追加しました
HtmlNode NodeH = doc.CreateElement("h1");
NodeH.InnerHtml = HtmlDocument.HtmlEncode(")_________________ LiiIIII ____________________(");
NodeH.SetAttributeValue("align", "center");
nodeBody.PrependChild(NodeH);
そして私は以下を受け取りました:
ありがとうございました。