FopFactory 类型中的方法 newInstance(FopFactoryConfig) 不适用于参数 ()
The method newInstance(FopFactoryConfig) in the type FopFactory is not applicable for the arguments ()
我需要将 XML 转换为 PDF 文档,因为我正在使用 XSL - Apache FOP (Java)。我收到以下错误 FopFactory 类型中的方法 newInstance(FopFactoryConfig) 不适用于以下行的参数 ()
// create an instance of fop factory
FopFactory fopFactory = FopFactory.newInstance();
请找到我的完整 java 代码:
public static void main (String args[])
{
// the XSL FO file
File xsltfile = new File("sample2.xsl");
// the XML file from which we take the name
StreamSource source = new StreamSource(new File("sample2.xml"));
// creation of transform source
StreamSource transformSource = new StreamSource(xsltfile);
// create an instance of fop factory
FopFactory fopFactory = FopFactory.newInstance(); // Error throwing in this line..
// a user agent is needed for transformation
FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
// to store output
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
Transformer xslfoTransformer;
try
{
xslfoTransformer = getTransformer(transformSource);
// Construct fop with desired output format
Fop fop;
try
{
fop = fopFactory.newFop
(MimeConstants.MIME_PDF, foUserAgent, outStream);
// Resulting SAX events (the generated FO)
// must be piped through to FOP
Result res = new SAXResult(fop.getDefaultHandler());
// Start XSLT transformation and FOP processing
try
{
// everything will happen here..
xslfoTransformer.transform(source, res);
// if you want to get the PDF bytes, use the following code
//return outStream.toByteArray();
// if you want to save PDF file use the following code
File pdffile = new File("Result.pdf");
OutputStream out = new java.io.FileOutputStream(pdffile);
out = new java.io.BufferedOutputStream(out);
FileOutputStream str = new FileOutputStream(pdffile);
str.write(outStream.toByteArray());
str.close();
out.close();
}
catch (TransformerException e) {
throw e;
}
}
catch (FOPException e) {
throw e;
}
}
catch (TransformerConfigurationException e)
{
throw e;
}
catch (TransformerFactoryConfigurationError e)
{
throw e;
}
}
private static Transformer getTransformer(StreamSource streamSource)
{
// setup the xslt transformer
net.sf.saxon.TransformerFactoryImpl impl =
new net.sf.saxon.TransformerFactoryImpl();
try {
return impl.newTransformer(streamSource);
} catch (TransformerConfigurationException e) {
e.printStackTrace();
}
return null;
}
请查找正在使用的以下依赖项:
<!-- https://mvnrepository.com/artifact/org.apache.xmlgraphics/fop -->
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>fop</artifactId>
<version>2.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/net.sf.saxon/Saxon-HE -->
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>Saxon-HE</artifactId>
<version>9.8.0-11</version>
</dependency>
查看您的 Apache FOP 版本的 API 文档,我认为您需要提供基本 URI 或配置文件,例如
FopFactory fopFactory = FopFactory.newInstance(new File(".").toURI());
将当前工作目录的 URI 设置为基本 URI。
我需要将 XML 转换为 PDF 文档,因为我正在使用 XSL - Apache FOP (Java)。我收到以下错误 FopFactory 类型中的方法 newInstance(FopFactoryConfig) 不适用于以下行的参数 ()
// create an instance of fop factory
FopFactory fopFactory = FopFactory.newInstance();
请找到我的完整 java 代码:
public static void main (String args[])
{
// the XSL FO file
File xsltfile = new File("sample2.xsl");
// the XML file from which we take the name
StreamSource source = new StreamSource(new File("sample2.xml"));
// creation of transform source
StreamSource transformSource = new StreamSource(xsltfile);
// create an instance of fop factory
FopFactory fopFactory = FopFactory.newInstance(); // Error throwing in this line..
// a user agent is needed for transformation
FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
// to store output
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
Transformer xslfoTransformer;
try
{
xslfoTransformer = getTransformer(transformSource);
// Construct fop with desired output format
Fop fop;
try
{
fop = fopFactory.newFop
(MimeConstants.MIME_PDF, foUserAgent, outStream);
// Resulting SAX events (the generated FO)
// must be piped through to FOP
Result res = new SAXResult(fop.getDefaultHandler());
// Start XSLT transformation and FOP processing
try
{
// everything will happen here..
xslfoTransformer.transform(source, res);
// if you want to get the PDF bytes, use the following code
//return outStream.toByteArray();
// if you want to save PDF file use the following code
File pdffile = new File("Result.pdf");
OutputStream out = new java.io.FileOutputStream(pdffile);
out = new java.io.BufferedOutputStream(out);
FileOutputStream str = new FileOutputStream(pdffile);
str.write(outStream.toByteArray());
str.close();
out.close();
}
catch (TransformerException e) {
throw e;
}
}
catch (FOPException e) {
throw e;
}
}
catch (TransformerConfigurationException e)
{
throw e;
}
catch (TransformerFactoryConfigurationError e)
{
throw e;
}
}
private static Transformer getTransformer(StreamSource streamSource)
{
// setup the xslt transformer
net.sf.saxon.TransformerFactoryImpl impl =
new net.sf.saxon.TransformerFactoryImpl();
try {
return impl.newTransformer(streamSource);
} catch (TransformerConfigurationException e) {
e.printStackTrace();
}
return null;
}
请查找正在使用的以下依赖项:
<!-- https://mvnrepository.com/artifact/org.apache.xmlgraphics/fop -->
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>fop</artifactId>
<version>2.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/net.sf.saxon/Saxon-HE -->
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>Saxon-HE</artifactId>
<version>9.8.0-11</version>
</dependency>
查看您的 Apache FOP 版本的 API 文档,我认为您需要提供基本 URI 或配置文件,例如
FopFactory fopFactory = FopFactory.newInstance(new File(".").toURI());
将当前工作目录的 URI 设置为基本 URI。