com.itextpdf.text.html.simpleparser.HTMLTagProcessors Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of itextpdf Show documentation
Show all versions of itextpdf Show documentation
iText, a free Java-PDF library
/*
* $Id: 2d21773a27aa6982c921fd58d972e929c26cef7e $
*
* This file is part of the iText (R) project.
* Copyright (c) 1998-2015 iText Group NV
* Authors: Bruno Lowagie, Paulo Soares, et al.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License version 3
* as published by the Free Software Foundation with the addition of the
* following permission added to Section 15 as permitted in Section 7(a):
* FOR ANY PART OF THE COVERED WORK IN WHICH THE COPYRIGHT IS OWNED BY
* ITEXT GROUP. ITEXT GROUP DISCLAIMS THE WARRANTY OF NON INFRINGEMENT
* OF THIRD PARTY RIGHTS
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Affero General Public License for more details.
* You should have received a copy of the GNU Affero General Public License
* along with this program; if not, see http://www.gnu.org/licenses or write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA, 02110-1301 USA, or download the license from the following URL:
* http://itextpdf.com/terms-of-use/
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License.
*
* In accordance with Section 7(b) of the GNU Affero General Public License,
* a covered work must retain the producer line in every PDF that is created
* or manipulated using iText.
*
* You can be released from the requirements of the license by purchasing
* a commercial license. Buying such a license is mandatory as soon as you
* develop commercial activities involving the iText software without
* disclosing the source code of your own applications.
* These activities include: offering paid services to customers as an ASP,
* serving PDFs on the fly in a web application, shipping iText with a closed
* source product.
*
* For more information, please contact iText Software Corp. at this
* address: [email protected]
*/
package com.itextpdf.text.html.simpleparser;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.html.HtmlTags;
/**
* This class maps tags such as div and span to their corresponding
* TagProcessor classes.
* @deprecated since 5.5.2
*/
@Deprecated
public class HTMLTagProcessors extends HashMap {
/**
* Creates a Map containing supported tags.
*/
public HTMLTagProcessors() {
super();
put(HtmlTags.A, A);
put(HtmlTags.B, EM_STRONG_STRIKE_SUP_SUP);
put(HtmlTags.BODY, DIV);
put(HtmlTags.BR, BR);
put(HtmlTags.DIV, DIV);
put(HtmlTags.EM, EM_STRONG_STRIKE_SUP_SUP);
put(HtmlTags.FONT, SPAN);
put(HtmlTags.H1, H);
put(HtmlTags.H2, H);
put(HtmlTags.H3, H);
put(HtmlTags.H4, H);
put(HtmlTags.H5, H);
put(HtmlTags.H6, H);
put(HtmlTags.HR, HR);
put(HtmlTags.I, EM_STRONG_STRIKE_SUP_SUP);
put(HtmlTags.IMG, IMG);
put(HtmlTags.LI, LI);
put(HtmlTags.OL, UL_OL);
put(HtmlTags.P, DIV);
put(HtmlTags.PRE, PRE);
put(HtmlTags.S, EM_STRONG_STRIKE_SUP_SUP);
put(HtmlTags.SPAN, SPAN);
put(HtmlTags.STRIKE, EM_STRONG_STRIKE_SUP_SUP);
put(HtmlTags.STRONG, EM_STRONG_STRIKE_SUP_SUP);
put(HtmlTags.SUB, EM_STRONG_STRIKE_SUP_SUP);
put(HtmlTags.SUP, EM_STRONG_STRIKE_SUP_SUP);
put(HtmlTags.TABLE, TABLE);
put(HtmlTags.TD, TD);
put(HtmlTags.TH, TD);
put(HtmlTags.TR, TR);
put(HtmlTags.U, EM_STRONG_STRIKE_SUP_SUP);
put(HtmlTags.UL, UL_OL);
}
/**
* Object that processes the following tags:
* i, em, b, strong, s, strike, u, sup, sub
*/
public static final HTMLTagProcessor EM_STRONG_STRIKE_SUP_SUP = new HTMLTagProcessor() {
/**
* @see com.itextpdf.text.html.simpleparser.HTMLTagProcessors#startElement(com.itextpdf.text.html.simpleparser.HTMLWorker, java.lang.String)
*/
public void startElement(HTMLWorker worker, String tag, Map attrs) {
tag = mapTag(tag);
attrs.put(tag, null);
worker.updateChain(tag, attrs);
}
/**
* @see com.itextpdf.text.html.simpleparser.HTMLTagProcessors#endElement(com.itextpdf.text.html.simpleparser.HTMLWorker, java.lang.String)
*/
public void endElement(HTMLWorker worker, String tag) {
tag = mapTag(tag);
worker.updateChain(tag);
}
/**
* Maps em to i, strong to b, and strike to s.
* This is a convention: the style parser expects i, b and s.
* @param tag the original tag
* @return the mapped tag
*/
private String mapTag(String tag) {
if (HtmlTags.EM.equalsIgnoreCase(tag))
return HtmlTags.I;
if (HtmlTags.STRONG.equalsIgnoreCase(tag))
return HtmlTags.B;
if (HtmlTags.STRIKE.equalsIgnoreCase(tag))
return HtmlTags.S;
return tag;
}
};
/**
* Object that processes the a tag.
*/
public static final HTMLTagProcessor A = new HTMLTagProcessor() {
/**
* @see com.itextpdf.text.html.simpleparser.HTMLTagProcessors#startElement(com.itextpdf.text.html.simpleparser.HTMLWorker, java.lang.String)
*/
public void startElement(HTMLWorker worker, String tag, Map attrs) {
worker.updateChain(tag, attrs);
worker.flushContent();
}
/**
* @see com.itextpdf.text.html.simpleparser.HTMLTagProcessors#endElement(com.itextpdf.text.html.simpleparser.HTMLWorker, java.lang.String)
*/
public void endElement(HTMLWorker worker, String tag) {
worker.processLink();
worker.updateChain(tag);
}
};
/**
* Object that processes the br tag.
*/
public static final HTMLTagProcessor BR = new HTMLTagProcessor(){
/**
* @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, Map attrs) {
worker.newLine();
}
/**
* @see com.itextpdf.text.html.simpleparser.HTMLTagProcessors#endElement(com.itextpdf.text.html.simpleparser.HTMLWorker, java.lang.String)
*/
public void endElement(HTMLWorker worker, String tag) {
}
};
public static final HTMLTagProcessor UL_OL = new HTMLTagProcessor(){
/**
* @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, Map attrs) throws DocumentException {
worker.carriageReturn();
if (worker.isPendingLI())
worker.endElement(HtmlTags.LI);
worker.setSkipText(true);
worker.updateChain(tag, attrs);;
worker.pushToStack(worker.createList(tag));
}
/**
* @see com.itextpdf.text.html.simpleparser.HTMLTagProcessors#endElement(com.itextpdf.text.html.simpleparser.HTMLWorker, java.lang.String)
*/
public void endElement(HTMLWorker worker, String tag) throws DocumentException {
worker.carriageReturn();
if (worker.isPendingLI())
worker.endElement(HtmlTags.LI);
worker.setSkipText(false);
worker.updateChain(tag);
worker.processList();
}
};
public static final HTMLTagProcessor HR = new HTMLTagProcessor(){
public void startElement(HTMLWorker worker, String tag, Map attrs) throws DocumentException {
worker.carriageReturn();
worker.pushToStack(worker.createLineSeparator(attrs));
}
public void endElement(HTMLWorker worker, String tag) {
}
};
public static final HTMLTagProcessor SPAN = new HTMLTagProcessor(){
/**
* @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, Map attrs) {
worker.updateChain(tag, attrs);
}
/**
* @see com.itextpdf.text.html.simpleparser.HTMLTagProcessors#endElement(com.itextpdf.text.html.simpleparser.HTMLWorker, java.lang.String)
*/
public void endElement(HTMLWorker worker, String tag) {
worker.updateChain(tag);
}
};
public static final HTMLTagProcessor H = new HTMLTagProcessor(){
/**
* @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, Map attrs) throws DocumentException {
worker.carriageReturn();
if (!attrs.containsKey(HtmlTags.SIZE)) {
int v = 7 - Integer.parseInt(tag.substring(1));
attrs.put(HtmlTags.SIZE, Integer.toString(v));
}
worker.updateChain(tag, attrs);
}
/**
* @see com.itextpdf.text.html.simpleparser.HTMLTagProcessors#endElement(com.itextpdf.text.html.simpleparser.HTMLWorker, java.lang.String)
*/
public void endElement(HTMLWorker worker, String tag) throws DocumentException {
worker.carriageReturn();
worker.updateChain(tag);
}
};
public static final HTMLTagProcessor LI = new HTMLTagProcessor(){
/**
* @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, Map attrs) throws DocumentException {
worker.carriageReturn();
if (worker.isPendingLI())
worker.endElement(tag);
worker.setSkipText(false);
worker.setPendingLI(true);
worker.updateChain(tag, attrs);
worker.pushToStack(worker.createListItem());
}
/**
* @see com.itextpdf.text.html.simpleparser.HTMLTagProcessors#endElement(com.itextpdf.text.html.simpleparser.HTMLWorker, java.lang.String)
*/
public void endElement(HTMLWorker worker, String tag) throws DocumentException {
worker.carriageReturn();
worker.setPendingLI(false);
worker.setSkipText(true);
worker.updateChain(tag);
worker.processListItem();
}
};
public static final HTMLTagProcessor PRE = new HTMLTagProcessor(){
/**
* @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, Map attrs) throws DocumentException {
worker.carriageReturn();
if (!attrs.containsKey(HtmlTags.FACE)) {
attrs.put(HtmlTags.FACE, "Courier");
}
worker.updateChain(tag, attrs);
worker.setInsidePRE(true);
}
/**
* @see com.itextpdf.text.html.simpleparser.HTMLTagProcessors#endElement(com.itextpdf.text.html.simpleparser.HTMLWorker, java.lang.String)
*/
public void endElement(HTMLWorker worker, String tag) throws DocumentException {
worker.carriageReturn();
worker.updateChain(tag);
worker.setInsidePRE(false);
}
};
public static final HTMLTagProcessor DIV = new HTMLTagProcessor(){
/**
* @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, Map attrs) throws DocumentException {
worker.carriageReturn();
worker.updateChain(tag, attrs);
}
/**
* @see com.itextpdf.text.html.simpleparser.HTMLTagProcessors#endElement(com.itextpdf.text.html.simpleparser.HTMLWorker, java.lang.String)
*/
public void endElement(HTMLWorker worker, String tag) throws DocumentException {
worker.carriageReturn();
worker.updateChain(tag);
}
};
public static final HTMLTagProcessor TABLE = new HTMLTagProcessor(){
/**
* @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, Map attrs) throws DocumentException {
worker.carriageReturn();
TableWrapper table = new TableWrapper(attrs);
worker.pushToStack(table);
worker.pushTableState();
worker.setPendingTD(false);
worker.setPendingTR(false);
worker.setSkipText(true);
// Table alignment should not affect children elements, thus remove
attrs.remove(HtmlTags.ALIGN);
// In case this is a nested table reset colspan and rowspan
attrs.put(HtmlTags.COLSPAN, "1");
attrs.put(HtmlTags.ROWSPAN, "1");
worker.updateChain(tag, attrs);
}
/**
* @see com.itextpdf.text.html.simpleparser.HTMLTagProcessors#endElement(com.itextpdf.text.html.simpleparser.HTMLWorker, java.lang.String)
*/
public void endElement(HTMLWorker worker, String tag) throws DocumentException {
worker.carriageReturn();
if (worker.isPendingTR())
worker.endElement(HtmlTags.TR);
worker.updateChain(tag);
worker.processTable();
worker.popTableState();
worker.setSkipText(false);
}
};
public static final HTMLTagProcessor TR = new HTMLTagProcessor(){
/**
* @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, Map attrs) throws DocumentException {
worker.carriageReturn();
if (worker.isPendingTR())
worker.endElement(tag);
worker.setSkipText(true);
worker.setPendingTR(true);
worker.updateChain(tag, attrs);
}
/**
* @see com.itextpdf.text.html.simpleparser.HTMLTagProcessors#endElement(com.itextpdf.text.html.simpleparser.HTMLWorker, java.lang.String)
*/
public void endElement(HTMLWorker worker, String tag) throws DocumentException {
worker.carriageReturn();
if (worker.isPendingTD())
worker.endElement(HtmlTags.TD);
worker.setPendingTR(false);
worker.updateChain(tag);
worker.processRow();
worker.setSkipText(true);
}
};
public static final HTMLTagProcessor TD = new HTMLTagProcessor(){
/**
* @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, Map attrs) throws DocumentException {
worker.carriageReturn();
if (worker.isPendingTD())
worker.endElement(tag);
worker.setSkipText(false);
worker.setPendingTD(true);
worker.updateChain(HtmlTags.TD, attrs);
worker.pushToStack(worker.createCell(tag));
}
/**
* @see com.itextpdf.text.html.simpleparser.HTMLTagProcessors#endElement(com.itextpdf.text.html.simpleparser.HTMLWorker, java.lang.String)
*/
public void endElement(HTMLWorker worker, String tag) throws DocumentException {
worker.carriageReturn();
worker.setPendingTD(false);
worker.updateChain(HtmlTags.TD);
worker.setSkipText(true);
}
};
public static final HTMLTagProcessor IMG = new HTMLTagProcessor(){
/**
* @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, Map attrs) throws DocumentException, IOException {
worker.updateChain(tag, attrs);
worker.processImage(worker.createImage(attrs), attrs);
worker.updateChain(tag);
}
/**
* @see com.itextpdf.text.html.simpleparser.HTMLTagProcessors#endElement(com.itextpdf.text.html.simpleparser.HTMLWorker, java.lang.String)
*/
public void endElement(HTMLWorker worker, String tag) {
}
};
/** Serial version UID. */
private static final long serialVersionUID = -959260811961222824L;
}