Я использую iText для Java (5.5.13) и экспериментирую с вращением шаблонов PDF с использованием класса Image. Проблема в том, что я не могу понять, что iText использует для начала координат при повороте изображений (и я заранее извиняюсь, если я глуп).
Прикрепленный код, который я использую
- Я создаю шаблон PDF
- Заполните его произвольным цветом
- Создать изображение из этого шаблона
- Поворот изображения на 90 градусов
- Установить абсолютные координаты для изображения
- Добавить к автору
Повторите еще раз со вторым прямоугольником, но на этот раз поверните только на 30 градусов.
Разве не должно быть общего происхождения между двумя формами?
(Похоже, что есть и нежелательный перевод)
// step 1
Rectangle pageSize = PageSize.A4;
Document document = new Document(pageSize);
// step 2
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(OUTPUT_FILENAME));
// step 3
document.open();
// step 4
float boxWidth = 200;
float boxHeight = 50;
float xStart = pageSize.getWidth()/2;
float yStart = pageSize.getHeight()/2;
// Add one filled rectangle rotated 90 degrees
{
PdfContentByte canvas = writer.getDirectContent();
PdfTemplate textTemplate = canvas.createTemplate(boxWidth, boxHeight);
textTemplate.saveState();
textTemplate.setColorFill(BaseColor.RED);
textTemplate.rectangle(0, 0, boxWidth, boxWidth);
textTemplate.fill();
textTemplate.restoreState();
Image img = Image.getInstance(textTemplate);
img.setInterpolation(true);
img.scaleAbsolute(boxWidth, boxHeight);
img.setAbsolutePosition(xStart, yStart);
img.setRotationDegrees(90);
writer.getDirectContent().addImage(img);
}
// And another rotated 30 degrees
{
PdfContentByte canvas = writer.getDirectContent();
PdfTemplate textTemplate = canvas.createTemplate(boxWidth, boxHeight);
textTemplate.saveState();
textTemplate.setColorFill(BaseColor.BLACK);
textTemplate.rectangle(0, 0, boxWidth, boxWidth);
textTemplate.fill();
textTemplate.restoreState();
Image img = Image.getInstance(textTemplate);
img.setInterpolation(true);
img.scaleAbsolute(boxWidth, boxHeight);
img.setAbsolutePosition(xStart, yStart);
img.setRotationDegrees(30);
writer.getDirectContent().addImage(img);
}
// step 5
document.close();
Просто чтобы добавить фон, я делаю это, поскольку я хотел бы иметь возможность обернуть текст и изображения внутри вращающегося и позиционируемого содержимого (класс изображения с фиксированными размерами), которое затем я могу использовать для создания модель того, что выложено где на странице (с целью попробовать алгоритм словесного искусства, похожий на алгоритм wordle).
Спасибо!