У меня есть набор графических объектов, позиции которых определены относительно центра двухстраничного распространения. I need to convert them from one page layout to another, where each layout may have different:
- Overall dimensions (total width and height of the two-page spread)
- Outer margins (“bleed”)
- Inner gutter (“spine”)
Когда объект изначально помещается в точном центре разброса источника, он может в конечном итоге сдвинуть от центра в целевой макету, поскольку значения кровотечения и позвоночника изменяют эффективную область содержания. Это смещение возникает даже при совпадении общих размеров распространения, поскольку различные края и водосточные охраны изменяют то, как карты центральной точки между форматами. Я ожидал, что объект в x = 0 (истинный центр) останется в x = 0, но он сдвинулся всякий раз, когда кровоточат или позвоночник отличался. Я также экспериментировал с полным аффинным переводом → Scale → «Перевод вокруг контента». Независимо от того, как я настроил эти расчеты, центрированный объект все еще закончился ненулевым x, когда покрасной или позвоночника изменяются.
Код: Выделить всё
const baseFormat = {
width: 654,
height: 343,
bleed: 19,
spine: 6
};
const targetFormat = {
width: 342,
height: 185,
bleed: 19,
spine: 6
};
const objects = [
{ width: 250, height: 250, center: { x: 157, y: 0 } },
{ width: 200, height: 200, center: { x: -155, y: 0 } }
];
const scaleX = targetFormat.width / baseFormat.width;
const scaleY = targetFormat.height / baseFormat.height;
const scaled = objects.map(o => ({
...o,
width: o.width * scaleX,
height: o.height * scaleY,
center: {
x: o.center.x * scaleX,
y: o.center.y * scaleY
}
}));
Визуально вы можете увидеть, что в настоящее время происходит, используя данные из приведенного выше фрагмента.>
Подробнее здесь:
https://stackoverflow.com/questions/796 ... ns-and-gut