javaapache-poixwpf

Apache POI - How to set character spacing for XWPFRun


I need to create an XWPFRun with character spacing expanded by 1 pt. I tried the methods setCharacterSpacing and setKerning but to no avail. I also found no code examples or documentation for either method.

Any advice?


Solution

  • For me XWPFRun.setCharacterSpacing works. What one needs to know is that the measurement unit is TWIP - twentieths of an inch point. So 1*20 is 1 pt.

    Example:

    import java.io.File;
    import java.io.FileOutputStream;
    
    import org.apache.poi.xwpf.usermodel.*;
    
    public class CreateXWPFRunCharacterSpacing {
        
     public static void main(String[] args) throws Exception {
    
      XWPFDocument document = new XWPFDocument();
    
      XWPFParagraph paragraph = document.createParagraph();
      XWPFRun run = paragraph.createRun();  
      run.setText("This is sample text to compare character spacing.");
    
      paragraph = document.createParagraph();
      run = paragraph.createRun();  
      run.setText("This is sample text to compare character spacing.");
      run.setCharacterSpacing(1*20); // measurement unit is TWIPS - twentieths of a point. So 1*20 is 1 pt.
    
      FileOutputStream out = new FileOutputStream("CreateXWPFRunCharacterSpacing.docx");
      document.write(out);
      out.close();
      document.close();
    
     }
    }