2011-09-02 4 views
5

시작하려면 PDF에서 이미지를 표시하지 않습니다 장고 (XHTML> PDF)는,이에 다른 스레드를 보았다, 나는 ...피사 -

이 문제를 해결하려고하는 거의 모든 시도했지만 한 Pisa를 사용하여 HTML 페이지를 PDF로 렌더링하면 해당 HTML의 이미지가 눈에 띄지 않게 사라집니다. 즉, 페이지가 HTML로 렌더링되면 모든 것이 멋지지만 피사를 사용하여 출력을 PDF로 전환하면 이미지가 사라집니다.

내가 발견 한 가장 일반적인 것은 따라서 링크 콜백 함수를 만드는 것입니다 :

def fetch_resources(uri, rel): 
    path = os.path.join(settings.MEDIA_ROOT, uri.replace(settings.MEDIA_URL, "")) 
    return path 

def my_view(request, variable1): 
    html = render_to_string('template_goes_here.html', dict, context_instance=RequestContext(request)) 
    result = StringIO() 
    pdf = pisa.pisaDocument(StringIO(html.encode("UTF-8")), dest=result, link_callback=fetch_resources) 
    if not pdf.err: 
     return HttpResponse(result.getvalue(), mimetype='application/pdf') 
    return HttpResponse('Pisa hates you! %s' % cgi.escape(html)) 

그러나이 작동하지 않습니다. PDF가 멋지게 나오지만 이미지가 없습니다.

또한 mkstemp에 HTML을 작성하고 명령 행을 통해 PDF로 변환 한 다음 HTML을 출력하는 다른 스레드에 대한 제안을 읽었으므로 성공하지 못했습니다.

비슷한 문제가있는 사람 (주사위가없는 사람)이 있기 때문에 1.1.17 대신 PIL 1.1.16을 설치하려고했습니다.

어디에서 내가 잘못 될지 생각하는 사람이 있습니까?

+3

피사를 사용하지 마십시오. 프로젝트의 계속되는 xhtml2pdf를 사용하십시오. –

+2

나는 또한 똑같은 문제에 직면했다. 퀵 스타 프 역시 도움이되지 않았다. Pisa는 이미지 크기를 html로 설정했을 때 이미지를 렌더링하지 않습니다. 이제는 image 만 사용하여 html에서 pdf를 생성 해보십시오. 다른 html 내용을 추가하십시오. 마지막으로 pdf를 생성하기 위해 HTMLTODOC을 사용했습니다. -> http://www.htmldoc.org/ – Abhaya

답변

2

나는 이것을 보았 기 때문에 오랜 시간이 걸렸지 만, 람다 또는 functools를 사용해야한다고 생각합니다.

links = lambda uri, rel: os.path.join(settings.MEDIA_ROOT, 
    uri.replace(settings.MEDIA_URL, '')) 


pdf = pisa.pisaDocument(StringIO(html.encode("UTF-8")), 
    dest=result, link_callback=links) 
+0

두 번째로 보았을 때, 다른 이유가 없습니다. 주어진 예제가 왜 작동하지 않는지 확실하지 않습니다. –