aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/lowagie/text/html/HtmlEncoder.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/lowagie/text/html/HtmlEncoder.java')
-rw-r--r--src/main/java/com/lowagie/text/html/HtmlEncoder.java211
1 files changed, 211 insertions, 0 deletions
diff --git a/src/main/java/com/lowagie/text/html/HtmlEncoder.java b/src/main/java/com/lowagie/text/html/HtmlEncoder.java
new file mode 100644
index 0000000..2501815
--- /dev/null
+++ b/src/main/java/com/lowagie/text/html/HtmlEncoder.java
@@ -0,0 +1,211 @@
+/*
+ * $Id: HtmlEncoder.java,v 1.56 2005/05/04 14:33:47 blowagie Exp $
+ * $Name: $
+ *
+ * Copyright 1999, 2000, 2001, 2002 by Bruno Lowagie.
+ *
+ * The contents of this file are subject to the Mozilla Public License Version 1.1
+ * (the "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the License.
+ *
+ * The Original Code is 'iText, a free JAVA-PDF library'.
+ *
+ * The Initial Developer of the Original Code is Bruno Lowagie. Portions created by
+ * the Initial Developer are Copyright (C) 1999, 2000, 2001, 2002 by Bruno Lowagie.
+ * All Rights Reserved.
+ * Co-Developer of the code is Paulo Soares. Portions created by the Co-Developer
+ * are Copyright (C) 2000, 2001, 2002 by Paulo Soares. All Rights Reserved.
+ *
+ * Contributor(s): all the names of the contributors are added in the source code
+ * where applicable.
+ *
+ * Alternatively, the contents of this file may be used under the terms of the
+ * LGPL license (the "GNU LIBRARY GENERAL PUBLIC LICENSE"), in which case the
+ * provisions of LGPL are applicable instead of those above. If you wish to
+ * allow use of your version of this file only under the terms of the LGPL
+ * License and not to allow others to use your version of this file under
+ * the MPL, indicate your decision by deleting the provisions above and
+ * replace them with the notice and other provisions required by the LGPL.
+ * If you do not delete the provisions above, a recipient may use your version
+ * of this file under either the MPL or the GNU LIBRARY GENERAL PUBLIC LICENSE.
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the MPL as stated above or under the terms of the GNU
+ * Library General Public License as published by the Free Software Foundation;
+ * either version 2 of the License, or any later version.
+ *
+ * This library 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 Library general Public License for more
+ * details.
+ *
+ * If you didn't download this code from the following link, you should check if
+ * you aren't using an obsolete version:
+ * http://www.lowagie.com/iText/
+ */
+
+package com.lowagie.text.html;
+
+import java.awt.Color;
+
+import com.lowagie.text.Element;
+
+/**
+ * This class converts a <CODE>String</CODE> to the HTML-format of a String.
+ * <P>
+ * To convert the <CODE>String</CODE>, each character is examined:
+ * <UL>
+ * <LI>ASCII-characters from 000 till 031 are represented as &amp;#xxx;<BR>
+ * (with xxx = the value of the character)
+ * <LI>ASCII-characters from 032 t/m 127 are represented by the character itself, except for:
+ * <UL>
+ * <LI>'\n' becomes &lt;BR&gt;\n
+ * <LI>&quot; becomes &amp;quot;
+ * <LI>&amp; becomes &amp;amp;
+ * <LI>&lt; becomes &amp;lt;
+ * <LI>&gt; becomes &amp;gt;
+ * </UL>
+ * <LI>ASCII-characters from 128 till 255 are represented as &amp;#xxx;<BR>
+ * (with xxx = the value of the character)
+ * </UL>
+ * <P>
+ * Example:
+ * <P><BLOCKQUOTE><PRE>
+ * String htmlPresentation = HtmlEncoder.encode("Marie-Th&#233;r&#232;se S&#248;rensen");
+ * </PRE></BLOCKQUOTE><P>
+ * for more info: see O'Reilly; "HTML: The Definitive Guide" (page 164)
+ *
+ * @author mario.maccarini@rug.ac.be
+ */
+
+public class HtmlEncoder {
+
+ // membervariables
+
+/** List with the HTML translation of all the characters. */
+ private static final String[] htmlCode = new String[256];
+
+ static {
+ for (int i = 0; i < 10; i++) {
+ htmlCode[i] = "&#00" + i + ";";
+ }
+
+ for (int i = 10; i < 32; i++) {
+ htmlCode[i] = "&#0" + i + ";";
+ }
+
+ for (int i = 32; i < 128; i++) {
+ htmlCode[i] = String.valueOf((char)i);
+ }
+
+ // Special characters
+ htmlCode['\t'] = "\t";
+ htmlCode['\n'] = "<" + HtmlTags.NEWLINE + " />\n";
+ htmlCode['\"'] = "&quot;"; // double quote
+ htmlCode['&'] = "&amp;"; // ampersand
+ htmlCode['<'] = "&lt;"; // lower than
+ htmlCode['>'] = "&gt;"; // greater than
+
+ for (int i = 128; i < 256; i++) {
+ htmlCode[i] = "&#" + i + ";";
+ }
+ }
+
+
+ // constructors
+
+/**
+ * This class will never be constructed.
+ * <P>
+ * HtmlEncoder only contains static methods.
+ */
+
+ private HtmlEncoder () { }
+
+ // methods
+
+/**
+ * Converts a <CODE>String</CODE> to the HTML-format of this <CODE>String</CODE>.
+ *
+ * @param string The <CODE>String</CODE> to convert
+ * @return a <CODE>String</CODE>
+ */
+
+ public static String encode(String string) {
+ int n = string.length();
+ char character;
+ StringBuffer buffer = new StringBuffer();
+ // loop over all the characters of the String.
+ for (int i = 0; i < n; i++) {
+ character = string.charAt(i);
+ // the Htmlcode of these characters are added to a StringBuffer one by one
+ if (character < 256) {
+ buffer.append(htmlCode[character]);
+ }
+ else {
+ // Improvement posted by Joachim Eyrich
+ buffer.append("&#").append((int)character).append(";");
+ }
+ }
+ return buffer.toString().trim();
+ }
+
+/**
+ * Converts a <CODE>Color</CODE> into a HTML representation of this <CODE>Color</CODE>.
+ *
+ * @param color the <CODE>Color</CODE> that has to be converted.
+ * @return the HTML representation of this <COLOR>Color</COLOR>
+ */
+
+ public static String encode(Color color) {
+ StringBuffer buffer = new StringBuffer("#");
+ if (color.getRed() < 16) {
+ buffer.append('0');
+ }
+ buffer.append(Integer.toString(color.getRed(), 16));
+ if (color.getGreen() < 16) {
+ buffer.append('0');
+ }
+ buffer.append(Integer.toString(color.getGreen(), 16));
+ if (color.getBlue() < 16) {
+ buffer.append('0');
+ }
+ buffer.append(Integer.toString(color.getBlue(), 16));
+ return buffer.toString();
+ }
+
+/**
+ * Translates the alignment value.
+ *
+ * @param alignment the alignment value
+ * @return the translated value
+ */
+
+ public static String getAlignment(int alignment) {
+ switch(alignment) {
+ case Element.ALIGN_LEFT:
+ return HtmlTags.ALIGN_LEFT;
+ case Element.ALIGN_CENTER:
+ return HtmlTags.ALIGN_CENTER;
+ case Element.ALIGN_RIGHT:
+ return HtmlTags.ALIGN_RIGHT;
+ case Element.ALIGN_JUSTIFIED:
+ case Element.ALIGN_JUSTIFIED_ALL:
+ return HtmlTags.ALIGN_JUSTIFIED;
+ case Element.ALIGN_TOP:
+ return HtmlTags.ALIGN_TOP;
+ case Element.ALIGN_MIDDLE:
+ return HtmlTags.ALIGN_MIDDLE;
+ case Element.ALIGN_BOTTOM:
+ return HtmlTags.ALIGN_BOTTOM;
+ case Element.ALIGN_BASELINE:
+ return HtmlTags.ALIGN_BASELINE;
+ default:
+ return "";
+ }
+ }
+} \ No newline at end of file