Changeset 168


Ignore:
Timestamp:
03/10/08 12:50:17 (4 years ago)
Author:
jharrop
Message:

Create a font table part, if there isn't one in the document.

Location:
trunk/docx4j/src/main/java/org/docx4j
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/docx4j/src/main/java/org/docx4j/fonts/Substituter.java

    r166 r168  
    317317        } 
    318318         
     319         
    319320        public void populateFontMappings(Map documentFontNames, org.docx4j.wml.Fonts fonts ) throws Exception { 
    320321                 
     
    326327                 *     org.docx4j.wml.Fonts fonts = (org.docx4j.wml.Fonts)fontTablePart.getJaxbElement(); 
    327328                 *      
     329                 * If the document doesn't have a font table,  
     330                 *      
     331                 *              org.docx4j.openpackaging.parts.WordprocessingML.FontTablePart fontTable  
     332                 *                      = new org.docx4j.openpackaging.parts.WordprocessingML.FontTablePart(); 
     333                 *              fontTable.unmarshalDefaultFonts(); 
     334                 *            
    328335                 * We need to make a map out of it.     
    329336                 */  
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/packages/WordprocessingMLPackage.java

    r166 r168  
    265265                //     - do this in a general way, since docx4all needs this as well to display fonts            
    266266                fontSubstituter = new Substituter(); 
    267                 FontTablePart fontTablePart= this.getMainDocumentPart().getFontTablePart();              
    268                 org.docx4j.wml.Fonts fonts = (org.docx4j.wml.Fonts)fontTablePart.getJaxbElement();               
     267                org.docx4j.wml.Fonts fonts = null; 
     268                FontTablePart fontTablePart= this.getMainDocumentPart().getFontTablePart();      
     269                 
     270                if (fontTablePart!=null) { 
     271                        fonts = (org.docx4j.wml.Fonts)fontTablePart.getJaxbElement(); 
     272                } else { 
     273                        log.warn("FontTable missing; creating default part."); 
     274                        fontTablePart= new org.docx4j.openpackaging.parts.WordprocessingML.FontTablePart(); 
     275                        fontTablePart.unmarshalDefaultFonts();                                   
     276                } 
    269277                 
    270278                fontSubstituter.populateFontMappings(fontsInUse, fonts); 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/parts/WordprocessingML/FontTablePart.java

    r145 r168  
    2323 
    2424//import javax.xml.bind.JAXBElement; 
     25import java.io.IOException; 
     26 
    2527import javax.xml.bind.JAXBException; 
    2628import javax.xml.bind.Unmarshaller; 
     
    100102         
    101103    } 
     104     
     105    /** 
     106     * Unmarshal a default font table, useful when creating this 
     107     * part from scratch.  
     108     * 
     109     * @return the newly created root object of the java content tree  
     110     * 
     111     * @throws JAXBException  
     112     *     If any unexpected errors occur while unmarshalling 
     113     */ 
     114    public Object unmarshalDefaultFonts() throws JAXBException { 
     115           
     116                java.io.InputStream is = null; 
     117                        try { 
     118                                // Works in Eclipse - not absence of leading '/' 
     119                                is = org.docx4j.utils.ResourceUtils.getResource("org/docx4j/openpackaging/parts/WordprocessingML/fontTable.xml"); 
     120                        } catch (IOException e) { 
     121                                // TODO Auto-generated catch block 
     122                                e.printStackTrace(); 
     123                        }                
     124         
     125        return unmarshal( is );          
     126    } 
     127     
    102128 
    103129} 
Note: See TracChangeset for help on using the changeset viewer.