2010-01-27 4 views
13

대화 형 클라이언트 측 thingamabob에 SVG를 사용하는 웹 사이트가 있습니다. 완성 된 출력물의 PDF를 다운로드 할 수있는 옵션을 제공하고 싶습니다. 최종 SVG 출력을 서버로 다시 전달하여 PDF로 변환 한 다음 클라이언트로 반환하여 다운로드 할 수 있습니다.공유 리눅스 서버에서 SVG로 연결

이것은 설치 또는 컴파일이 심한 고통이나 불가능한 헤드리스 공유 리눅스 서버에서 작동해야합니다. 웹 사이트는 PHP이므로 이상적인 솔루션은 PHP이거나 공유 웹 서버에 쉽게 설치되는 소프트웨어를 사용하는 것입니다. 파이썬, 펄, 루비는 리눅스 박스에서 기대할 수있는 일반적인 것들과 함께 사용할 수 있습니다. cairo, scripting inkscape 또는 "FTP up"보다 복잡한 설치가 포함 된 솔루션이 아마도 나와 있습니다. 많은 돈을 쓰는 것도 당연합니다. 이것은 공유 서버이므로 메모리 및/또는 CPU 사용량이 많은 솔루션도 빠져 나옵니다. 이것은 Batik에서 다소 벗어난 규칙입니다.

내가 가지고있는 가장 가까운 것은 this XSL transform입니다. PHP에서 구동 한 다음 ps2pdf (이미 설치되어 있음)를 통해 결과 포스트 스크립트를 실행할 수 있습니다. 유일한 문제는 SVG 경로를 지원하지 않는다는 것입니다. 그렇게했다면 완벽 할 것입니다.

내가 읽은 StackOverflow에는 여러 가지 질문이 있지만 모두 설치하거나 돈을 지출하거나 둘 다 사용할 수 있다고 가정합니다.

누구나 자유롭게 사용할 수있는 솔루션이 있습니까? 아니면 해당 XSL 변환에 경로 지원을 추가하기 위해 일부 휴지기를 사용해야합니까?

덕분에, 덩크

답변

16

내가 오늘 TCPDF를 우연히 만났을 때 나는 그 사실을 알았다. 순수한 PHP 클래스 모음입니다. 대부분의 경우 외부 종속성이 없습니다.

이 예와 같이, 그것은 처음부터 PDF 년대를 구축 할 수 있습니다 당신이 (많은, 많은 다른 것들 사이에) SVG를 포함하여 당신이 원하는 거의 아무것도 포함 할 수 있습니다 :

http://www.tcpdf.org/examples.php

홈페이지 프로젝트를 페이지는 여기에 있습니다 :

http://www.tcpdf.org/

소스 포지 페이지는 여기에 있습니다 :

http://sourceforge.net/projects/tcpdf/

+3

+1 돌아오고 업데이트하는 중입니다. – hawbsl

2

당신은 imagemagick 살펴 보았다? 루프를 완료하려면 ghostscript도 필요하다고 생각합니다. 이로 인해 설치가 어려워지고 성능이 저하 될 수 있습니다.

+2

ImageMagick를 통해가는 - 사용할 수 있습니다 - 당신이 결국 (AFAIK), 그래서 래스터 화 비트 맵이 포함 된 PDF입니다. 확장 가능한 벡터 기반의 PDF를 원합니다. 확장 성이 뛰어나고 인쇄 가능하며 크기가 작은 파일 크기를 장점으로합니다. –

+3

다른 사람이 ImageMagick과 연극을하고 래스터 화를 수행하여 비트 맵이 포함 된 pdf 파일을 만듭니다. 향후 참조를 위해,하지만 쉽게 할 수 있습니다 : 변환 test.svg에있는 test.pdf 또는 출력 해상도 지정하려면이 같은 : 변환 -density 1200 test.svg에있는 test.pdf 1200DPI에 대한 을 예를 들면. 이것은 꽤 큰 PDF 파일을 만드는 경향이 있습니다. –

2

princexml을 사용하면 various addons (PHP 포함)을 제공하고 SVG/HTML/XML에서 PDF를 출력 할 수 있습니다.

+1

그래, 나는 누군가가 그것을 제안 할 것이라고 생각했다 - 그러나 그것을위한 서버 라이센스는 3800 USD이다 - 이것에 대해 많은 돈을주고, 나는 두려워한다. 제안 주셔서 감사합니다 :) –

3

당신은 사용할 수 있습니다 Apache FOP의 PDF로 SVG를 변환하는 transcoder api을 가지고 무료Batik SVG 툴킷.

download link

당신은 자바의 작은 비트를 작성해야합니다. 코드 예제 here이 있습니다. 자바 대신 트랜스 코더를 org.apache.fop.svg.PDFTranscoder으로 설정해야합니다.

컴퓨터에 아무 것도 설치하지 않고이 작업을 수행 할 수 있습니다. 단지 항아리를 끌어서 스크립트 만 실행하면됩니다. 나는 인용한다 :

Batik에서 필요로하는 다른 모든 라이브러리는 배포판에 포함되어있다. 결과적으로 Batik 아카이브는 상당히 크지 만 다운로드 한 후에는 다른 것을 필요로하지 않습니다.

+0

참고, 직접이 직접 사용하지 않은 있지만 바둑을 사용하여 docbook 작업을 한 무리, 그리고 정말 잘 작동합니다. –

+0

제안을 주셔서 감사합니다 - 나는 바틱 (질문 참조)을 알고 있고 그것을 시도하고 싶습니다만, xmlgraphics.apache.org를 1 주일 정도로드 할 수 없었습니다. http : /ismysiteup.org/check/xmlgraphics.apache.org가 작동한다고 주장합니다. 그게 뭔지 확실하지 않아. –

0

저는 많은 프로젝트에서 TCPDF (http://www.tcpdf.org/)를 사용했으며 거의 ​​모든 유스 케이스에서 작동합니다. 여기

는 SVG의 예는 다음과 같습니다 https://tcpdf.org/examples/example_058/

와 다음은 당신에게 도움이 될 수 있습니다 코드입니다 :

$pdf->ImageSVG($file='images/testsvg.svg', $x=15, $y=30, $w='', $h='', $link='http://www.tcpdf.org', $align='', $palign='', $border=1, $fitonpage=false); 

$pdf->ImageSVG($file='images/tux.svg', $x=30, $y=100, $w='', $h=100, $link='', $align='', $palign='', $border=0, $fitonpage=false); 
관련 문제