iText 7 создает отчет с двумя размерами страниц, используя один и тот же лист стилей CSS с функциями минимальной ширины и максимальной ширины - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь преобразовать HTML отчет в страницы двух разных размеров, используя iText 7, что очень удобно, поскольку я могу установить размер страницы с помощью:

PageSize pageSize = PageSize.A3; 
pdf.setDefaultPageSize(pageSize);

Но я пытаюсь примените трюк к стилю CSS, потому что мне нужно переопределить некоторые классы в зависимости от размера страницы, например, для A3 >> размер шрифта таблицы = 12pt, а в LETTER >> размер шрифта таблицы = 6pt. В отчете хранится огромное количество данных, которые я должен вписать в оба размера. С размером LETTER действительно сложно, я использовал% для размера шрифта, но так как содержимое динамическое c, иногда показанный в результате отчет обрезается с правой стороны, даже игнорируя спецификацию полей в селекторе @Page, поэтому мне нужно его указать без%, чтобы избежать такой проблемы. Кроме того, я пытаюсь выполнить эту задачу, переопределив стилизацию только одним листом. После поиска я наткнулся на одну из самых крутых функций @media, используя функции минимальной и максимальной ширины:

 @media only print and (min-width: 500px) and (max-width: 700px){
            body {
                background-color: yellow;
            }
            .box-table td, th {
                font-size: 6pt;
            }

        } 
@media only print and (min-width: 800px) and (max-width: 900px){
            body {
                background-color: green;
            }
            .box-table td, th {
                font-size: 12pt;
            }

        } 

Круто !! Это работает как оператор IF, и один из них должен срабатывать в то время. Я проверил это с помощью элемента экрана, и он применился идеально, но с iText 7 только последнее утверждение применимо к обоим размерам. Итак, что мне не хватает? Я пытаюсь заставить его работать с iText 7 PDF? Есть идеи или предложения?

Спасибо.

1 Ответ

1 голос
/ 03 апреля 2020

Описание мультимедийного устройства и мультимедийного устройства не создается или не принимается pdfHTML автоматически, поэтому его необходимо настроить вручную с помощью ConverterProperties:

MediaDeviceDescription deviceDescription = new MediaDeviceDescription(MediaType.PRINT)
        .setWidth(PageSize.A3.getWidth());
ConverterProperties properties = new ConverterProperties().setMediaDeviceDescription(deviceDescription);
HtmlConverter.convertToPdf(..., ..., properties);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...