在PI java映射中从url中获取带有Base64有效载荷的pdf文件。

问题描述 投票:0回答:1

我能够从一个URL中获取一个PDF文件,将流编码成64号基数,并将该字符串发送到第三方的一个XML文件字段内,但我在尝试打开PDF文件解码时遇到了下一个问题。

无法提取嵌入的字体 "ArialMT,Bold"。一些字符可能无法正确显示或打印。

以下是SAP PI 7.1中Java Mapping的代码。

    urlStr = "Insert here your url";
    StringBuffer data = new StringBuffer();
    URL url = new URL(urlStr);
    URLConnection conn = url.openConnection ();

    // Get the response
    BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    StringBuffer sb = new StringBuffer();
    String line;
    String carriagereturn = System.getProperty("line.separator");

    while ((line = rd.readLine()) != null)
    {
        trace.addWarning(line);
        sb.append(line);
        sb.append(carriagereturn);
    }

    rd.close();
    result = sb.toString();
} catch (Exception e){
    trace.addWarning(e.toString());
}

return org.apache.commons.codec.binary.Base64.encodeBase64String(result.getBytes());

我读到,当你执行 "ArialMT,Bold "时,无法提取字体。InputStreamReader 因为信的版权。这是真的吗?

是否有其他任何可能性嵌入字体后使用iText库或类似的?

java itext sap sap-xi sap-pi
1个回答
0
投票

如果在创建过程中,字体没有嵌入到PDF中,并且你在打开pdf的系统上没有相同的确切字体,那么就会发生这种情况。

pdf是用itext生成的吗?回答 可以帮助你.否则,可以试试把字体放在系统的字体目录下。

编辑:至于第二个问题,有一个小的演示程序,可以在现有的pdf文件中嵌入字体,其中的字体是没有被嵌入的 此处

© www.soinside.com 2019 - 2024. All rights reserved.