iTextSharp.text.html.simpleparser.HTMLWorker.EndElement C# (CSharp) Method

EndElement() public method

public EndElement ( String tag ) : void
tag String
return void
        public virtual void EndElement(String tag) {
            if (!tagsSupported.ContainsKey(tag))
                return;
            String follow = (String)FactoryProperties.followTags[tag];
            if (follow != null) {
                cprops.RemoveChain(follow);
                return;
            }
            if (tag.Equals("font") || tag.Equals("span")) {
                cprops.RemoveChain(tag);
                return;
            }
            if (tag.Equals("a")) {
                if (currentParagraph == null)
                    currentParagraph = new Paragraph();
                IALink i = null;
                bool skip = false;
                if (interfaceProps != null) {
                    i = (IALink)interfaceProps["alink_interface"];
                    if (i != null)
                        skip = i.Process(currentParagraph, cprops);
                }
                if (!skip) {
                    String href = cprops["href"];
                    if (href != null) {
                        ArrayList chunks = currentParagraph.Chunks;
                        for (int k = 0; k < chunks.Count; ++k) {
                            Chunk ck = (Chunk)chunks[k];
                            ck.SetAnchor(href);
                        }
                    }
                }
                Paragraph tmp = (Paragraph)stack.Pop();
                Phrase tmp2 = new Phrase();
                tmp2.Add(currentParagraph);
                tmp.Add(tmp2);
                currentParagraph = tmp;
                cprops.RemoveChain("a");
                return;
            }
            if (tag.Equals("br")) {
                return;
            }
            if (currentParagraph != null) {
                if (stack.Count == 0)
                    document.Add(currentParagraph);
                else {
                    Object obj = stack.Pop();
                    if (obj is ITextElementArray) {
                        ITextElementArray current = (ITextElementArray)obj;
                        current.Add(currentParagraph);
                    }
                    stack.Push(obj);
                }
            }
            currentParagraph = null;
            if (tag.Equals(HtmlTags.UNORDEREDLIST) || tag.Equals(HtmlTags.ORDEREDLIST)) {
                if (pendingLI)
                    EndElement(HtmlTags.LISTITEM);
                skipText = false;
                cprops.RemoveChain(tag);
                if (stack.Count == 0)
                    return;
                Object obj = stack.Pop();
                if (!(obj is List)) {
                    stack.Push(obj);
                    return;
                }
                if (stack.Count == 0)
                    document.Add((IElement)obj);
                else
                    ((ITextElementArray)stack.Peek()).Add(obj);
                return;
            }
            if (tag.Equals(HtmlTags.LISTITEM)) {
                pendingLI = false;
                skipText = true;
                cprops.RemoveChain(tag);
                if (stack.Count == 0)
                    return;
                Object obj = stack.Pop();
                if (!(obj is ListItem)) {
                    stack.Push(obj);
                    return;
                }
                if (stack.Count == 0) {
                    document.Add((IElement)obj);
                    return;
                }
                Object list = stack.Pop();
                if (!(list is List)) {
                    stack.Push(list);
                    return;
                }
                ListItem item = (ListItem)obj;
                ((List)list).Add(item);
                ArrayList cks = item.Chunks;
                if (cks.Count > 0)
                    item.ListSymbol.Font = ((Chunk)cks[0]).Font;
                stack.Push(list);
                return;
            }
            if (tag.Equals("div") || tag.Equals("body")) {
                cprops.RemoveChain(tag);
                return;
            }
            if (tag.Equals(HtmlTags.PRE)) {
                cprops.RemoveChain(tag);
                isPRE = false;
                return;
            }
            if (tag.Equals("p")) {
                cprops.RemoveChain(tag);
                return;
            }
            if (tag.Equals("h1") || tag.Equals("h2") || tag.Equals("h3") || tag.Equals("h4") || tag.Equals("h5") || tag.Equals("h6")) {
                cprops.RemoveChain(tag);
                return;
            }
            if (tag.Equals("table")) {
                if (pendingTR)
                    EndElement("tr");
                cprops.RemoveChain("table");
                IncTable table = (IncTable) stack.Pop();
                PdfPTable tb = table.BuildTable();
                tb.SplitRows = true;
                if (stack.Count == 0)
                    document.Add(tb);
                else
                    ((ITextElementArray)stack.Peek()).Add(tb);
                bool[] state = (bool[])tableState.Pop();
                pendingTR = state[0];
                pendingTD = state[1];
                skipText = false;
                return;
            }
            if (tag.Equals("tr")) {
                if (pendingTD)
                    EndElement("td");
                pendingTR = false;
                cprops.RemoveChain("tr");
                ArrayList cells = new ArrayList();
                IncTable table = null;
                while (true) {
                    Object obj = stack.Pop();
                    if (obj is IncCell) {
                        cells.Add(((IncCell)obj).Cell);
                    }
                    if (obj is IncTable) {
                        table = (IncTable)obj;
                        break;
                    }
                }
                table.AddCols(cells);
                table.EndRow();
                stack.Push(table);
                skipText = true;
                return;
            }
            if (tag.Equals("td") || tag.Equals("th")) {
                pendingTD = false;
                cprops.RemoveChain("td");
                skipText = true;
                return;
            }
        }
        

Usage Example

示例#1
0
 /**
  * @throws DocumentException
  * @see com.itextpdf.text.html.simpleparser.HTMLTagProcessors#startElement(com.itextpdf.text.html.simpleparser.HTMLWorker, java.lang.String, java.util.Map)
  */
 public void StartElement(HTMLWorker worker, String tag, IDictionary <String, String> attrs)
 {
     worker.CarriageReturn();
     if (worker.IsPendingTR())
     {
         worker.EndElement(tag);
     }
     worker.SetSkipText(true);
     worker.SetPendingTR(true);
     worker.UpdateChain(tag, attrs);
 }
All Usage Examples Of iTextSharp.text.html.simpleparser.HTMLWorker::EndElement