Apache FOP 2.0:.ttf到.xml的转换

时间:2017-08-03 09:48:41

标签: java apache fonts apache-fop

我正在尝试从.xml获取.ttf,以便在Apache FOP中嵌入字体以进行PDF /转换(没有.xml的PDF转换工作)。你能帮我做一下转换吗?以下是我到目前为止尝试的内容:

我找到几个网站,说明转换是通过在包含我的.ttf的目录中打开的CLI中输入以下行来完成的:

java -cp PATH ; PATH\avalon-framework.jar org.apache.fop.fonts.apps.TTFReader arial.ttf arial.xml

使用PATH指向fop.jar的路径。 它不起作用并回复我:错误:无法找到主要的课程

所以我尝试使用TTFReader

     TTFReader read=new TTFReader();
     read.constructFontXML(read.loadTTF(chemin+"Fonts/ttf/arial.ttf", "Arial",true,true), "Arial", "Arial", "C:/Fonts/arial.ttf"  ,chemin+"Fonts/ttf/arial.ttf", true, "Arial");

但我不理解所需的所有输入:

constructFontXML(TTFFile ttf,String fontName, String className, String resource, String file,boolean isCid, String ttcName)
loadTTF(String fileName, String fontName, boolean useKerning, boolean useAdvanced)

我不知道如何正确地设置布尔值的信息,以及ClassName以及ressource已经存在的目的path是什么目的。我的代码给了我.xml,但我认为它们无效。

1 个答案:

答案 0 :(得分:0)

这个问题被lfurini绕过,因为我最终不需要那些.xml,但是这里有一些代码可以呈现.xml,即使我怀疑它们是以正确的方式配置的:

         String[] fonts={"Arial", "Courier", "Times New Roman"};
         String[] fontsR={"arial","courier","times"};
         String[] styles={""," Bold"," Italic"," Bold Italic"};
         String[] stylesR={"","bd","i","bi"};
         for (int i=0;i<fonts.length;i++){
             for (int j=0;j<styles.length;j++){
                 String nameFont=fonts[i]+styles[j];
                 String nameTTF=fontsR[i]+stylesR[j];
                 TTFReader read=new TTFReader();
                 Document document=read.constructFontXML(read.loadTTF(chemin+"Fonts/ttf/"+nameTTF+".ttf", nameFont,true,true), nameFont, fonts[i], "C:/Fonts/ttf/"+nameTTF+".ttf"  ,"C:/Fonts/ttf/"+nameTTF+".ttf", true, fonts[i]);
                 Transformer transformer = TransformerFactory.newInstance().newTransformer();
                 Result output = new StreamResult(new File(chemin+"Fonts/xml/"+nameTTF+".xml"));
                 Source input = new DOMSource(document);
                 transformer.transform(input, output);