0

このライブラリの最後のバージョン(itextsharp 5.5.11)を使用しています。私はXMLWorkerHelperHTML を 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);

そして、私はこれをテストしました。h1htmlにタグを追加しました

HtmlNode NodeH = doc.CreateElement("h1");
NodeH.InnerHtml = HtmlDocument.HtmlEncode(")_________________ LiiIIII ____________________(");
NodeH.SetAttributeValue("align", "center");

nodeBody.PrependChild(NodeH);

そして私は以下を受け取りました:

ここに画像の説明を入力

ありがとうございました。

4

0 に答える 0