Java - растянуть содержимое страниц pdf

Как я могу увеличить страницу так, чтобы текст/изображения растянулись в соответствии с новым размером? Я нашел только способы масштабирования, но не масштабирования... есть идеи?

Заранее спасибо!!!


person coral    schedule 09.04.2018    source источник
comment
Используйте stackoverflow.com/questions/49672166 и измените коэффициент на 1,05 или любой другой.   -  person Tilman Hausherr    schedule 09.04.2018


Ответы (1)


Есть два концептуальных варианта:

  1. Для каждой страницы увеличьте MediaBox и CropBox, добавьте текущую операцию масштабирования матрицы преобразования к потоку содержимого страницы или массиву потоков и обновите положение и размеры аннотаций.

  2. Для каждой страницы задайте для свойства UserUnit значение > 1.

Второй вариант может, например. быть реализовано так, используя PDFBox и коэффициент растяжения 1,7:

PDDocument document = PDDocument.load(SOURCE);

for (PDPage page : document.getPages()) {
    page.getCOSObject().setFloat("UserUnit", 1.7f);
}

document.save(TARGET);

(Второй вариант, очевидно, гораздо проще реализовать, чем первый. Тем не менее, средства просмотра неполных PDF-файлов могут игнорировать это значение. Если вам нужно поддерживать такие неполные средства просмотра, вам, вероятно, придется выбрать первый вариант.)

person mkl    schedule 09.04.2018
comment
Спасибо!! Я попробовал второй вариант, и он решил его! :) где вы нашли документацию по этому атрибуту? - person coral; 10.04.2018
comment
@coral где вы нашли документацию по этому атрибуту — она находится в спецификации формата PDF, ISO 32000, как в части 1, так и в части 2. Adobe сделала копию части 1 общедоступной здесь. - person mkl; 10.04.2018