ABAP+从SAP发出去的PDF文件在第三方系统出现乱码

这是一个 ABAP转换PDF调用函数CALL FUNCTION 'CONVERT_OTF'的问题记录,关乎字体STSong-Light-ldentity-H 和 STSong-Light的区别

背景:

做了一个增强,是采购订单审批后自动发送采购订单PDF1到企业微信,用户再将企业微信收到的PDF发送到SS系统进行流程签核。PDF1就是会乱码的文件。

在增强里面转化PDF是调用标准程序:CALL FUNCTION 'CONVERT_OTF',然后再进行二进制转换,再发送给企业微信的。

另外还有一个PDF2文件,是用户直接在SAP使用smartform时,预览下载(pdf!)的PDF2文件,这个文件在任何系统都没有报错。

报错:

用户在企业微信接收到PDF1附件展示是正常的,但是上传到SS系统后,出现乱码(字段间距出现问题),如下:

解决:

第三方人员判断可能是字体问题,开始查看:

PDF1的模板字体

PDF2的模板字体

两个模板的字体都是一样的,所以对于模板本身是没有问题的

但是使用office办公软件来查看PDF的字体的时候,发现PDF1和PDF2的字体有轻微差别,如下:

PDF1的字体是STSong-Light

PDF2的字体是STSong-Light-ldentity-H

最直接的方式就是让SS系统添加上没有的字体,但是经过查询,发现STSong-Light-ldentity-H和STSong-Light从本质上来说就是同一个字体,所以不是字体原因导致的乱码。

问题还是出现在SAP里面,还得找一下。于是开始对比手动导出PDF和系统转换PDF的代码,发现确实是我参数设置有问题。

DEBUG步骤:

先进行系统标准程序保存PDF2的调试

这是使用标准事务代码 PDF! 时系统的参数设置,如下:

这是我写在增强里的转换PDF的代码:

我的代码里面多设置了一个use_cascading = 'x'.的参数,就是这里有问题。

为什么我会在这里多加一个参数呢?因为我在开发时都是网上查找,一个一个案例学习(copy)别人的,以至于开发的时候,浏览器窗口是这样的:

这个ABAP转换PDF调用函数CALL FUNCTION 'CONVERT_OTF'案例,我还特意看了这些参数的意义,又因为我们公司有湾湾用户,所以我故意保留了这个参数,防止繁体字转化失败,没想到画蛇添足了,好吧,就记录到这里!!

踩过坑就长记性了!!

相关推荐
один but you38 分钟前
从可变参数到 emplace:现代 C++ 性能优化的核心组合
java·开发语言
humors2212 小时前
从数据到决策:汽车使用成本的精细计算指南
大数据·程序人生
MY_TEUCK2 小时前
【Java 后端 | Nacos 注册中心】微服务治理原理、选型与注册发现实战
java·开发语言·微服务
测试员周周2 小时前
【Appium 系列】第13节-混合测试执行器 — API + UI 的协同执行
开发语言·人工智能·python·功能测试·ui·appium·pytest
光泽雨2 小时前
c#中的Type类型
开发语言·前端
见叶之秋2 小时前
C++基础入门指南
开发语言·c++
计算机安禾3 小时前
【c++面向对象编程】第42篇:模板特化与偏特化:为特定类型定制实现
开发语言·c++·算法
qq_401700413 小时前
Qt 项目中使用 QSS 的全面总结
开发语言·qt
玖釉-3 小时前
C++ 中的循环语句详解:while、do...while、for、嵌套循环与循环控制
开发语言·c++·算法
XMYX-03 小时前
37 - Go env 环境变量:配置管理与运行时控制
开发语言·golang