2009-10-26 361 views
7

我有base64Binary的原始數據。將base64Binary轉換爲pdf

string base64BinaryStr = "J9JbWFnZ......" 

我怎樣才能讓PDF文件?我知道它需要一些轉換。請幫幫我。

+0

您使用的是哪種語言? – 2009-10-26 20:01:52

+0

原始數據是繪圖/繪圖,還是顯示在表格中,或者只是將原始數據放入PDF中? – 2009-10-26 20:02:32

+0

c#被用作開發語言。 – 2009-10-26 20:05:41

回答

2

所有你需要做的是通過任何Base64編碼解碼器,將你的數據作爲一個字符串,並傳回的字節數組運行。然後,只需在文件名中用pdf寫出該文件即可。 或者,如果您要將其傳回瀏覽器,只需簡單地將這些字節寫入輸出流,並在標題中標記適當的MIME類型。

大多數語言都內置了用於從Base64轉換到Base64的方法。或者使用您的特定語言的簡單Google將返回您可以使用的許多實現。來回Base64的過程非常簡單,甚至可以由新手開發人員來實現。

18

步驟1是從您的base64串轉換爲一個字節數組:

byte[] bytes = Convert.FromBase64String(base64BinaryStr); 

步驟2是節省字節數組磁盤:

System.IO.FileStream stream = 
    new FileStream(@"C:\file.pdf", FileMode.CreateNew); 
System.IO.BinaryWriter writer = 
    new BinaryWriter(stream); 
writer.Write(bytes, 0, bytes.Length); 
writer.Close(); 
+0

Base-64字符數組的長度無效。在setp 1 – 2009-10-26 20:11:18

+0

@novicedeveloper:通常意味着在你的字符串中有一些奇怪的字符使它成爲無效的Base-64字符串。你在字符串的末尾碰巧有兩個雙引號('「」')? – MusiGenesis 2009-10-26 20:22:13

+0

或者這個字符串被傳遞給查詢字符串中的ASP.Net頁面? – MusiGenesis 2009-10-26 20:24:18

11
using (FileStream stream = System.IO.File.Create("c:\\file.pdf")) 
{ 
    byte[] byteArray = Convert.FromBase64String(base64BinaryStr); 
    stream.Write(byteArray, 0, byteArray.Length); 
} 
2

base64BinaryStr - 從web服務的SOAP消息

byte[] bytes = Convert.FromBase64String(base64BinaryStr); 
0

我知道這個問題奠定了背後。但也許我可以幫助有人使用此代碼。

我甚至沒有在硬盤上寫任何文件。 ;-)

Response.AddHeader("Content-Type", "application/pdf"); 
Response.AddHeader("Content-Length", base64Result.Length.ToString()); 
Response.AddHeader("Content-Disposition", "inline;"); 
Response.AddHeader("Cache-Control", "private, max-age=0, must-revalidate"); 
Response.AddHeader("Pragma", "public"); 
Response.BinaryWrite(Convert.FromBase64String(base64Result)); 

注:變量 'base64Result' 包含Base64編碼字符串: 「JVBERi0xLjMgCiXi48 /苕......」

編碼快樂! ;-)

+0

注意:我們必須在我們的代碼中刪除此行: 'code' Response.AddHeader(「Content-Length」,base64Result.Length.ToString()); 'code' 因爲有些瀏覽器無法下載整個文件。 我們刪除了字節的數量後,一切正常。 讓瀏覽器自行完成字節大小計算! ;-) – 2017-01-19 09:15:08

0

首先將Bas64字符串轉換爲byte []並將其寫入文件。

byte[] bytes = Convert.FromBase64String(base64BinaryStr); 
File.WriteAllBytes(@"FolderPath\pdfFileName.pdf", bytes);