2015-02-02 4 views
7

이 질문은 정말 간단합니다. 그러나이 질문에 대한 데이터는 찾을 수 없습니다. httpresponse를 파일로 전달하여 reportlab과 함께 pdf를 생성 할 때 파일을 표시하도록 구성된 브라우저는 pdf를 올바르게 표시합니다. 그러나 탭의 제목은 "(Anonymous) 127.0.0.1/whatnot"으로 남아 있으며 사용자에게는 다소 추한 것입니다.생성 된 reportlab과 함께 탭 제목을 지정하십시오.

대부분의 사이트는 어떻게 든 적당한 제목을 표시 할 수 있기 때문에 나는 그것이 가능하다고 생각합니다 ... 제가 pdf에 넘길 수있는 일종의 제목 매개 변수가 있습니까? 또는 응답 헤더? 내 코드입니다.

def render_pdf_report(self, context, file_name): 
    response = HttpResponse(content_type='application/pdf') 
    response['Content-Disposition'] = 'filename="{}"'.format(file_name) 

    document = BaseDocTemplate(response, **self.get_create_document_kwargs()) 
    # pdf generation code 
    document.build(story) 
    return response 
+0

원하는대로 작동하는 사이트의 예를 제공 할 수 있습니까? –

+0

예 : 여기서 파일 이름은 http://www.biblioteca.org.ar/libros/211756.pdf 제목에 표시됩니다. 또한 weasyprint를 사용하여 생성 할 때 html 제목 태그가 처리되므로 긍정적입니다. – Alvaro

답변

7

Google 크롬에는 PDF 제목이 표시되지 않는 것으로 보입니다. 귀하의 코멘트 (biblioteca.org.ar)에서 링크를 테스트하고 Firefox에서 "- 211756.pdf"로 표시되면 빈 제목이있는 것 같고 Firefox는 전체 URL 경로 대신 파일 이름 만 표시합니다. 파이어 폭스에서

from reportlab.pdfgen import canvas 

c = canvas.Canvas("hello.pdf") 
c.setTitle("hello stackoverflow") 
c.drawString(100, 750, "Welcome to Reportlab!") 
c.save() 

열기가 필요한 결과를 얻을 : 내가 ReportLab's User Guide에 대한 setTitle을 발견

나는이 코드 조각을 사용하여 동일한 동작을 재현. 그것은 당신이 trml2pdf를 사용하는 경우, 당신은 ... 예. 템플릿 태그에서 "제목"속성을 추가, < 템플릿 제목 = "송장"해야합니다 (16) :

+0

감사합니다! 그 트릭을 할 것으로 보인다. 이제 나는 캔버스를 사용하여 오리너구리없이 작업하기 위해 이것을 바꿔야 만합니다. – Alvaro

+5

완료. document.title = 'title'은 트릭을 수행합니다 – Alvaro

+1

그리고 setTitle에 대한 언급은 문서에 있습니다 .. 캔버스를 사용하지 않을 때 어떤 효과가 있는지 또는 도움이되지 않습니다. – Alvaro