2016-04-25 4 views
0

Я использую Flying Saucer 9.0.9 (это то же самое на 9.0.8), и я получаю странное поведение при использовании настраиваемого шрифта с помощью «IDENTITY-H "кодирование. Когда я использую эту кодировку, я получаю размытость и неповторимый характер во всем моем pdf. При использовании шрифта Arial Unicode MS все работает как ожидалось (но я не могу использовать его из-за проблем с лицензированием), с любым другим шрифтом я не имел успеха. В результате использования FreeSans: enter image description hereHTML в PDF с использованием пользовательского шрифта (Identity-H)

Как я добавляю шрифт:

ITextRenderer iTextRenderer = new ITextRenderer(); 
ITextFontResolver iTextFontResolver = iTextRenderer.getFontResolver(); 
iTextFontResolver.addFont("templates/FreeSans.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 

HTML-:

<?xml version="1.0"?> 
<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <style> 
    * { 
     font-family: FreeSans; 
    } 
    </style> 
</head> 
<body> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
    <p>Test Great White Fox Jumps Over The Hedge?</p> 

    ĐĕĞĦķŔŶ 
</body> 
</html> 

Как я создавать PDF:

iTextRenderer.setDocument(new File(getClass().getClassLoader().getResource("templates/test.html").getFile())); 
iTextRenderer.layout(); 
final FileOutputStream fs = new FileOutputStream("C://temp//temp.pdf"); 
iTextRenderer.createPDF(fs); 

При использовании различной кодировки (например: WINANSI) первая строка текста - ren правильно, но, очевидно, вторая строка - нет. Мне действительно нужно иметь возможность создавать UNICODE (IDENTITY-H) PDF-файлы.

Вы можете скачать результат PDF по ссылке ниже: download pdf from dropbox

Любая помощь очень ценится.

ОБНОВЛЕНИЕ: По-видимому, это не имело ничего общего с iText или Flying Saucer. Наш сборник Maven строит единую толстую банку, шрифт также включен в эту банку. Но во время копирования из файловой системы в банку шрифт был поврежден.

+0

Я попытался воспроизвести проблему, но когда я создаю PDF на основе вашего HTML, результат является идеальным. Вы уверены, что файл шрифта (FreeSans.ttf) не поврежден? – obourgain

+0

@obourgain Я уверен, что шрифт не поврежден (я перезагрузил его, но не изменил). Я также получаю то же поведение с другими бесплатными шрифтами unicode: NotoSans, Bitstream Vera Sans. – JordiJansen

ответ

1

Видимо, это не имело никакого отношения к iText или Flying Saucer. Наш сборник Maven строит единую толстую банку, шрифт также включен в эту банку. Но во время копирования из файловой системы в банку шрифт был поврежден. Исключая шрифт от фильтрации, решены проблемы.

<resources> 
    <resource> 
     <directory>src/main/resources</directory> 
     <filtering>true</filtering> 
     <excludes> 
      <exclude>templates/font/*.ttf</exclude> 
     </excludes> 
    </resource> 
    <resource> 
     <directory>src/main/resources</directory> 
     <filtering>false</filtering> 
     <includes> 
      <include>templates/font/*.ttf</include> 
     </includes> 
    </resource> 
</resources> 
Смежные вопросы