将PDF转换为Base64string表示forms在转换回时不可打开

我需要将PDF转换为基本64string,以便我可以将其发送到XML文件中。 我正在使用Excel电子表格来存储我们需要进入XML的所有数据,然后将一些将XML打印到文件的VBA代码。 所述XML文件的收件人无法打开我的PDF文件。 Adobe说这不是一个.pdf文件,或者它是腐败的。 我做了一些额外的代码来testing我的原始转换,我也遇到了同样的问题。 XSD指定数据应该是xsd:base64Binarytypes

第一个函数是生成以XML格式发送的string。 第二个函数是从第一个函数调用的,纯粹是为了我的testing目的。

我发现这个代码在其他stackoverflow线程,并从几个来源拼凑在一起,但它使用不同的常量值(例如,“Base64Data”,“B64”和“Base64”都是我见过的objXMLinput略有不同。的createElement)。 我也有一种感觉,我已经得到了文本/二进制和读/写function相反的顺序。 生成的string看起来非常像base64二进制文件,但是当我快速扫描生成的XML时,有些部分看起来像是可疑的重复。

Function processBase64Binary(ByVal filePath As String) As String 'define objects used Dim mstream As Stream Dim objXML As MSXML2.DOMDocument Dim objNode As MSXML2.IXMLDOMElement 'load the data from the filepath provided Set mstream = New Stream mstream.Type = adTypeBinary mstream.Open mstream.LoadFromFile filePath 'convert to base 64 binary and convert to a string to be used in XML Set objXML = New MSXML2.DOMDocument Set objNode = objXML.createElement("Base64Data") objNode.DataType = "bin.base64" objNode.nodeTypedValue = mstream.Read() myText = objNode.Text testDecode (myText) processBase64Binary = myText End Function Sub testDecode(ByVal strData As String) Dim mstream As Stream Dim objXML As MSXML2.DOMDocument Dim objNode As MSXML2.IXMLDOMElement Set objXML = New MSXML2.DOMDocument Set objNode = objXML.createElement("Base64Data") objNode.DataType = "bin.base64" objNode.Text = strData decodeBase64 = objNode.nodeTypedValue Set mstream = New Stream mstream.Type = adTypeText mstream.Open mstream.WriteText (strData) mstream.SaveToFile ("D:\tested5.pdf") End Sub