Как отключить лайтбокс на Wonderplugin Carousel

Когда вы это сделаете:

Document document = new Document();

Затем вы неявно создаете документ, страницы которого имеют размер страницы, известный как A4. То есть: ширина 595 и высота 842 пользовательских единиц.

Если вы добавляете меньшие изображения, они не будут обрезаны. Если вы добавите изображения, которые больше. Изображения будут обрезаны ...

Если вы хотите, чтобы изображение точно соответствовало странице, у вас есть две возможности:

  1. Адаптировать размер страниц или
  2. Адаптируйте размер изображения.

Оба варианта эквивалентны, поскольку iText не изменит разрешение изображений: каждый пиксель будет сохранен.

Вариант 1:

См. мой ответ на вопрос: Добавление карт в iText Java

В этом вопросе я делаю это:

Image img = Image.getInstance(IMG);
Document document = new Document(img);
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
img.setAbsolutePosition(0, 0);
document.add(img);
document.close();

Объект Document принимает параметр Rectangle как. Этот Rectangle определяет размер страницы в пользовательских единицах. Поскольку класс Image является подклассом класса Rectangle, я могу использовать экземпляр Image в качестве параметра для создания экземпляра Document.

Другим вариантом было бы это сделать:

Rectangle pagesize = new Rectangle(img.getScaledWidth(), img.getScaledHeight());
Document document = new Document(pagesize);

Если ваш документ имеет разные страницы, вы должны использовать метод setPageSize() перед тем, как запускает новую страницу.

Вариант 2:

См. мой ответ на вопрос: Backgroundimage в ландшафте и обложка всего pdf с iTextSharp

Код выглядит так (ну, фактический код немного отличается , но это тоже будет работать):

Document document = new Document(PageSize.A4.rotate());
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
Image image = Image.getInstance(IMAGE);
image.scaleAbsolute(PageSize.A4.rotate());
image.setAbsolutePosition(0, 0);
document.add(image);
document.close();

Здесь у меня есть страницы с размером A4 в альбомной ориентации, и я масштабирую изображение так, чтобы оно полностью соответствовало странице. Это опасно, потому что это изменяет соотношение сторон изображения. Это может привести к искажению изображений. Замена scaleAbsolute() на scaleToFit() позволит избежать этой проблемы, но у вас будет несколько белых полей, если соотношение сторон изображения отличается от пропорции страницы.

Важно: Примечание. что я использовал setAbsolutePosition(0, 0); в обоих случаях. Я вводил эту строку так, чтобы нижний левый угол изображения совпал с нижним левым углом страницы. Если вы этого не сделаете, вы увидите край внизу и влево, и ваше изображение будет обрезано в верхнюю и правую стороны.

0
задан Stst 16 January 2019 в 13:21
поделиться