2013-05-30 3 views
2

При использовании летающей тарелки, чтобы преобразовать в верстку в PDF, я получаю следующее исключение:Летающие блюдца и CSS

java.io.IOException: Stream closed 
      at java.io.BufferedInputStream.getInIfOpen(Unknown Source) 
      at java.io.BufferedInputStream.read1(Unknown Source) 
      at java.io.BufferedInputStream.read(Unknown Source) 
      at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) 
      at sun.nio.cs.StreamDecoder.implRead(Unknown Source) 
      at sun.nio.cs.StreamDecoder.read(Unknown Source) 
      at java.io.InputStreamReader.read(Unknown Source) 
at org.xhtmlrenderer.css.parser.Lexer.zzRefill(Lexer.java:1634) 
      at org.xhtmlrenderer.css.parser.Lexer.yylex(Lexer.java:1865) 
at org.xhtmlrenderer.css.parser.CSSParser.next(CSSParser.java:1778) 
at org.xhtmlrenderer.css.parser.CSSParser.la(CSSParser.java:1790) 
at org.xhtmlrenderer.css.parser.CSSParser.stylesheet(CSSParser.java:157) 
at org.xhtmlrenderer.css.parser.CSSParser.parseStylesheet(CSSParser.java:87) 
at org.xhtmlrenderer.context.StylesheetFactoryImpl.parse(StylesheetFactoryImpl.java:78) 
at org.xhtmlrenderer.context.StylesheetFactoryImpl.parse(StylesheetFactoryImpl.java:95) 
atorg.xhtmlrenderer.context.StylesheetFactoryImpl.getStylesheet(StylesheetFactoryImpl.java:174) 
at org.xhtmlrenderer.context.StyleReference.readAndParseAll(StyleReference.java:123) 
at org.xhtmlrenderer.context.StyleReference.setDocumentContext(StyleReference.java:107) 
at org.xhtmlrenderer.pdf.ITextRenderer.setDocument(ITextRenderer.java:175) 
at org.xhtmlrenderer.pdf.ITextRenderer.setDocument(ITextRenderer.java:142) 

я смог просмотреть содержимое файла CSS с помощью ссылки: https: //.../file.css, и я создал хранилище ключей и сертификат на сервере JBOSS и убедился, что ssl.conf указывает на них (redhat). Кажется, проблема связана с https, но понятия не имею, как справиться с этим. Кто-нибудь испытал эту проблему раньше?

Спасибо, --Abdul

+0

Без какого-либо кода очень сложно сказать, где проблема. – ollo

+0

Я не уверен, какой код для публикации, потому что кажется, что это известная проблема, но пока у нее нет решения. Мне удалось просмотреть файл css, который находится в моем .ear-файле по ссылке напрямую, но когда я делаю PDF-файл, он не может получить файл css (даже если он включен), а стиль PDF не показывает , Это отлично работает в разных средах, кроме одного. Вот почему это похоже на проблему, связанную с окружающей средой, чем с кодом. –

+0

Вы проходили путь CSS как URI? У меня тоже была эта проблема, но я думаю, что это было причиной ошибки синтаксиса в html. Можете ли вы проверить (и, возможно, «очистить») свой ввод? – ollo

ответ

4

Это слишком поздно, но кто-то может найти его полезным. Вот как я решил мою проблему:

  1. Включил Logging (Turning on Flying Saucer java.util.logging Output)

    System.getProperties().setProperty("xr.util-logging.loggingEnabled", "true"); 
    XRLog.setLoggingEnabled(true); 
    
  2. Читать журналы org.xhtmlrenderer.swing.NaiveUserAgent для

    общественного Струнный resolveURI (String URI) { /**/ }

(Если вы можете удаленно отлаживать его/запускать JBoss локально - поставьте точку останова там, и вы увидите всю загрузку шрифта/ресурса/css)

В моем случае оказалось, что baseURL неверен для рендеринга. Вы можете передать его визуализатору при анализе документа.

renderer.setDocumentFromString(generatedHtml, getBaseUrl()); 

А чтобы получить действительный BaseUrl на моем окр я использовал:

"jndi:"+servletContext.getResource("/").getPath() 

(оказался, на самом деле вы можете получить доступ к статическим файлам в развернутом состоянии войны с этим «JNDI:». Приставка)

Смежные вопросы