我在一台生产服务器上遇到了一个奇怪的问题。我们有一个架构,在这个架构中,我们使用web服务与.NET应用程序集成了AX。我们使用System.IO对象将pdf报告转换为字节,并通过web服务将此信息发送到应用程序。我们使用的方法运行良好,直到最近我们开始看到奇怪的结果。生产环境中返回的字节数组与其他环境不同。显然,代码库在所有环境中都是相同的。字节数组有一个很大的数字,大约是47000,其余的环境大约是3000。这会导致在app中生成报告时出现问题。
为了补充上面的内容,所讨论的报告是一个项目及其条形码的AX SSRS报告。在AX客户端中报告打印正常。但是为了将其传递给web服务,报告被转换为字节,并发送到应用程序,然后应用程序将其转换回图像并显示在UI上。由于生产过程中返回的字节数不同,打印的图像有项目编号,但没有条形码。显示空白,而不是条形码。我已经检查了SSRS服务器上是否安装了条形码字体,如果我直接在AX中打印报告,它可以正常打印。我知道架构本可以更简单,但这就是我目前所拥有的,需要让它工作。任何帮助都将不胜感激。谢谢。
static System.Byte[] test()
{
str _filePath = "C:\\Users\\Harry\\Desktop\\ABC.PDF";
System.Byte[] pdfBuffer;
System.IO.FileInfo fileInfo;
System.IO.FileStream fs;
int size;
Set permissionSet = new Set(Types::Class);
permissionSet.add(new FileIOPermission(_filePath,'r'));
permissionSet.add(new InteropPermission(InteropKind::ClrInterop));
CodeAccessPermission::assertMultiple(permissionSet);
//Load the file
fileInfo = new System.IO.FileInfo(_filePath);
//Initiallize the byte array by setting the length of the file
size = int642int(fileInfo.get_Length());
pdfBuffer = new System.Byte[size]();
// Stream the file
fs = new System.IO.FileStream(fileInfo.get_FullName(), System.IO.FileMode::Open, System.IO.FileAccess::Read);
fs.Read(pdfBuffer, 0, pdfBuffer.get_Length());
fs.Close();
fs.Dispose();
//Revert the access
CodeAccessPermission::revertAssert();
return pdfBuffer;
}
发布于 2016-08-04 22:32:32
解决方案是在报告服务器上安装条形码字体,然后重新启动服务器。我们延迟了重新启动服务器的时间。要查找所需的字体,请在AX客户端中生成ssrs报告并将其导出为pdf。在Adobe阅读器中,您可以检查报告的属性,并在字体选项卡上查看所需的条形码。那是你的字体。
https://stackoverflow.com/questions/38698097
复制相似问题