Django 분석을 PDF 파일로 내보내기
6519 단어 django
그럼 오늘 Django의 보기에서 페이지를 pdf 형식으로 내보내는 기능을 보십시오.그렇다면 동적 생성 pdf의 장점은 무엇일까?다른 목적을 가진 사용자를 위해 맞춤형 pdf를 만들 수 있습니다.그렇다면 어떻게 이뤄졌을까?Python에서 개발한 pdf 라이브러리 - ReportLab을 사용합니다.
ReportLab 설치
리포트 랩 라이브러리를 http://www.reportlab.com/software/opensource/rl-toolkit/download/ 다운로드해서 설치할 수 있으며, 설치 방법을 설명하는 사용자 안내서가 있거나, pip를 사용해서 설치할 수도 있다.
sudo pip install reportlab
ReportLab이 성공적으로 설치되었는지 테스트
>>> import reportlab
만약 이 명령이 아무런 오류도 보고하지 않았다면 ReportLab이 성공적으로 설치되었음을 의미합니다.
Django 동적 생성 pdf의 관건은 ReportLab이 파일에 대한 API 인터페이스이다. APi 인터페이스는 파일 대상이고 Django의 HttpResponse 대상도 파일 대상이다. 이것은 서로 통한다.
그럼 "Hello World"의 예를 들어보겠습니다.
from reportlab.pdfgen import canvas
from django.http import HttpResponse
def some_view(request):
# Create the HttpResponse object with the appropriate PDF headers.
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="somefilename.pdf"'
# Create the PDF object, using the response object as its "file."
p = canvas.Canvas(response)
# Draw things on the PDF. Here's where the PDF generation happens.
# See the ReportLab documentation for the full list of functionality.
p.drawString(100, 100, "Hello world.")
# Close the PDF object cleanly, and we're done.
p.showPage()
p.save()
return response
여기response는 특수한 MIME 형식인 '응용 프로그램/pdf' 라는 표시를 받았습니다. 이것은 HTML 파일이 아니라 PDF 파일입니다. 그렇지 않으면 브라우저가 HTML로 출력된 파일 형식을 설명하기 때문에 창에 매우 추하게 보일 수 있습니다.
또한response는 PDF 파일의 이름을 포함하는 추가 내용을 얻을 수 있습니다. 물론 이 파일의 이름은 임의입니다. 브라우저의 다른 이름으로 저장해서 이름을 지어줄 수 있습니다.이 예에서는 문서를 어떻게 처리하는지 확인하기 위해 이어서 대화상자가 팝업됩니다.마지막으로 가장 중요한 것은 showPage () 방법과 save () 방법을 사용하여 내보낸 PDf 파일을 저장하는 것입니다.
참고 ReportLab은 스레드가 아닌 안전한 제품입니다.
그럼 이제 복잡한 PDF 파일을 살펴보겠습니다. 만약에 ReportLab으로 복잡한 PDF 문서를 만들려면 IO 클래스를 임시 중계로 보조하는 것을 고려해야 합니다. 이 라이브러리는 매우 효과적인 파일 클래스의 대상 인터페이스를 제공합니다. 다음은 위의'Hello World'를 다시 쓰겠습니다.
from io import BytesIO
from reportlab.pdfgen import canvas
from django.http import HttpResponse
def some_view(request):
# Create the HttpResponse object with the appropriate PDF headers.
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="somefilename.pdf"'
buffer = BytesIO()
# Create the PDF object, using the BytesIO object as its "file."
p = canvas.Canvas(buffer)
# Draw things on the PDF. Here's where the PDF generation happens.
# See the ReportLab documentation for the full list of functionality.
p.drawString(100, 100, "Hello world.")
# Close the PDF object cleanly.
p.showPage()
p.save()
# Get the value of the BytesIO buffer and write it to the response.
pdf = buffer.getvalue()
buffer.close()
response.write(pdf)
return response
물론 ReportLab 라이브러리 외에도 우수한 Python 제3자 라이브러리가 많다. 예를 들어 다음과 같다.
PDFlib: Django가 다른 Python 라이브러리를 연결한 것입니다. 예를 들어 'XHTML2PDF' 라이브러리, 그리고 'HTMLdoc' 를 사용합니다. HTML을 PDF로 바꾸는 명령줄이지만 인터페이스가 없습니다. Python의 입력과 출력 인터페이스만 사용할 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.