PDF格式的阿拉伯字符

时间:2015-04-26 07:57:54

标签: java apache-fop docx4j

使用Docx4j(3.2.0),尝试使用' Docx4J.toFO'从docx生成PDF。 PDF中缺少阿拉伯字符。

private static void createTestPDF() throws Exception{
  FOSettings foSettings = Docx4J.createFOSettings();
  InputStream is = new FileInputStream(new File("testarabic.docx"));
  WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(is);

  //Print all available physical fonts
  PhysicalFonts.discoverPhysicalFonts();
  Map<String, PhysicalFont> physicalFonts = PhysicalFonts.getPhysicalFonts();
  Iterator<Entry<String, PhysicalFont>> availableFonts = physicalFonts.entrySet().iterator();
  while(availableFonts.hasNext()) {
     Entry<String, PhysicalFont> font = availableFonts.next();
     String key = font.getKey();
     PhysicalFont pFont = font.getValue();
     System.out.println("Key is " + key + ";; Name " + pFont.getName());
  }

  Mapper fontMapper = new IdentityPlusMapper();

  PhysicalFont font  = PhysicalFonts.get("Arial Unicode MS");
  fontMapper.put("Times New Roman", font);

  wordMLPackage.setFontMapper(fontMapper);

  foSettings.setWmlPackage(wordMLPackage);

  OutputStream pdfOutputStream = new FileOutputStream("testarabic.pdf");
  System.out.println(foSettings.getSettings());
  Docx4J.toFO(foSettings, pdfOutputStream, Docx4J.FLAG_EXPORT_PREFER_XSL);

  System.out.println(" Done !!!!");

}

Attached documents

环境:Windows 7 Java版本:1.6 Fop:1.1 Docx4j:3.2.0

请帮忙。

0 个答案:

没有答案