2015-10-14 4 views
2

Я использую project.exportSVG({asString: true}) с очень большим количеством путей (тысяч). Это занимает очень много времени, и иногда скрипт просто замерзает. Функция project.exportJSON() с другой стороны очень быстро.svg экспорт в paper.js очень медленно

Я думаю, это может быть из-за того, что exportSVG создает узел DOM, а затем выводит из него строку. Для меня просто нужна строка, что-то вроде Lite-экспорта, которое просто работает со строками, было бы потрясающе. Есть ли способ сделать это?

Я использую SVG-нить сделать Blob и сохранить его с помощью https://github.com/eligrey/FileSaver.js/

var svg = project.exportSVG({asString: true}); 
var blob = new Blob([svg], {type: "image/svg+xml;charset=utf-8"}); 
saveAs(blob, 'test.svg'); 

это тест сценарий я бегу на http://sketch.paperjs.org

for (var i = 0; i < 1000; i++) { 
    new Path.Circle({ 
     strokeColor: 'red', 
     radius: 10, 
     position: [i, i] 
    }); 
} 


var t_start, t_end; 

t_start = new Date().getTime(); 
project.exportSVG(); 
t_end = new Date().getTime(); 
console.log('svg export: ' + (t_end - t_start)); 

t_start = new Date().getTime(); 
project.exportJSON(); 
t_end = new Date().getTime(); 
console.log('json export: ' + (t_end - t_start)); 

ответ

-1

У меня нет решения для вы, но я могу сказать вам причину. Взгляните на этот эскиз: minimal example, и вы можете видеть, что экспорт JSON - это просто представление JSON структур и данных бумажных данных, в то время как SVG требует преобразования вывода бумаги в формат SVG. Júrg проделал очень хорошую работу по оптимизации преобразования, поэтому, хотя может быть небольшой прирост прибыли, маловероятно, что преобразование будет когда-либо приближаться к исходной дампе структур бумажных данных.