Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中显示SAP RFC中的pdf#_C#_Pdf_Binary_Saprfc - Fatal编程技术网

C# 如何在C中显示SAP RFC中的pdf#

C# 如何在C中显示SAP RFC中的pdf#,c#,pdf,binary,saprfc,C#,Pdf,Binary,Saprfc,在我的C#应用程序中,我调用了一个SAP RFC,它返回pdf的二进制格式(SAP中的关联类型是HRB2A_TAB_RAW255) 但是,当我在C#中读取返回的数据时,它是一种字符串数据类型——“25504462D312E330D0A25E2E3CF…等” Binarywrite需要字节数组,而不是二进制数据的字符串表示形式 当二进制数据块作为字符串数据类型出现时,我如何使用它 ====================================== 更新2:终于,我让它开始工作了 由于每行

在我的C#应用程序中,我调用了一个SAP RFC,它返回pdf的二进制格式(SAP中的关联类型是HRB2A_TAB_RAW255)

但是,当我在C#中读取返回的数据时,它是一种字符串数据类型——“25504462D312E330D0A25E2E3CF…等”

Binarywrite需要字节数组,而不是二进制数据的字符串表示形式

当二进制数据块作为字符串数据类型出现时,我如何使用它

======================================

更新2:终于,我让它开始工作了

由于每行都是一个255字节的数组,因此我使用array.Copy创建一行,其中元素数=255*行是从SAP返回的

IRfcFunction uploadFile = rfcrep.CreateFunction("ZTEST_BOL");
IRfcTable fileBin = uploadFile.GetTable("BIN");
uploadFile.SetValue("SHIPMENT_NO", "701324577");
uploadFile.Invoke(dest);

int len;
byte binary = new byte[255 * fileBin.RowCount + 1];

for (int i = 0; i <= fileBin.RowCount - 1; i++)
{
    fileBin.CurrentIndex = i;

    if(i==0)
    {
      Array.Copy(fileBin.CurrentRow.GetByteArray("CONTENT"), 0, binary, 0, 
        fileBin.CurrentRow.GetByteArray("CONTENT").Length);
      len = fileBin.CurrentRow.GetByteArray("CONTENT").Length;
    }
    else
    {
    Array.Copy(fileBin.CurrentRow.GetByteArray("CONTENT"), 0, binary, len, 
          fileBin.CurrentRow.GetByteArray("CONTENT").Length);
    len += fileBin.CurrentRow.GetByteArray("CONTENT").Length;
    }
}
IRfcFunction uploadFile=rfcrep.CreateFunction(“ZTEST_BOL”);
IRfcTable fileBin=uploadFile.GetTable(“BIN”);
uploadFile.SetValue(“装运编号”,“701324577”);
uploadFile.Invoke(dest);
内伦;
字节二进制=新字节[255*fileBin.RowCount+1];

对于(int i=0;i我想,如果我理解正确,你需要的是:

System.Text.ASCIIEncoding.Default.GetBytes("255044462D312E330D0A25E2E3CF...etc")

可能不是Ascii,而是System.Text有一些字符串编码器。您可以使用它们将字符串转换为字节,然后再转换回来。

我想,如果我理解正确,您需要的是:

System.Text.ASCIIEncoding.Default.GetBytes("255044462D312E330D0A25E2E3CF...etc")

可能不是Ascii,而是System.Text有一些字符串编码器。您可以使用它们将字符串转换为字节,然后再转换回来。

因为
HRB2A\u TAB\u RAW255
是一个原始表,其中每一行都是
HRB2A\u RAW255
类型的字段,这是原始数据,所以该表的每一行可能都是一个字节数组

请考虑SAP中的此映射表:

您可以尝试以下方法:

foreach (IRfcStructure row in sapTable)
        {
            DataTable loTable = new DataTable();
            for (int liElement = 0; liElement < sapTable.ElementCount; liElement++)
            {
                RfcElementMetadata metadata = sapTable.GetElementMetadata(liElement);

                byte[] binary = new byte[255];
                binary  = row.GetByte(metadata.Name);
                ldr[metadata.Name] = binary;
            }
            loTable.Rows.Add(ldr);
        }
        return adoTable;
    }
foreach(sapTable中的IRfcStructure行)
{
DataTable loTable=新DataTable();
对于(int-liElement=0;liElement

不要直截了当地说,这只是一个简单的例子,我甚至不知道它是否有效。你也可以。

因为
HRB2A\u TAB\u RAW255
是一个原始表,其中每一行都是
HRB2A\u RAW255
类型的字段,这是原始数据,可能这个表的每一行都是一个字节数组

请考虑SAP中的此映射表:

您可以尝试以下方法:

foreach (IRfcStructure row in sapTable)
        {
            DataTable loTable = new DataTable();
            for (int liElement = 0; liElement < sapTable.ElementCount; liElement++)
            {
                RfcElementMetadata metadata = sapTable.GetElementMetadata(liElement);

                byte[] binary = new byte[255];
                binary  = row.GetByte(metadata.Name);
                ldr[metadata.Name] = binary;
            }
            loTable.Rows.Add(ldr);
        }
        return adoTable;
    }
foreach(sapTable中的IRfcStructure行)
{
DataTable loTable=新DataTable();
对于(int-liElement=0;liElement

不要直截了当地说,这只是一个快速拍摄,我甚至不知道它是否有效。你也可以。

谢谢,我尝试了UTF8编码,但没有成功。当我在记事本中打开pdf文件时,它只包含来自SAP的二进制格式-“2550446…”另外,0x25 0x50 0x44 0x46表示一个pdf文件,因此来自SAP的任何内容都似乎是pdf文件。只是不确定如何处理长字符串的二进制pdf。似乎您需要了解SAP以该字符串形式提供给您的内容。是否有任何文档?谢谢,我尝试了UTF8Encoding,但运气不佳。当我在记事本中打开pdf文件时,它只包含来自SAP的二进制格式-“25504446…”另外,0x25 0x50 0x44 0x46表示一个pdf文件,因此来自SAP的任何内容都似乎是pdf文件。只是不确定如何处理这个长字符串的二进制pdf。似乎您需要弄清楚SAP以该字符串形式向您提供了什么。是否有任何文档?这确实是正确的方向。我用代码更新了我的第一篇文章at为我获取了数据,但我仍然没有一个可用的pdf。这确实是正确的方向。我用获取数据的代码更新了我的初始帖子,但我仍然没有可用的pdf。