Linux에서 SVG를 PDF로 변환하는 방법


126

Linux에서 SVG (라틴 텍스트 몇 단어와 간단한 벡터 그래픽 포함)를 PDF로 어떻게 변환하고 SVG로 변환합니까?

Ubuntu Lucid에서 Inkscape 0.47을 시도했지만 일부 하위 그래픽을 무작위로 이동하고 출력 PDF에서 일부 줄을 더 짧게 만듭니다. 그래픽이 완전히 다르게 보이므로 출력이 쓸모가 없습니다.

Chrome 16에서 SVG를 열어 PDF로 인쇄하려고 시도했지만 모든 색상이 왜곡되고 일부 요소가 제거되었습니다. SVG는 화면에 잘 나타나지만 인쇄 미리보기에서는 이미 좋지 않으며 생성 된 PDF도 좋지 않습니다.

SVG를 래스터 화하거나 렌더링하고 싶지 않습니다. SVG를 비트 맵 이미지로 변환 한 다음 이미지가 포함 된 PDF를 만드는 솔루션은 내 질문에 대한 대답이 아닙니다. (FYI Inscape 0.47은 PNG로 렌더링 할 때 텍스트를 앤티 앨리어싱없이 매우보기 흉한 방식으로 렌더링합니다.)

다른 옵션이 있습니까?


1
변환 할 이미지가 몇 개인 경우 일부 온라인 변환기를 사용하는 것이 더 쉬울 수 있습니다. CloudConvert를 사용해 보았고 SVG 파일 크기의 절반으로 매우 훌륭했습니다.
Frank Breitling

답변:


134

rsvg-convert 는 내가 변환하려는 SVG에 대한 트릭을 수행했습니다.

$ sudo apt-get install librsvg2-bin
$ rsvg-convert -f pdf -o t.pdf t.svg

rsvg-convert -f pdfSVG를 래스터 화하지 않으며 글꼴을 포함하고 서브 세트합니다 (적어도 Arial 글꼴의 사용 된 문자가 포함되어 있음). 때때로 글꼴 임베딩이 실패하고 (예 : LMRoman17 글꼴의 경우) 전체 글꼴 파일이 생성 된 PDF로 복사됩니다.

우분투 루시드에 대한 의존성 :

  • libcairo.so.2
  • libgobject-2.0.so.0
  • libgthread-2.0.so.0
  • libglib-2.0.so.0
  • librsvg-2.so.2
  • libpthread.so.0
  • libc.so.6

기본적으로 libcairo에는 libX11이 필요하므로 rsvg-convert는 헤드리스 시스템에 설치하기 어려울 수 있습니다.

참고 : 매뉴얼 페이지에 rsvg-convert도구가 항상 래스터 화되어 있지만 사실이 아닙니다. 매뉴얼은 단순히 더 이상 사용되지 않습니다. 때로는 svg 생성 도구가 svg 이미지를 부분적으로 래스터 화하여 오해를 일으킬 수 있습니다.


4
cairo, libgphoto, gtk3, libsane ... 아, 잘된다면 ...
ShiDoiSi

4
@ AyberkÖzgür 그것은 잉크 스케이프의 결점입니다. 잉크 스케이프 프로젝트를 저장하면 기본적으로 SVG로 저장되지만, SVG에 저장되는 SVG에는 다른 프로그램을 엉망으로 만드는 많은 비표준 잉크 스케이프 관련 데이터가 포함됩니다. SVG로 저장 하지 않고 SVG 로 보내야합니다.
AJMansfield

2
검색 시간을 절약 할 수 있습니다. Suse-Systems에서 포함하는 패키지를 rsvg-convert호출 rsvg-view합니다.
Trendfischer

1
그것은 나를 위해 일했고 pdf의 품질은 svg와 동일합니다. 이 전에 imagemagick을 사용하여 pdf로 변환하고 품질이 특히 svg에 좋지 않았습니다.
Pratik Soni

1
불행히도, 이것은 macOS에 글꼴을 포함하지 않습니다.
oarfish

79

이것은 우분투 루시드에서 작동합니다.

$ sudo apt-get install inkscape
$ inkscape t.svg --export-pdf=t.pdf

위의 명령 줄 Inkscape 호출은 GUI ( DISPLAY=) 없이 헤드리스 모드에서도 작동합니다 . 그러나 Inscape를 설치하면 X11을 포함하여 많은 종속성이 설치됩니다.

오류가 발생하더라도 Inskscape의 종료 상태는 항상 0이므로 stderr를주의하십시오.

또한 inkscape --shell많은 문서를 일괄 적으로 변환하는 데 적합합니다. 이렇게하면 각 파일의 잉크 스케이프 시작 시간이 느려지지 않습니다.

$ (echo t.svg --export-pdf=t.pdf;
   echo u.svg --export-pdf=u.pdf) |
  DISPLAY= inkscape --shell

Inkscape는 SVG를 단순화하는 데에도 유용합니다.

$ DISPLAY= inkscape t.svg --export-plain-svg=t.plain.svg

2
불행히도 이것은 OS X에서 작동하지 않는 것 같습니다. 여전히 좋은 대답입니다.
Konrad Rudolph

3
OP는 Inkscape에 렌더링 버그가 있음을 명시했습니다. 이것은 내 경험과 일치합니다.
Dylan Thurston

3
Homebrew를 사용하는 OSX에서는 brew install inkscape요즘 사용하여 Inkscape를 설치할 수 있습니다 . 결과 /usr/local/bin/inkscape는 X11.app를 실행할 필요없이 나를 위해 일했습니다.
Alex Schröder

