iText/Java При конвертации HTML в PDF не совпадает позиционирование текста

С помощью iText я конвертирую HTML в PDF. В целом все работает как нужно, но есть проблема с некоторыми семействами шрифтов. После конвертации, в документе PDF позиционирование шрифтов по высоте не совпадает с тем как это было в HTML. Пример на картинке ниже (слева - сгенерированный PDF, справа превью PDF документа): введите сюда описание изображения

На изображении:

  • (1) - шрифт Arial - с ним все впорядке.
  • (2) - шрифт Times New Roman - в PDF он поднялся на 2px.
  • (3) - шрифт Dancing Script - в PDF он опустился на 5px.
  • (4) - шрифт Tangerine - с ним все впорядке.
  • (5) - шрифт Charmonman - в PDF он опустился на 5px.

Для HTML шаблона, который генерируется в PDF указаны CSS стили точно такие, которые используются для превью PDF документа.

PDF генерируется следующим образом:

private byte[] getPdf(StringBuilder fileText) throws IOException {
        FontProvider fontProvider = new FontProvider(addCertificateFonts(), "");
        fontProvider.addStandardPdfFonts();

        ConverterProperties properties = new ConverterProperties().setFontProvider(fontProvider);
        properties.setBaseUri(getBaseProjectUri());
        try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
            HtmlConverter.convertToPdf(fileText.toString(), out, properties);
            return out.toByteArray();
        }
    }

private FontSet addCertificateFonts() {
        FontSet set = new FontSet();
        List<String> fontPaths = //здесь список путей к файлам шрифтов
        ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
        for (String path : fontPaths) {
            set.addFont(context.getRealPath(path));
        }
        return set;
    }

Если ли какой-нибудь способ исправить позиционирование шрифтов?

Есть ли вероятность, что в самих шрифтах есть какие-то конфигурации, которые могут влиять на положение текста с этим шрифтом?


Ответы (0 шт):