@Override public void save() throws IOException { if ( document != null ) { document.close(); } super.save(); }
@Override public void visit( TextTableOfContentElement ele ) { inTableOfContent = true; super.visit( ele ); inTableOfContent = false; }
@Override public final void visit( DrawImageElement ele ) { String href = ele.getXlinkHrefAttribute(); if ( StringUtils.isNotEmpty( href ) ) { IImageExtractor extractor = getExtractor(); boolean needImageStream = isNeedImageStream() || extractor != null; byte[] imageStream = needImageStream ? odfDocument.getPackage().getBytes( href ) : null; if ( extractor != null && imageStream != null ) { try { extractor.extract( href, imageStream ); } catch ( Throwable e ) { LOGGER.log( Level.SEVERE, "Error while extracting the image " + href, e ); } } visitImage( ele, href, imageStream ); } }
@Override public void visit( OdfElement ele ) { Node node = ele.getFirstChild(); int nodeType = -1; while ( node != null ) { nodeType = node.getNodeType(); switch ( nodeType ) { case Node.ELEMENT_NODE: OdfElement element = (OdfElement) node; element.accept( this ); break; case Node.TEXT_NODE: processTextNode( (Text) node ); } node = node.getNextSibling(); } }
@Override public void visit( OfficeMasterStylesElement ele ) { super.visit( ele ); }
@Override public void save() throws IOException { if ( writer != null ) { xhtml.save( writer ); } else { xhtml.save( out ); } super.save(); }
@Override public void visit( OfficeTextElement ele ) { this.parseOfficeTextElement = true; currentContainer = document; super.visit( ele ); this.parseOfficeTextElement = false; }
protected void doConvert( OdfDocument document, OutputStream out, Writer writer, T options ) throws ODFConverterException, IOException { ElementVisitorConverter visitor = null; visitor = createElementVisitorConverter( document, out, writer, options ); if ( visitor != null ) { try { document.getContentRoot().accept( visitor ); } catch ( Exception e ) { throw new ODFConverterException( e ); } visitor.save(); } }
@Override public void visit( TextIndexBodyElement ele ) { super.visit( ele ); }
@Override public void visit( TableTableHeaderRowsElement ele ) { // we want to count table rows nested inside table header rows element // to determine how many header rows we have in current table currentTable.beginTableHeaderRows(); super.visit( ele ); currentTable.endTableHeaderRows(); }
@Override public void visit( TextBookmarkStartElement ele ) { createAndAddChunk( ODFUtils.TAB_STR, ele.getTextNameAttribute(), false ); super.visit( ele ); }
private void addITextContainer( OdfElement ele, IStylableContainer newContainer, boolean add ) { IStylableContainer oldContainer = currentContainer; try { currentContainer = newContainer; super.visit( ele ); if ( add ) { oldContainer.addElement( newContainer.getElement() ); } } finally { currentContainer = oldContainer; } }
private void endVisit( String elementName, OdfElement element, boolean addNbsp ) { currentXHTMLContent.endElementNotEnclosed(); super.visit( element ); if ( addNbsp ) { currentXHTMLContent.setText( " " ); } currentXHTMLContent.endElement( elementName ); }
@Override public void visit( TableTableRowElement ele ) { Style currentRowStyle = getStyle( ele, null ); if ( currentRowStyle != null ) { currentTable.applyStyles( currentRowStyle ); } currentTable.beginTableRow( currentRowStyle ); super.visit( ele ); currentTable.endTableRow(); }
/** * Generate XHTML page footer + header */ @Override public void visit( StyleMasterPageElement ele ) { String name = ele.getStyleNameAttribute(); String pageLayoutName = ele.getStylePageLayoutNameAttribute(); String nextStyleName = ele.getStyleNextStyleNameAttribute(); currentMasterPage = new StylableMasterPage( name, pageLayoutName, nextStyleName ); document.addMasterPage( currentMasterPage ); super.visit( ele ); currentMasterPage = null; }
/** * Generate XHTML page footer + header */ @Override public void visit( StyleMasterPageElement ele ) { currentMasterPageLayoutName = ele.getStylePageLayoutNameAttribute(); if ( masterPageLayoutName == null ) { masterPageLayoutName = currentMasterPageLayoutName; xhtml.getPageBeforeBody().setBodyClass( xhtml.getStyleEngine().getClassName( OdfStyleFamily.List.getName(), masterPageLayoutName ) ); } super.visit( ele ); }
@Override public void visit( StyleFooterElement ele ) { StylableHeaderFooter footer = document.createHeaderFooter( false ); Style style = document.getStyleMasterPage( currentMasterPage ); if ( style != null ) { document.applyStyles( style ); footer.applyStyles( style ); } currentMasterPage.setFooter( footer ); StylableTableCell tableCell = footer.getTableCell(); currentContainer = tableCell; super.visit( ele ); footer.flush(); currentContainer = null; }
@Override public void visit( StyleHeaderElement ele ) { StylableHeaderFooter header = document.createHeaderFooter( true ); Style style = document.getStyleMasterPage( currentMasterPage ); if ( style != null ) { document.applyStyles( style ); header.applyStyles( style ); } currentMasterPage.setHeader( header ); StylableTableCell tableCell = header.getTableCell(); currentContainer = tableCell; super.visit( ele ); header.flush(); currentContainer = null; }