Я могу предложить вам две идеи:
1) возможно импорт SVG учитывает исходный размер и масштабирует вас.Однако при редактировании в Illustrator у вас может быть документ намного большего размера, что сбивает с толку svgImport?
2) В противном случае вы можете импортировать бумагу в виде набора.И масштабируйте набор.
var set = paper.set();
paper.importSVG(svgdata, set);
set.scale( 2, 2, centerx, centery );
(я не уверен, без примера поиграть, какими должны быть centerx и centery).
[EDIT (после утверждения)] КажетсяРафаэль позволяет вам получить ограничивающую рамку набора:
var bbox = set.getBBox();
// You'll now have bbox.x, bbox.y, bbox.width and bbox.height at your disposal.
// For example:
paper.rect( bbox.x, bbox.y, bbox.width, bbox.height ).attr('border', 'red');
Поэтому я бы сказал, что вы можете:
- Получить ограничительную рамку импортированного набора SVG
- Использовать
set.translate
чтобы выровнять центр ограничительной рамки по центру бумаги (например, для перевода x используйте что-то вроде ( paperwidth / 2 ) - ( bbox.x + bbox.width / 2 )
). - Масштаб в зависимости от размера ограничивающей рамки по сравнению с размером бумаги.Вы, вероятно, хотите масштабировать, сохраняя соотношение сторон, поэтому вам придется использовать тот, который ближе всего к
1
(из paper.width/bbox.width
и paper.height/bbox.height
). - (Примечание: используйте центр бумаги сейчас какцентр масштабирования - так как вы перевели свой набор, это на самом деле и центр набора svg)
Я сделал это с макушки головы, чтобы он не был точным на 100%, но есливы поняли, что, вероятно, сможете избавиться от глюков.