2017-01-10 77 views
2

我開發我的Django website約2個月後,我開始用自己的功能獲得良好的全球業績。 但是,現在我必須開始一個非常難的部分(在我看來),我需要一些建議,之前的想法做到這一點。從Django網站發送PDF文件到LogicalDOC

我的Django網站使用Django變量從HTML模板創建一些PDF文件。到目前爲止,我將PDF文件直接保存在桌面上(位於特定文件夾中),但完全不安全。 因此,我安裝了另一個名爲LogicalDoc的網絡應用程序,以便將PDF文件直接保存在此應用程序上。 PDF文件被創建併發送到LogicalDoc。 LogicalDoc擁有2個API:SOAP和REST(http://wiki.logicaldoc.com/rest/#/),我知道Django可以與REST方法進行通信。

我讀Django文檔的這一部分也爲了瞭解我怎樣才能工藝:我爲了https://docs.djangoproject.com/en/dev/topics/http/file-uploads/

訂立的計劃,以瞭解我揭露:

enter image description here

然後,我寫一個腳本這讓一些事情:

  • 當創建PDF文件,我創建了一個倍呃在LogicalDoc裏面,例如下面的名字:lastname_firstname_birthday

  • 兩種可能性:如果文件夾存在,我不創建一個新文件夾,否則我創建它。

  • 一旦完成,我將PDF文件直接發送文件夾內與文件夾名稱比較PDF的名字做

我對這個過程中的一些問題:

  • 首先,是否有可能做出這種事情?

  • 這難道不是嗎?

  • 你可以給我什麼樣的建議?

非常感謝!

PS:如果你需要我的劇本的一些部分,主要PDF創建的一部分,我可以我的問題後,張貼;)

+0

使用默認格式保存pdfs?不是個好主意。將pdf內容存儲爲'bz2 style(html-safe)'文本。最好的問題是如何搜索或回憶舊的輸出?我用(uploded_csv> matplot> PDF>(html_OUT | SQL_BZ2(BASE64))。你可以在短時間內創建這個pdf文件嗎?不要保存爲PDF文件,保存你的'變量'!計算'pdf'或'variable '。 – dsgdfg

+0

它適用於我的方法。別忘了我使用Django進行編碼^^我的問題不存在,但我怎樣才能直接在其他應用程序中發送生成的文件 – Deadpool

+1

你試圖達到的終點是什麼? ? 它是您正在尋找的那個? http://docs.logicaldoc.com/resources/wsdoc/rest/index.html?version=7.5.1#!/document/create 基本上它會變得更容易因爲你會得到第一個工作文件傳輸的例子。 –

回答

2

的想法很簡單,但它總是需要一些練習。 我強烈建議你使用REST API,忘記SOAP作爲它可以給你帶來的唯一東西 - 是'痛':)

如果我們檢查文檔,document/create它會給出下一個信息。

  1. 我們必須與之通信的端點。 [協議]:// [服務器]:[端口] /文件/創建
  2. 使用HTTP方法 - POST的參數
  3. 列表以您的要求提供:文件內容

甚至,你可以通過點擊「嘗試一下」按鈕來測試API併爲您在您的瀏覽器中的「網絡」選項卡上的要求(如果您打開開發者工具)

我一個我不知道你必須在'document'參數中提供什麼類型的元數據,但是我知道你可以輕鬆地通過測試它並將XML或JSON數據放入'document'參數中來理解應該做什麼。

內容是傳輸到服務器(這將是您的文件)的字節數組。

綜上所述,以「文件/新建」的請求URI將是簡單

body = { 'headers': {},'object': {},} 
document = "<note>data</note>" 
content=open('report.xls', 'rb') #r - reading, b - binary 
r = requests.post('http://logicaldoc/document/create', body=body, document=document, content=content) 

請記住,文件傳輸請求需要時間,有時你可能會超時異常。你的代碼會停下來等待響應,所以用asyncio或芹菜做一些練習可能是個好主意。請記住那些可能的問題。