2
잉크 스케이프는에서 OS X에 설치할 수있는 dmg이 심볼릭 링크를 생성 한 후 명령 줄에서 호출 후 자신의 웹 사이트에서 배포하고 : ln -s ~/Applications/Inkscape.app/Contents/Resources/bin/inkscape ~/bin/inkscape유사에 대한 inkscape-bin(가정 ~/bin당신에있다 $PATH).
Ioannis Filippidis

2
Inkscape와 함께 -z(또는 --without-gui) 플래그를 사용하여 배치 모드로만 실행할 수 있습니다 (창이 전혀 열리지 않음).
Artefact2

8

OSX 및 Ubuntu에서 CairoSVG를 성공적으로 사용했습니다.

pip install cairosvg
cairosvg in.svg -o out.pdf

CairoSVG 문서


사용할 수있는 파이썬 바인딩도 있습니다. 불행히도이 방법은 다소 제한적입니다. 즉 많은 svg 기능이 지원되지 않습니다.
bodo

7

Inkscape (0.47도)에서 PDF로 인쇄하고 PDF로 저장 한 결과 (약간 다름)에서 좋은 결과를 얻지 만 이는 그래픽에 따라 다를 수 있습니다.

낮은 해상도의 대안 (개선을 위해 스위치를 시도하지 않았습니다)은

 convert file.svgz file.pdf 

convertImageMagick패키지의 일부입니다 . 래스터 라이저는 다른 프로그램입니다.

 rasterizer -m application/pdf file.svgz -d file.pdf 

svgs를 처리하는 프로그램이 시스템에 설치되어 있는지 확인하려면 시도하십시오.

 apropos -s 1 svg

이 프로그램에 대한 맨 페이지는 프로그램이 svg를 pdf로 변환하는 데 유용하다는 것을 설명해야합니다.


18
제안 해 주셔서 감사합니다. 참고 convertconvertSVG는 비트 맵 이미지로 래스터 화되고 원래 질문은 그렇지 않은 솔루션을 찾고 있었기 때문에 FYI 는 원래 질문에 대한 답변이 아닙니다.
pts

5

https://superuser.com/a/79064/19956 은 GhostPDL의 일부인 gsvg를 언급합니다 .

Ubuntu Lucid에서 gsvg ghostpdl-9.06을 시도했지만 Inkscape에서 생성 된 두 개의 SVG에 대해 실패했습니다. 하나의 SVG에는 텍스트가 있고 다른 하나에는 벡터 그래픽 만있었습니다. Inkscape 확장 또는 클립 경로가없는 간단한 그래픽의 경우에도 실패했습니다. 따라서 gsvg를 사용 가능한 SVG-to-PDF 변환기라고 생각하지 않습니다.


3

Mac OS에서 (양조자가 이미 설치되어 있다고 간주합니다)

$ brew install cairo libffi python3
$ pip3 install cairosvg

$ cairosvg -o blah.pdf ./blah.svg 

Linux에서도 동일하지만 대신 apt-get을 사용해야합니다.


1
이것은 pdf 출력에서도 작동합니다. svg2pdf및과 달리 rsvg-convert글꼴을 유지합니다.
oarfish

고마워, 나는 잘못된 확장을 넣었다. 예제를 업데이트했습니다.
Adriel Jr

매력처럼 일했다!
mayrop

1

이전에 언급되지 않은 이유가 궁금하지만 여러 svg-> pdf 변환기를 테스트 한 결과 가장 좋은 것은 Headless Chrome 인 것으로 나타났습니다 . 그것은 나를 위해 가장 정확한 결과를 생성합니다. Chrome으로 전환하기 전에 Inkscape 버그와 싸우려고했지만 많은 버그가 너무 심각하여 투명성 버그, 잘못된 글꼴 등으로 할 수 없습니다.

 chrome --headless --disable-gpu --print-to-pdf="output.pdf" "input.svg"

사용자 정의 PDF 크기를 사용하려면 약간의 조정이 필요하지만 (A4가 기본값 임) CSS 및 SVG 속성으로 인터넷 검색 및 재생 후 사용자 정의 크기를 설정할 수있었습니다 ( stackoverflow 에서이 답변을 확인하십시오 )


슈퍼 유저에 오신 것을 환영합니다! 외부 링크가 끊어 지거나 사용할 수없는 경우 답변이 티저 일 수 있습니다. 링크가 여전히 작동하더라도 사람들이 솔루션을 찾을 수 있도록 컨텐츠를 색인화 할 수 없습니다. 답변에 필수 정보를 포함시키고 귀속 및 추가 자료를 보려면 링크를 사용하십시오. 감사.
fixer1234

WSL에서 추가 플래그가 필요합니다chromium --no-sandbox --disable-setuid-sandbox --headless --disable-gpu --print-to-pdf=output.pdf input.svg
ticapix

0

svg 파일을 Image Viewer(Eye of Gnome이라고도 함)으로 열고 eogPDF 파일 (예 :)로 인쇄하고 명령을 image.pdf사용하여 해당 PDF를 eps로 변환하십시오 pdf2ps. 단순한!

정교한 단계 :

  1. Image Viewer아직 설치 하지 않은 경우 설치 (을 사용하는 경우 가능성이 거의없는 단계 gnome)

    sudo apt-get install eog
    
  2. svg 파일을 열고 파일로 eog인쇄 image.pdf하십시오.

  3. (선택 사항) pdf 파일에서 주변 공백을 제거하십시오.

    pdfcrop image.pdf
    

    image-crop.pdf주변 공백이 제거 된 상태 로 생성 됩니다.

  4. 자른 PDF를 eps로 변환 (pdf를 자르지 image.pdf않은 경우 직접 사용 )

    pdf2ps image-crop.pdf image.eps
    

그게 다야!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.