문제
사용자 입력을 기반으로 SVG 이미지를 생성하기 위해 서버 측 스크립트 (PHP)를 작성하려고합니다. 다음 코드를 사용하고 있습니다.
<?php
echo '<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<head><meta http-equiv="Content-Type" content="svg+xml" /></head>
<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">
<circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red"/>
</svg>';
?>
MIME 유형이 SVG+XML이어야한다는 것을 읽었으므로 위에서 볼 수 있듯이 컨텐츠 유형으로 설정하려고했습니다. Firefox가 올바른 코드를 수신하지만 이미지는 렌더링되지 않습니다. 누군가가 여기서 무엇을 바꿀지 알고 있습니까?
해결책
에 따르면 Wikipedia의 SVG 페이지, SVG는 다음과 같이 제공되어야합니다 image/svg+xml
.
또한보십시오 : 1.2 SVG MIME 유형, 파일 이름 확장 및 Macintosh 파일 유형
다음 메타 :
<meta http-equiv="Content-Type" content="svg/xml" />
서버에서 컨텐츠가 제공되는 방식을 정의하지 않습니다. HTML 페이지의 경우 해당 정보를 제공하는 방법을 정의 할 수없는 방법입니다.
그리고 메타 요소가 SVG 사양 -- ^^
여기에서해야 할 일이 있습니다 HTTP 헤더를 보내십시오 서버에서 데이터의 컨텐츠 유형을 나타냅니다.
이것은 PHP를 사용하여 수행됩니다 header
기능 ; 귀하의 경우 :
header('Content-type: image/svg+xml');
echo '<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">
<circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red"/>
</svg>';
메모 :
- 나는 그것을 제거했다
<meta>
그리고<head>
태그; 확실하지 않습니다<head>
제거해야하지만 비어 있으면 .... - 전화를 추가했습니다
header
기능 - SVG Red Circle은 Firefox에 의해 제대로 표시됩니다. 따라서 작동하는 것 같습니다 ;-)
도움이 되었기를 바랍니다 !
다른 팁
이렇게 말합니다.
<?xml version='1.0'?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<head><title>test</title></head>
<body>
<svg:svg id="display" width="500" heigth="500" viewBox="0 0 500 500">
<svg:rect width="50" height="50" x="100" y="100" fill="red" stroke="black" />
</svg:svg>
</body>
</html>
다음과 동일하게 작동합니다.
<?xml version='1.0'?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>test</title></head>
<body>
<svg id="display" width="500" heigth="500" viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<rect width="50" height="50" x="100" y="100" fill="red" stroke="black" />
</svg>
</body>
</html>
더 읽기 쉬운/깨끗한 스스로 판단 할 수 있습니다. 많은 SVG 단편을 사용하는 경우 첫 번째 예제에서와 같이 HTML 루트 요소에 XMLNS 탈선을 배치하는 경우에 따라 의미가 있습니다.
최근 XHTML 문서에서 SVG를 사용하는 데 성공했습니다.
<?xml version='1.0'?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<head><title>test</title></head>
<body>
<svg:svg id="display" width="500" heigth="500" viewBox="0 0 500 500">
<svg:rect width="50" height="50" x="100" y="100" fill="red" stroke="black" />
</svg:svg>
</body>
</html>
트릭은 모든 항목에 대한 SVG : 접두사를 사용하는 것이 었습니다. 브라우저가 올바르게 구문 분석하는 네임 스페이스를 알아야합니다.
그런 다음 Raphael JavaScript 라이브러리를 정리했습니다 http://raphaeljs.com/ SVG 객체를 처리하는 것이 매우 쉽습니다.
도움이되기를 바랍니다