SAlenaA
@SAlenaA

Как экспортировать в pdf dataTable (проблема с кодировкой и шрифтом)?

Здравствуйте,
проблема в экспорте таблицы в pdf формат.
<h:commandLink>
                                    <p:graphicImage value="../../images/pdf.png" width="30"/>
                                    <p:dataExporter type="pdf" target="roadTable" fileName="road" pageOnly="true" encoding="cp1251"/>
                                </h:commandLink>

При указании кодировки windows 1251 - все буквы слипаются. При UTF-8 вообще не распознается кириллица.
Выяснила, что проблема в шрифте, т.к. базовый шрифт в iText HELVETICA - он содержит только латиницу. А как поменять шрифт в библиотеке не очень понятно. Нашла такое решение:
Document doc= (Document) document;            
            Font font = FontFactory.getFont("C:\\Windows\\Fonts\\times.ttf", "Cp1251", BaseFont.EMBEDDED);
            BaseFont bf = BaseFont.createFont("C:\\Windows\\Fonts\\times.ttf", "Cp1251", true);
            doc.open();

вставляю это в препроцесс - но ничего не меняется. То ли не туда вставляю, то ли не то делаю. Подскажите, пожалуйста, как экспортировать в пдф кириллицу????
  • Вопрос задан
  • 309 просмотров
Решения вопроса 1
SAlenaA
@SAlenaA Автор вопроса
Может кому-нибудь пригодиться, я решила эту проблему так:
кодировку указана "CP1251", буквы есть но все "слипшиеся". Проблема в шрифте. Чтобы поменять шрифт нужно переписать библиотечный класс PDFExporter. Для этого создаем у себя пакет org.primefaces.component.export и в нем создаем класс PDFExporter. Находим на github исходник копируем в этот файлик.Там есть строчка в методе exportPDFTable :
private String tahoma="C:\\Windows\\Fonts\\tahoma.ttf";
.........
this.cellFont = FontFactory.getFont(tahoma, string1);
 this.facetFont = FontFactory.getFont(tahoma, string1, Font.DEFAULTSIZE, Font.BOLD);

Вместо tahoma можете указывать любые шрифты,. содержащие кириллицу и все ОК.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы