⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 htmlwriter.java

📁 处理PDF
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
                }                // end tag                addTabs(indent);                writeEnd(HtmlTags.DIV);                currentfont.pop();                return;            }            case Element.SECTION:            case Element.CHAPTER:            {                // part of the start tag + contents                writeSection((Section) element, indent);                return;            }            case Element.LIST:            {                List list = (List) element;                // start tag                addTabs(indent);                if (list.isNumbered()) {                    writeStart(HtmlTags.ORDEREDLIST);                }                else {                    writeStart(HtmlTags.UNORDEREDLIST);                }                writeMarkupAttributes(markup);                os.write(GT);                // contents                for (Iterator i = list.getItems().iterator(); i.hasNext(); ) {                    write((Element) i.next(), indent + 1);                }                // end tag                addTabs(indent);                if (list.isNumbered()) {                    writeEnd(HtmlTags.ORDEREDLIST);                }                else {                    writeEnd(HtmlTags.UNORDEREDLIST);                }                return;            }            case Element.LISTITEM:            {                ListItem listItem = (ListItem) element;                styleAttributes = new Properties();                if (listItem.hasLeading()) styleAttributes.setProperty(Markup.CSS_KEY_LINEHEIGHT, listItem.getTotalLeading() + "pt");                                // start tag                addTabs(indent);                writeStart(HtmlTags.LISTITEM);                writeMarkupAttributes(markup);                write(listItem.getFont(), styleAttributes);                os.write(GT);                currentfont.push(listItem.getFont());                // contents                for (Iterator i = listItem.iterator(); i.hasNext(); ) {                    write((Element) i.next(), indent + 1);                }                // end tag                addTabs(indent);                writeEnd(HtmlTags.LISTITEM);                currentfont.pop();                return;            }            case Element.CELL:            {                Cell cell = (Cell) element;                                // start tag                addTabs(indent);                if (cell.isHeader()) {                    writeStart(HtmlTags.HEADERCELL);                }                else {                    writeStart(HtmlTags.CELL);                }                writeMarkupAttributes(markup);                if (cell.getBorderWidth() != Rectangle.UNDEFINED) {                    write(HtmlTags.BORDERWIDTH, String.valueOf(cell.getBorderWidth()));                }                if (cell.getBorderColor() != null) {                    write(HtmlTags.BORDERCOLOR, HtmlEncoder.encode(cell.getBorderColor()));                }                if (cell.getBackgroundColor() != null) {                    write(HtmlTags.BACKGROUNDCOLOR, HtmlEncoder.encode(cell.getBackgroundColor()));                }                String alignment = HtmlEncoder.getAlignment(cell.getHorizontalAlignment());                if (!"".equals(alignment)) {                    write(HtmlTags.HORIZONTALALIGN, alignment);                }                alignment = HtmlEncoder.getAlignment(cell.getVerticalAlignment());                if (!"".equals(alignment)) {                    write(HtmlTags.VERTICALALIGN, alignment);                }                if (cell.getWidthAsString() != null) {                    write(HtmlTags.WIDTH, cell.getWidthAsString());                }                if (cell.getColspan() != 1) {                    write(HtmlTags.COLSPAN, String.valueOf(cell.getColspan()));                }                if (cell.getRowspan() != 1) {                    write(HtmlTags.ROWSPAN, String.valueOf(cell.getRowspan()));                }                if (cell.getMaxLines() == 1) {                	write(HtmlTags.STYLE, "white-space: nowrap;");                }                os.write(GT);                // contents                if (cell.isEmpty()) {                    write(NBSP);                } else {                    for (Iterator i = cell.getElements(); i.hasNext(); ) {                        write((Element) i.next(), indent + 1);                    }                }                // end tag                addTabs(indent);                if (cell.isHeader()) {                    writeEnd(HtmlTags.HEADERCELL);                }                else {                    writeEnd(HtmlTags.CELL);                }                return;            }            case Element.ROW:            {                Row row = (Row) element;                                // start tag                addTabs(indent);                writeStart(HtmlTags.ROW);                writeMarkupAttributes(markup);                os.write(GT);                // contents                Element cell;                for (int i = 0; i < row.getColumns(); i++) {                    if ((cell = (Element)row.getCell(i)) != null) {                        write(cell, indent + 1);                    }                }                // end tag                addTabs(indent);                writeEnd(HtmlTags.ROW);                return;            }            case Element.TABLE:            {            	Table table;            	try {            		table = (Table) element;            	}            	catch(ClassCastException cce) {            		try {						table = ((SimpleTable)element).createTable();					} catch (BadElementException e) {						throw new ExceptionConverter(e);					}            	}                table.complete();                // start tag                addTabs(indent);                writeStart(HtmlTags.TABLE);                writeMarkupAttributes(markup);                os.write(SPACE);                write(HtmlTags.WIDTH);                os.write(EQUALS);                os.write(QUOTE);                write(String.valueOf(table.getWidth()));                if (!table.isLocked()){                    write("%");                }                os.write(QUOTE);                String alignment = HtmlEncoder.getAlignment(table.getAlignment());                if (!"".equals(alignment)) {                    write(HtmlTags.ALIGN, alignment);                }                write(HtmlTags.CELLPADDING, String.valueOf(table.getPadding()));                write(HtmlTags.CELLSPACING, String.valueOf(table.getSpacing()));                if (table.getBorderWidth() != Rectangle.UNDEFINED) {                    write(HtmlTags.BORDERWIDTH, String.valueOf(table.getBorderWidth()));                }                if (table.getBorderColor() != null) {                    write(HtmlTags.BORDERCOLOR, HtmlEncoder.encode(table.getBorderColor()));                }                if (table.getBackgroundColor() != null) {                    write(HtmlTags.BACKGROUNDCOLOR, HtmlEncoder.encode(table.getBackgroundColor()));                }                os.write(GT);                // contents                Row row;                for (Iterator iterator = table.iterator(); iterator.hasNext(); ) {                    row = (Row) iterator.next();                    write(row, indent + 1);                }                // end tag                addTabs(indent);                writeEnd(HtmlTags.TABLE);                return;            }            case Element.ANNOTATION:            {                Annotation annotation = (Annotation) element;                writeComment(annotation.title() + ": " + annotation.content());                return;            }            case Element.IMGRAW:            case Element.JPEG:            case Element.JPEG2000:            case Element.IMGTEMPLATE:            {                Image image = (Image) element;                if (image.getUrl() == null) {                    return;                }                                // start tag                addTabs(indent);                writeStart(HtmlTags.IMAGE);                String path = image.getUrl().toString();                if (imagepath != null) {                    if (path.indexOf('/') > 0) {                        path = imagepath + path.substring(path.lastIndexOf('/') + 1);                    }                    else {                        path = imagepath + path;                    }                }                write(HtmlTags.URL, path);                if ((image.getAlignment() & Image.RIGHT) > 0) {                    write(HtmlTags.ALIGN, HtmlTags.ALIGN_RIGHT);                }                else if ((image.getAlignment() & Image.MIDDLE) > 0) {                    write(HtmlTags.ALIGN, HtmlTags.ALIGN_MIDDLE);                }                else {                    write(HtmlTags.ALIGN, HtmlTags.ALIGN_LEFT);                }                if (image.getAlt() != null) {                    write(HtmlTags.ALT, image.getAlt());                }                write(HtmlTags.PLAINWIDTH, String.valueOf(image.getScaledWidth()));                write(HtmlTags.PLAINHEIGHT, String.valueOf(image.getScaledHeight()));                writeMarkupAttributes(markup);                writeEnd();                return;            }                        default:                return;        }    }    /** * Writes the HTML representation of a section. * * @param   section     the section to write * @param   indent      the indentation * @throws IOException */        protected void writeSection(Section section, int indent) throws IOException {        if (section.getTitle() != null) {            int depth = section.getDepth() - 1;            if (depth > 5) {                depth = 5;            }            Properties styleAttributes = new Properties();            if (section.getTitle().hasLeading()) styleAttributes.setProperty(Markup.CSS_KEY_LINEHEIGHT, section.getTitle().getTotalLeading() + "pt");            // start tag            addTabs(indent);            writeStart(HtmlTags.H[depth]);            write(section.getTitle().getFont(), styleAttributes);            String alignment = HtmlEncoder.getAlignment(section.getTitle().getAlignment());            if (!"".equals(alignment)) {                write(HtmlTags.ALIGN, alignment);            }            writeMarkupAttributes(markup);            os.write(GT);            currentfont.push(section.getTitle().getFont());            // contents            for (Iterator i = section.getTitle().iterator(); i.hasNext(); ) {                write((Element)i.next(), indent + 1);            }            // end tag            addTabs(indent);            writeEnd(HtmlTags.H[depth]);            currentfont.pop();        }        for (Iterator i = section.iterator(); i.hasNext(); ) {            write((Element) i.next(), indent);        }    }        /**     * Writes the representation of a <CODE>Font</CODE>.     *     * @param font              a <CODE>Font</CODE>     * @param styleAttributes   the style of the font     * @throws IOException     */        protected void write(Font font, Properties styleAttributes) throws IOException {        if (font == null || !isOtherFont(font) /* || styleAttributes == null*/) return;        write(" ");        write(HtmlTags.STYLE);        write("=\"");        if (styleAttributes != null) {            String key;            for (Enumeration e = styleAttributes.propertyNames(); e.hasMoreElements(); ) {                key = (String)e.nextElement();                writeCssProperty(key, styleAttributes.getProperty(key));            }        }        if (isOtherFont(font)) {            writeCssProperty(Markup.CSS_KEY_FONTFAMILY, font.getFamilyname());                        if (font.getSize() != Font.UNDEFINED) {                writeCssProperty(Markup.CSS_KEY_FONTSIZE, font.getSize() + "pt");            }            if (font.getColor() != null) {                writeCssProperty(Markup.CSS_KEY_COLOR, HtmlEncoder.encode(font.getColor()));            }                        int fontstyle = font.getStyle();            BaseFont bf = font.getBaseFont();            if (bf != null) {                String ps = bf.getPostscriptFontName().toLowerCase();                if (ps.indexOf("bold") >= 0) {                    if (fontstyle == Font.UNDEFINED)                        fontstyle = 0;                    fontstyle |= Font.BOLD;                }                if (ps.indexOf("italic") >= 0 || ps.indexOf("oblique") >= 0) {                    if (fontstyle == Font.UNDEFINED)                        fontstyle = 0;                    fontstyle |= Font.ITALIC;                }            }            if (fontstyle != Font.UNDEFINED && fontstyle != Font.NORMAL) {                switch (fontstyle & Font.BOLDITALIC) {                    case Font.BOLD:                        writeCssProperty(Markup.CSS_KEY_FONTWEIGHT, Markup.CSS_VALUE_BOLD);                        break;                    case Font.ITALIC:                        writeCssProperty(Markup.CSS_KEY_FONTSTYLE, Markup.CSS_VALUE_ITALIC);                        break;                    case Font.BOLDITALIC:                        writeCssProperty(Markup.CSS_KEY_FONTWEIGHT, Markup.CSS_VALUE_BOLD);                        writeCssProperty(Markup.CSS_KEY_FONTSTYLE, Markup.CSS_VALUE_ITALIC);                        break;                }                                // CSS only supports one decoration tag so if both are specified                // only one of the two will display                if ((fontstyle & Font.UNDERLINE) > 0) {                    writeCssProperty(Markup.CSS_KEY_TEXTDECORATION, Markup.CSS_VALUE_UNDERLINE);                }                if ((fontstyle & Font.STRIKETHRU) > 0) {                    writeCssProperty(Markup.CSS_KEY_TEXTDECORATION, Markup.CSS_VALUE_LINETHROUGH);                }            }        }        write("\"");    }        /**     * Writes out a CSS property.     * @param prop a CSS property     * @param value the value of the CSS property     * @throws IOException     */    protected void writeCssProperty(String prop, String value) throws IOException {        write(new StringBuffer(prop).append(": ").append(value).append("; ").toString());    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -