2014-10-09 1 views
0

У меня есть простой веб-сервис, разработанный в Progress 4GL, из которого я получаю в качестве выходного параметра набор данных с блобом в whoich. Я сохранил файл pdf.Преобразование прогресса 4GL файл blob в pdf в C#

DEFINE TEMP-TABLE TTDocument    NO-UNDO 
     FIELD DocSeqNr      AS INT 
     FIELD FileName      AS CHAR 
     FIELD EventCode      AS CHAR 
     FIELD EventDescr      AS CHAR 
     FIELD FileContent     AS BLOB 
     . 


DEFINE DATASET ds FOR TTDocument. 

DEFINE INPUT  PARAMETER pCoCd       AS CHARACTER NO-UNDO. 
DEFINE INPUT  PARAMETER pLanCd      AS CHARACTER NO-UNDO. 
DEFINE INPUT  PARAMETER pUsrCd      AS CHARACTER NO-UNDO. 
DEFINE INPUT  PARAMETER pFilter      AS CHARACTER NO-UNDO. 
DEFINE  OUTPUT PARAMETER DATASET      FOR ds. 
DEFINE  OUTPUT PARAMETER pErrorTxt      AS CHARACTER NO-UNDO. 

В .Net я сделать запрос к этой веб-службы, и я обрабатывать этот ответ так:

 XmlElement doc; 
     DataSet xxx = new DataSet(); 
     beaHostDB.GetDocumets(pCoCd, lanCd, pUsrCd,idAdd, out doc, out pErrorTxt); 
     XmlElementToXmlDocment(doc); 
     var reader = new StringReader(doc.InnerXml); 
     xxx.ReadXml(reader); 
     foreach (DataRow dr in xxx.Tables[0].Rows) 
     { 
       DcumentList.Add(new Document { FileContent =dr["FileContent"].ToString}); 
     } 

Так что теперь у меня есть строка с двоичным представлением этого PDF-файла.

Как преобразовать эту строку в байты [], чтобы получить этот pdf-файл в C#?

+1

Как файл закодирован в ответ XML? Есть методы для преобразования строки в байты [] нравится Convert.FromBase64String – Luizgrs

+0

Вы спасатель жизни; –

ответ

0

Вероятно, он должен быть закодирован с помощью Base64, так что вы должны пойти с помощью метода Convert.FromBase64String:

var byteContent = Convert.FromBase64String(dr["FileContent"].ToString())