【发布时间】:2022-10-07 20:06:30
【问题描述】:
我正在尝试将报告转换为 base64 代码,以便可以通过 API 调用将其发送到不同的应用程序。
为了测试,我使用了一个在线 pdf 到 base64 转换器,我复制了生成的代码,应用程序成功接收了我发送的文档。现在,我希望能够将 Business Central 中的报告转换为 base64 并发送,而不是硬编码 base64 代码。但是,我的 API 调用失败并显示错误消息“PDF 验证失败”。当我比较在线转换器和 AL 程序的输出时,我发现它们是不同的。下面是我用来将报告转换为 base 64 的代码。
local procedure BssiReport()
var
ReportOutstream: OutStream;
ReportInstream: InStream;
TempBlob: Codeunit "Temp Blob";
res: Text;
Txt: Text;
Base64Convert: Codeunit "Base64 Convert";
begin
TempBlob.CreateOutStream(ReportOutstream);
Report.SaveAs(Report::BssiPLMLeaseSummary, '<?xml version="1.0" standalone="yes"?><ReportParameters name="test" id="50505555"><Options><Field name="test" /><Field name="testdate">2022-07-20</Field></Options><DataItems><DataItem name="test2">VERSION(1) SORTING(Field1) WHERE(Field1=1(A100))</DataItem><DataItem name="test3">VERSION(1) SORTING(Field1,Field2)</DataItem><DataItem name="test4">VERSION(1) SORTING(Field1,Field5,Field2)</DataItem><DataItem name="test5">VERSION(1) SORTING(Field1,Field3,Field4,Field5,Field6)</DataItem><DataItem name="test6">VERSION(1) SORTING(Field2,Field48,Field3,Field4,Field5,Field1)</DataItem><DataItem name="test7">VERSION(1) SORTING(Field2,Field48,Field3,Field4,Field5,Field1)</DataItem><DataItem name="test8">VERSION(1) SORTING(Field2)</DataItem></DataItems></ReportParameters>', ReportFormat::Pdf, ReportOutstream);
TempBlob.CreateInStream(ReportInstream);
WHILE NOT (ReportInstream.EOS) DO BEGIN
ReportInstream.READTEXT(Txt);
res += Txt;
END;
jsonObj.Add('documentBase64', Base64Convert.ToBase64(res));
//...
end;
我不会在这里复制整个代码,但这是我使用在线转换器得到的输出的第一部分:
"JVBERi0xLjcNCiWhs8XXDQoxIDAgb2JqDQo8PC9QYWdlcyAyIDAgUiAvVHlwZS9DYXRhbG9nPj4NCmVuZG9iag0KMiAwIG9iag0KPDwvQ291bnQgMS9LaWRzWyA0IDAgUiBdL1R5cGUvUGFnZXM+Pg0KZW5kb2JqDQozIDAgb2JqDQo8PC9DcmVhdGlvbkRhdGUoRDoyMDIyMDcwNDExMTYxOCkvQ3JlYXRvcihQREZpdW0pL1Byb2R1Y2VyKFBERml1bSk+Pg0KZW5kb2JqDQo0IDAgb2JqDQo8PC9Db250ZW50cyA1IDAgUiAvTWVkaWFCb3..."
这是我使用 CodeUnit "Base64 Convert" 从 Business Central 得到的:
"JVBERi0xLjcl77+977+977+977+977+977+977+9MSAwIG9ialsvUERGL1RleHQvSW1hZ2VCL0ltYWdlQy9JbWFnZUldZW5kb2JqMiAwIG9iajw8L1R5cGUvUGFnZS9QYXJlbnQgNiAwIFIvTWVkaWFCb3hbMCAwIDc5MiA2MTJdL0NvbnRlbnRzIDUgMCBSL1Jlc291cmNlczw8L1Byb2NTZXQgMSAwIFIvWE9iamVjdDw8Pj4vRm9udDw8L0YzIDMgMCBSL0Y0IDQgMCBSPj4+Pj4+ZW5kb2JqMyAwIG9iajw8L1R5cGUvRm9udC9TdWJ0eXBlL1R..."
有人知道为什么 Business Central 没有产生相同的输出吗?
【问题讨论】:
标签: dynamics-business-central dynamics-al