FopFactory类型的方法newInstance(FopFactoryConfig)不适用于参数() [英] The method newInstance(FopFactoryConfig) in the type FopFactory is not applicable for the arguments ()

查看:477
本文介绍了FopFactory类型的方法newInstance(FopFactoryConfig)不适用于参数()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对于使用XSL-Apache FOP(Java),我有将XML转换为PDF文档的要求.正在收到以下错误:FopFactory类型的方法newInstance(FopFactoryConfig)不适用于以下行的参数()

I have a requirement to convert XML to PDF document for that am using XSL - Apache FOP (Java). Am getting the below error The method newInstance(FopFactoryConfig) in the type FopFactory is not applicable for the arguments () for the below line

// create an instance of fop factory
    FopFactory fopFactory = FopFactory.newInstance();

请找到我的完整Java代码:

Please find my full java code:

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;
}

请在使用以下查找依赖项:

Please find the below dependencies am using :

<!-- 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或配置文件,例如

Check the API documentation for your version of Apache FOP, I think you need to provide a base URI or a configuration file e.g.

FopFactory fopFactory = FopFactory.newInstance(new File(".").toURI());

将当前工作目录的URI设置为基本URI.

to set up the current working directory's URI as the base URI.

这篇关于FopFactory类型的方法newInstance(FopFactoryConfig)不适用于参数()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