Package docx4j.convert

Source Code of docx4j.convert.SampleDocument

package docx4j.convert;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import javax.xml.bind.JAXBException;

import org.docx4j.XmlUtils;
import org.docx4j.fonts.PhysicalFont;
import org.docx4j.fonts.PhysicalFonts;
import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;

/** This class generates a sample document in case no
*  document has been passed.
*/
public class SampleDocument {
   
  public static void createContent(MainDocumentPart wordDocumentPart ) {
    /*
     * NB, this currently works nicely with
     * viaIText, and viaXSLFO (provided
     * you view with Acrobat Reader .. it
     * seems to overwhelm pdfviewer, which
     * is weird, since viaIText works in both).
     */
   
    try {
      // Do this explicitly, since we need
      // it in order to create our content
      PhysicalFonts.discoverPhysicalFonts();            
                             
      Map<String, PhysicalFont> physicalFontMap = PhysicalFonts.getPhysicalFonts();     
      Iterator physicalFontMapIterator = physicalFontMap.entrySet().iterator();
      while (physicalFontMapIterator.hasNext()) {
          Map.Entry pairs = (Map.Entry)physicalFontMapIterator.next();
          if(pairs.getKey()==null) {
            pairs = (Map.Entry)physicalFontMapIterator.next();
          }
          String fontName = (String)pairs.getKey();
          PhysicalFont pf = (PhysicalFont)pairs.getValue();
         
          System.out.println("Added paragraph for " + fontName);
          addObject(wordDocumentPart, sampleText, fontName );
 
          // bold, italic etc
          PhysicalFont pfVariation = PhysicalFonts.getBoldForm(pf);
          if (pfVariation!=null) {
            addObject(wordDocumentPart, sampleTextBold, pfVariation.getName() );
          }
          pfVariation = PhysicalFonts.getBoldItalicForm(pf);
          if (pfVariation!=null) {
            addObject(wordDocumentPart, sampleTextBoldItalic, pfVariation.getName() );
          }
          pfVariation = PhysicalFonts.getItalicForm(pf);
          if (pfVariation!=null) {
            addObject(wordDocumentPart, sampleTextItalic, pfVariation.getName() );
          }
         
      }
    } catch (Exception e) {
      e.printStackTrace();
    }           
   
  }
 
  static void addObject(MainDocumentPart wordDocumentPart, String template, String fontName ) throws JAXBException {
   
      HashMap substitution = new HashMap();
      substitution.put("fontname", fontName);
      Object o = XmlUtils.unmarshallFromTemplate(template, substitution);
      wordDocumentPart.addObject(o);           
   
  }
 
  final static String sampleText = "<w:p xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\">"
    +"<w:r>"
    +"<w:rPr>"
      +"<w:rFonts w:ascii=\"${fontname}\" w:eastAsia=\"${fontname}\" w:hAnsi=\"${fontname}\" w:cs=\"${fontname}\" />"
    +"</w:rPr>"
    +"<w:t xml:space=\"preserve\">${fontname}</w:t>"
  +"</w:r>"
  +"</w:p>";
  final static String sampleTextBold =  "<w:p xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\">"  +"<w:r>"
    +"<w:rPr>"
      +"<w:rFonts w:ascii=\"${fontname}\" w:eastAsia=\"${fontname}\" w:hAnsi=\"${fontname}\" w:cs=\"${fontname}\" />"
      +"<w:b />"
    +"</w:rPr>"
    +"<w:t>${fontname} bold;</w:t>"
  +"</w:r>"
  +"</w:p>";
  final static String sampleTextItalic =  "<w:p xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\">"  +"<w:r>"
    +"<w:rPr>"
      +"<w:rFonts w:ascii=\"${fontname}\" w:eastAsia=\"${fontname}\" w:hAnsi=\"${fontname}\" w:cs=\"${fontname}\" />"
      +"<w:i />"
    +"</w:rPr>"
    +"<w:t>${fontname} italic; </w:t>"
  +"</w:r>"
  +"</w:p>";
  final static String sampleTextBoldItalic ="<w:p xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\">"
    +"<w:r>"
    +"<w:rPr>"
      +"<w:rFonts w:ascii=\"${fontname}\" w:eastAsia=\"${fontname}\" w:hAnsi=\"${fontname}\" w:cs=\"${fontname}\" />"
      +"<w:b />"
      +"<w:i />"
    +"</w:rPr>"
    +"<w:t>${fontname} bold italic</w:t>"
  +"</w:r>"
  +"</w:p>";

}
TOP

Related Classes of docx4j.convert.SampleDocument

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.