Как прикрепить файл в pdf из Amazon S3 - PullRequest
0 голосов
/ 26 марта 2019

У меня есть простой код для рендеринга PDF в моем приложении, и я пытаюсь добавить вложения PDF. Поэтому я прочитал документы и нашел решение .

attachments (list) - Список дополнительных файловых вложений для сгенерированного PDF документ или None. Элементы списка: Attachment объекты, имена файлов, URL-адреса или файловые объекты.

Поэтому я добавляю вложения к write_pdf методу:

    def render_to_pdf(self, request):
        context_dict = {
            'application': self,
        }

        context_dict['pagesize'] = 'A4'
        context_dict['documents'] = dict()
        urls = []
        documents = self.user.documents.all()
    for document in documents:
        context_dict['documents'][str(document.id)] = dict()
        context_dict['documents'][str(document.id)]['signed_name'] = document.signed_file_name
        context_dict['documents'][str(document.id)]['name'] = document.file_name
        attachment = Attachment(url=BotoGateway().generate_cloudfront_url(document.signed_file_name))
        urls.append(attachment)

        html_template = get_template('application_form_pdf.html')
        rendered_html = html_template.render(context_dict).encode(encoding="UTF-8")

        pdf_file = HTML(string=rendered_html, base_url=request.build_absolute_uri()).write_pdf(attachments=urls)

        http_response = HttpResponse(pdf_file, content_type='application/pdf')
        http_response['Content-Disposition'] = 'filename="report.pdf"'

        return http_response

Я пробую 2 варианта: добавить URL-адреса вложения или добавить Attachment объекты с URL-адресами. Но ничего не сработало. Я получаю правильное имя файла, но при попытке открыть вложение я получаю файл размером 0 байт. Я отлаживаю свой код, и URL-адрес правильный.

...