2011-11-15 4 views
1

저는 RaphaelJS 기반의 캔버스를 가지고 있습니다. 사용자가 어떤 작업을 할 수 있습니다. 나는이 일을해야합니다SVG serialization

  1. 저장 사용자는 데이터베이스
  2. Rastersize SVG로 작업 한 https://github.com/jspies/raphael.serialize를 들어

는 JSON으로 라파엘의 캔버스, jQuery를 덤프 (내가 그 작업을 위해 아파치 바틱을 사용). getJSON()을 백엔드로 보내면 Batik으로 피드하려면 다시 SVG로 변환해야합니다.

이 흐름이 합리적으로 보입니까? SVG -> JSON -> SVG 변환이 약간 오버 헤드가되는데, 더 좋은 방법이 있나요?

백엔드는 python/django를 실행합니다. 나는 표준 JSON 패키지 인 JSON -> SVG를 사용하지만 때로는 들어오는 json (주로 글꼴 스타일 속성)의 구문 오류로 인해 실패합니다. 이 문제에 직면 한 사람이 있습니까?

이 데이터를 데이터베이스에 저장하는 가장 좋은 방법은 무엇입니까? 끈처럼?

+0

이 앱의 확장 성은 어느 정도입니까? svg 텍스트를 큰 문자열로 저장하는 것이 좋습니다. 그러나 만약 당신이 그것에 대해 질문을해야하거나, 아마도 트래픽의 톤을 계획하고 있다면 그것은 좋은 생각이 아닙니다. – Clint

+0

이 시점에서이 데이터는 많이 쿼리되지 않는 것 같습니다. 또 다른 대안은 텍스트 파일에 저장하는 것입니다. –

+0

Raphael 2.0에서 작동하도록 모든 부분과 변환을 처리하기 위해 raphael.serialize를 리팩터링했습니다. https://github.com/ElbertF/Raphael.JSON –

답변

2

Raphael.Export가 요소를 저장 라파엘 지원하는 모든 브라우저에서 SVG는 :

https://github.com/ElbertF/Raphael.Export

내가 바틱을 사용하여 PNG 파일 서버 측 등의 라파엘 도면을 저장하는 데 사용했습니다.

0

당신은 다음 (클라이언트) 원시 XML 소스에이를 변환 할 수 있습니다 라파엘의 루트 <svg> 요소에 핸들을 얻을 그냥 보낼 수있는 경우

var svgAsXML = (new XMLSerializer).serializeToString(svg); 
+2

오래된 브라우저의 경우 아무 것도 없습니다

+0

@AlexKreimer ... 라파엘은 일하지 않지, 그렇지? VML을 디스플레이 레이어로 사용하는 라파엘 (Raphael)의 경우 IE에 대한 이야기가 아니라면 말입니다. – Phrogz