最近我遇到了PDF生成的问题,一些字形用'#'表示。我制作了自己的fop配置文件并尝试了这个:
fopFactory
但似乎setUserConfig
没有方法fopFactory.getFontManager().setFontBaseURL(fontBase);
。
我也尝试过这个:
FontManager
但结果相同 - setFontBaseURL
没有方法<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>fop</artifactId>
<version>2.1</version>
</dependency>
。
我的maven依赖是:
newInstance()
尝试手动添加jar,但这并没有改变它。
发现line #41如何使用用户配置,但斗争是我需要在构造函数 // setup xml input source
String xml = object.toXml();
StreamSource xmlSource = new StreamSource(new ByteArrayInputStream(xml.getBytes("UTF-8")));
// setup xsl stylesheet source
File xslFile = new File(stylesheetPath);
FileInputStream xslFileStream = new FileInputStream(xslFile);
StreamSource xslSource = new StreamSource(xslFileStream);
// get transformer
TransformerFactory tfactory = TransformerFactory.newInstance();
Transformer transformer = tfactory.newTransformer(xslSource);
// setup FOP
FopFactory fopFactory = FopFactory.newInstance(xslFile);
FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
foUserAgent.setProducer(this.getClass().getName());
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, pdfContent);
// perform transformation
Result res = new SAXResult(fop.getDefaultHandler());
transformer.transform(xmlSource, res);
中使用xsl模板。如何设置xsl(注意:NOT XSL-FO!)和config?
这是我的代码片段:
$filter
答案 0 :(得分:0)
正如lfurini
所指出的,setFontBaseURL()
在2.0之前的Apache FOP版本中消失了。现在,大多数程序配置都使用FopFactoryBuilder完成。另请参见Apache's guide to upgrading to FOP 2.1。
答案 1 :(得分:-1)
FOPFactoryConfigurator
类已被删除,fopFactory.setUserConfig(cfg)
不再可用。这是您使用的版本(fop的1.x或更早版本)