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。