FlyingSaucer: конвертировать HTML-документ в PDF, игнорируя внешний CSS?

Я использую следующее для преобразования HTML в PDF:

InputStream convert(InputStream fileInputStream) {

        PipedInputStream inputStream = new PipedInputStream()
        PipedOutputStream outputStream = new PipedOutputStream(inputStream)
        new Thread({
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            factory.setNamespaceAware(false);
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.parse(fileInputStream)

            ITextRenderer renderer = new ITextRenderer()
            renderer.setDocument(document, "")
             renderer.layout()
            renderer.createPDF(outputStream)
        }).start()

        return inputStream
    }

Судя по документации, я должен где-то установить преобразователь «User Agent», но я не уверен, где именно. Кто-нибудь знает, как игнорировать внешний CSS в документе?


person Stefan Kendall    schedule 14.03.2011    source источник


Ответы (1)


Не тот же вопрос, но мой ответ на него тоже будет работать здесь: >Разрешение защищенных ресурсов с помощью Flying Saucer (ITextRenderer)

Переопределите этот метод:

public CSSResource getCSSResource(String uri) {
    return new CSSResource(resolveAndOpenStream(uri));
}

с участием

public CSSResource getCSSResource(String uri) {
    return new CSSResource(new ByteArrayInputStream([] as byte[]));
}
person Adam    schedule 15.03.2011
comment
Как не решить? Я попытался перенастроить нуль, но это дает исключение нулевого указателя. java.lang.NullPointerException в org.xhtmlrenderer.context.StylesheetFactoryImpl.parse(StylesheetFactoryImpl.java:93) - person Stefan Kendall; 15.03.2011
comment
Да, после обновления вы должны вернуть CSSResource с пустым InputStream. - person Adam; 15.03.2011