2014-12-03 12 views
0

저는 rsvg를 사용하여 SVG를 읽고 파이썬에서 카이로를 통해 PNG로 출력했습니다.Python, rsvg & Cairo를 사용하여 SVG를 PDF로 변환

많은 비슷한 질문이 있지만 rsvg & 카이로를 통해 SVG를 PDF로 변환하는 방법에 대한 문서를 보지 못했습니다. 필자는 명령 줄 'rsvg'/ 'rsvp-convert'도구를 알고 있지만 기능을 파이썬 코드에 통합하려고합니다. 실행중인 하위 프로세스도 없습니다. 예를 위해서

가, 여기에 내가 현재 PNG를 렌더링하는 데 사용할 것을 기본적이다 :

img = cairo.ImageSurface(cairo.FORMAT_ARGB32, w, h) 
    ctx = cairo.Context(img) 
    handler= rsvg.Handle(None, svgstr) 
    handler.render_cairo(ctx) 
    img.write_to_png(pngfilepath) 

질문은 : 그 벡터 형식이 유지되도록 코드가 대신 출력 PDF로 변경 될 것입니다 방법; 래스터 화는 일어나지 않아야합니다.

답변

0

cairo.ImageSurface(cairo.FORMAT_ARGB32, w, h)로 전화를 cairo.PDFSurface(filename, width_in_points, height_in_points)으로 바꿉니다. PDF 표면의 기본 크기 조정이 무엇인지 모르겠지만 이전과 같은 너비와 높이 값을 계속 사용할 수 있기를 바랍니다.

래스터 화는 이제 발생해야한다고 명시 했으므로 카이로는 래스터로보기보다는 "최선을 다합니다"하지만 카이로가 래스터 화 된 이미지로 돌아 가야하는 조합이 있습니다. set_fallback_resolution 방법을 통해이 이미지의 해상도를 제어 할 수 있습니다.

래스터 화의 이유에는 PDF로 표현할 수없는 작업 조합 (미안하지만 자세한 내용은 알 수 없음)과 일부 래스터 화 된 이미지가 PDF 표면에 그려지는 경우가 포함됩니다.