从VBA中的Base64字符串生成PDF

时间:2018-01-20 00:43:55

标签: json vba pdf base64

我有以下JSON响应:

{
  "status": "Success",
  "label": "pdf_base64_string",
  "order": "ABC123456"
}

我正在尝试按照以下代码从Base64字符串保存PDF文件:

FileData = Base64DecodeString(pdf_base64_string)
fileNum = FreeFile
FilePath = "C:\label.pdf"
Open FilePath For Binary Access Write As #fileNum
     Put #fileNum, 1, FileData
Close #fileNum

这会导致PDF文件损坏/无效(PDF查看器无法识别)。

2 个答案:

答案 0 :(得分:1)

改编自:Inserting an Image into a sheet using Base64 in VBA?

这对我有用 - 将文件保存到与运行代码的工作簿相同的位置。

javax.swing.JButton[,321,321,30x30(...),text=here is the text,defaultCapable=true]

答案 1 :(得分:0)

pdf转base64需要注意的点

  1. 如果您要将 pdf 转换为 base64/blob 以用于 rest API,则不要使用字符串变量,因为字符串变量的大小仅为 32200。
  2. 如果您使用 pdf 作为 rest API,那么您需要仅以二进制形式阅读 pdf [不要通过文本阅读]
  3. 在 VBA 中,JSON 文件通过纯文本发送,因此请尝试使用流而不是 JSON 文件。

我正在分享对 pdf 文件的 base64 进行二进制转换的代码。

 Function EncodeFileBase64(FileName As String) As String


fileNum = FreeFile
Open FileName For Binary As fileNum
ReDim arrData(LOF(fileNum) - 1)
Get fileNum, , arrData
Close fileNum

Set objXML = New MSXML2.DOMDocument
Set objNode = objXML.createElement("b64")

objNode.DataType = "bin.base64"
objNode.nodeTypedValue = arrData
EncodeFileBase64 = objNode.text

EncodeFileBase64 = Replace(objNode.text, vbLf, "")

 
Set objNode = Nothing
Set objXML = Nothing

End Function