【问题标题】:Get pdf file from url with Base64 payload in PI java mapping在 PI java 映射中使用 Base64 有效负载从 url 获取 pdf 文件
【发布时间】:2013-07-03 15:05:13
【问题描述】:

我能够从 URL 获取 PDF 文件,将流编码为 base 64 并将字符串发送到 XML 文件的字段中的第三方,但是当我尝试打开 PDF 时遇到下一个问题文件解码。

无法提取嵌入字体“ArialMT,Bold”。某些字符可能无法正确显示或打印。

这是 SAP PI 7.1 中 Java 映射的代码:

    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());

我了解到,由于信件的版权,当您执行InputStreamReader 时无法检索字体。是真的吗?

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

【问题讨论】:

    标签: java itext sap sap-xi sap-pi


    【解决方案1】:

    如果在创建过程中字体没有嵌入到 PDF 中,并且您在打开 pdf 的系统上没有完全相同的字体,则可能会发生这种情况。

    pdf 是使用 itext 生成的吗?在这种情况下,这个answer 可以帮助你。 否则,请尝试将字体放在系统字体目录中。

    编辑: 至于第二个问题,有一个小demo程序可以在一个没有嵌入字体的现有pdf文件中嵌入字体here

    【讨论】:

    • PDF 由 SAP 生成并存储在内容服务器中。您可以通过 url 访问文件并检查文档属性,字体已嵌入。当我恢复 pdf 的流时出现问题,字体不包括在内。
    • 如何生成 PDF? smartform-to-pdf 模块功能?
    猜你喜欢
    • 1970-01-01
    • 2016-03-21
    • 2017-01-04
    • 2011-02-27
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    • 2018-07-05
    相关资源
    最近更新 更多