У меня есть сценарий, который позволяет сгенерировать PDF-файл, а затем отправить его в другое приложение (LogicalDOC), чтобы сохранить его.Включить путь в имя файла при создании pdf
У меня проблема с payload
линия. Имя файла должно быть моей переменной имени файла, но оно не учитывается.
Если я пишу filename.pdf
, я нахожу filename.pdf в LogicalDOC с хорошим контентом.
Но имя файла должно автоматически меняться для каждого нового BirthCertificate.
Как я могу передать путь как имя файла?
Это мой сценарий:
@login_required
def BirthCertificate_PDF(request, id) :
birthcertificate = get_object_or_404(BirthCertificate, pk=id)
data = {"birthcertificate" : birthcertificate}
template = get_template('BC_raw.html')
html = template.render(Context(data))
filename_directory = str(BirthCertificate.objects.get(pk=id).lastname.encode('utf-8')) + "_" + str(BirthCertificate.objects.get(pk=id).firstname.encode('utf-8')) + "_" + str(BirthCertificate.objects.get(pk=id).birthday)
filename = 'Acte_Naissance_' + filename_directory + '.pdf'
path = '/Users/valentinjungbluth/Desktop/Django/Individus/' + filename
file = open(path, "w+b")
pisaStatus = pisa.CreatePDF(html.encode('utf-8'), dest=file, encoding='utf-8')
file.seek(0)
pdf = file.read()
if pdf :
payload = '{ "language":"fr","fileName":filename,"folderId":3309569 }'
upfile = path
files = {
'document': (None, payload, 'application/json'),
'content': (os.path.basename(upfile), open(upfile, 'rb'), 'application/octet-stream')
}
url = 'http://localhost:8080/services/rest/document/create'
headers = {'Content-Type': 'multipart/form-data'}
r = requests.post(url, files=files, headers=headers, auth=('admin', 'admin'))
context = {"birthcertificate":birthcertificate,
"path":path}
return render(request, 'BC_PDF.html', context)
file.close()
return HttpResponse(pdf, 'application/pdf')
Если бы я писал:
"FileName":"test.pdf"
я получить файл test.pdf в logicalDoc (смотри рисунок)"FileName":"filename"
я получить файл имя файла с неизвестный формат в logicalDoc (см. рисунок)
Я хотел бы получить мой filename variable
в качестве имени документа
Я заполнил форму с информацией: фамилия, возраст, пол, ... и создаю pdf-файл, который берет все данные из моей формы. Затем этот файл PDF сохраняется на моем сервере, и я хочу импортировать этот документ в LogicalDOC. Имя файла, которое предоставляется моему файлу в LogicalDOC, должно быть таким же, как сохранение имени файла на моем сервере. По-видимому, 'FileName' принимает только что-то вроде:' try.pdf', а не путь:/ – Deadpool
Если я правильно понял, вы могли бы использовать формат: 'payload = '{{" language ":" fr "," fileName ": {0 }, "folderId": 3309569}} '. format (filename) '. Теперь переменная 'payload' будет содержать имя файла. Это то, что вам нужно? – neverwalkaloner
@neverwalkaloner Извините, но не работает. Я хотел бы получить имя файла в LogicalDoc переменной имени файла. Например: 'Acte_Naissance_Test_Muriel_2011-09-11.pdf', поскольку я написал переменную имени файла. '{0}' не работает. Кажется, что 'fileName' не принимает переменную учетной записи:/ – Deadpool