2016-08-25 2 views
0

Я использую Flying Saucer для преобразования XHTML в PDF-файлы. Моя проблема в том, что у меня есть некоторые недостающие турецкие символы в PDF. Но я не понимаю, у меня нет проблем в тестах junit. Я могу конвертировать файлы XHTML в PDF со всеми турецкими символами без каких-либо проблем. Но если я сделаю то же самое на Applicaton, развернутом на Tomcat, все турецкие символы пропадут.Flying Saucer добавляет встроенный шрифт, не работающий на tomcat

Я сделал некоторые отладки и выяснил, что '/fonts/arialuni.ttf' встречается в обоих случаях. Я нашел некоторые связанные потоки и itext doc и попробовал их все.

http://developers.itextpdf.com/question/how-can-i-load-font-web-infresourcesfontsfoobarttf

Flying Saucer font for unicode characters

код для новообращенного и добавления шрифта

  String path2 = "/fonts/arialuni.ttf"; 

      //FontFactory.register(path2); 
      ITextRenderer renderer = new ITextRenderer(); 
      // renderer.getFontResolver().addFontDirectory(path2,true); 

      renderer.getFontResolver().addFont(path2, BaseFont.IDENTITY_H,BaseFont.EMBEDDED); 


      renderer.setDocumentFromString(docElem.html()); 
      renderer.layout(); 
      renderer.createPDF(os); 
      renderer.finishPDF(); 
      baoOut.flush(); 

и применяются также следующие за CSS. Но все тот же результат.

@font-face { 
 
    src: url('arialuni.ttf'); <!--src: url('/fonts/arialuni.ttf'); --> 
 
    -fs-pdf-font-embed: embed; 
 
    -fs-pdf-font-encoding: Identity-H; 
 
} 
 

 
body { 
 
    font-family: Arial Unicode MS, Lucida Sans Unicode, Arial, verdana, arial, helvetica, sans-serif; 
 
    font-size: 8.8pt; 
 
}

Кто-нибудь знает, почему arialuni.tff найден, но не используется на сервере Tomcat?

+0

Пожалуйста, добавьте свое решение (все позади EDIT) в качестве отдельного ответа и принимайте его - иначе люди думают, что это без ответа ... – Lonzak

ответ

0

окончательно решил. в некоторых местах я использовал

InputStream htmlIS = IOUtils.toInputStream(invoiceHtml); 

вместо

InputStream htmlIS = IOUtils.toInputStream(invoiceHtml, "UTF-8"); 

, что вызывает проблему.

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