2017-01-23 216 views
0

我有一個腳本,它可以生成一個PDF文件,然後將它發送給另一個應用程序(LogicalDOC)以保存它。創建pdf時包含文件名路徑

我遇到了​​行的問題。文件名應該是我的文件名變量,但它不考慮。

如果我編寫filename.pdf,我發現在LogicalDOC中的文件名.pdf具有良好的內容。

但是文件名必須自動更改爲每個新的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"我獲得logicalDoc中的test.pdf文件(見圖片)
  • "FileName":"filename"我得到的文件名的文件logicalDoc中的未知格式(請參見圖片)

我想獲得我的filename variable作爲文件名

enter image description here

+0

我填寫了一些表格,其中包含一些信息:姓氏,年齡,性別......我創建了一個從我的表單中獲取所有數據的pdf文件。然後,這個pdf文件保存在我的服務器上,我想在LogicalDOC中導入這個文檔。在LogicalDOC中給我的文件的文件名應該和在我的服務器上保存文件名相同。很顯然,'FileName'只帶有類似於'try.pdf'而不是路徑:/ – Deadpool

+0

如果我理解正確,可以使用format:'payload ='{{「language」:「fr」,「fileName」:{0 },「folderId」:3309569}}'.format(filename)'。現在'payload'變量將包含文件名。這是你需要的嗎? – neverwalkaloner

+0

@neverwalkaloner對不起,它不工作。我想在LogicalDoc中獲得文件名變量的文件名。例如:當我寫文件名變量時,'Acte_Naissance_Test_Muriel_2011-09-11.pdf'。 「{0}」不起作用。看起來'fileName'不考慮變量:/ – Deadpool

回答

1

您可以使用字符串格式化此。請按照以下步驟操作:

payload = '{{ "language":"fr","fileName":"{0}","folderId":3309569 }}'.format(filename) 
+0

謝謝!正如我所建議的,它錯過了''''在'{0}'周圍'' – Deadpool

+0

@Valentin是的,我錯過了。不用謝:) – neverwalkaloner

相關問題