2012-01-13 1 views
5

이 문제로 많은 사람들이 싸우는 것을 보았지만 적절한 해결책을 찾지 못하거나 필요에 맞는 해결책을 찾을 수 없습니다.Raphael 용지 결과를 모든 브라우저 (이전 IE 포함)에서 PNG/SVG로 변환하는 방법이 있습니까?

저는 Raphael에서 차트를 사용하고 있습니다. 기본적으로 PNG로 가져와야합니다 (내보내기 용 또는 나중에 PDF 용 및 기타 자료 용). Firefox, Chrome, IE 9 및 SVG를 지원하는 다른 브라우저는 쉽습니다. 실제로 그것을 구현하는 두 가지 방법이 있습니다. canvg를 사용하여 SVG를 캔버스 요소로 렌더링 한 다음 이미지 데이터를 가져옵니다. 또는 SVG를 서버 (C#)에 보내고 라이브러리를 사용하여 래스터 화합니다.

문제는 IE 8과 7입니다.이 브라우저에서 Raphael은 VML을 출력하고 SVG 소스를 가져 오는 방법이 없습니다. VML 래스터 라이저를 찾을 수 없기 때문에 VML을 SVG로 변환하거나 SVG에서 다시 그리기 만하면됩니다.

실제로 VML을 SVG로 변환하기 위해 실제로 XSLT 변환을 사용하는 PHP 변환을 확인했지만 작동하지 못했습니다. XSL을 테스트 할 여러 도구를 시도했지만 어느 것도 작동하지 않습니다.

속성을 .type, .svg.vml으로 바꿔서 Raphael이 SVG를 숨겨진 div에 출력하도록했지만 그 중 하나가 작동하지 않았습니다.

IE에서 숨겨진 DIV에 SVG 트리를 쓰는 방법이있을 것이라고 생각합니다. 사실 브라우저에 표시되지는 않지만 텍스트가 있어야합니다.

누구나 달성 방법을 알고 있습니까? 감사!

+0

"브라우저가 구식이므로이 페이지를 사용하도록 업데이트하십시오."Internet Explorer 9을 다운로드하려면 여기를 클릭하십시오. –

+0

잘 모르겠습니다. 솔루션에 어떻게 들어 맞을지 모르지만이 도움말과 같은 것이 있습니까? https://github.com/jspies/raphael.serialize 적어도 종이에있는 것을 일관되게 볼 수 있고 다른 곳에 이미지를 만들 수 있습니다. . – oli

+0

또한보십시오 : http://blog.davidpadbury.com/2010/10/03/using-nodejs-to-render-js-charts-on-server/ 두 가지를 결합하면이를 달성 할 수 있습니다. – oli

답변

1

SVG을 렌더링하려면 CanVG 라이브러리를 사용할 수도 있습니다.
SVG 파서 및 렌더러 캔버스 출력 결과입니다.
캔버스에서 PNG까지 픽셀 데이터를 출력 할 수 있습니다.

IE 한도를 해결하려면 Chrome Frame을 사용할 수 있습니다.

관련 문제