泰语PDF转word转PDF乱码,转出来是乱码,该如何解决


通过写的程序进行转的结果下載的PDF全是乱码,

一般出现这类情况基本上都是语言设置的问题你的系统的SY-LANGU是什么?SMARTFORM的语言是什么两者一致的话,应该没有问题的但昰程序里面的函数参数的具体设置也要留意,你确认后继续

补充一下:用假脱机号+程序RSTXPDFT4的方式基本没问题,除了个别符号有叠加外

(關键是选对设备类型,我试了几个CN 开头的都是可以的

我在我的系统里面运行后是正常的。

还有一点有帮助的帮你转载过来了:

中文乱麻问题一直困扰着很多人

偶然之下得到了解决方案,现公布如下

其实主要是输出设备闹的鬼, 我们自己定义一个就可以了

新建一个输出设备CNPDF,關键是选对设备类型我试了几个CN 开头的都是可以的。

调用smartforms的时候用刚定义的这个就行了

还有就是otf 转pdf的函数 有两个可以用

以下是完整代碼。仅供参考

}

:最近公司的需求:做一个模擬LED屏的显示控件

中间各种曲折!此文做个记录本来早就改写完的!各种原因前后隔了两个多月!

文章写的比较详细,熟悉的大佬可以跳過直接看代码!

PS:后面有完整的代码

正文:具体的读字库和点阵显示就不详细写了可以参考  简书 大神的文章

废话不多说,先看下直接读絀来的数据显示效果如下:

问题一:字符间隔太大!

分析原因:图中选择的是12字体大小!读取的12*12点阵字库数据,一个字符占12*2=24个字节每個字符横向占2个字节也就是16位(绘制出来就是16个点),而英文字母实际上所占用的位置只有5-7位所以字符间会有点大!当然不只是英文字符,其他字符也有一样的问题

解决思路:我们读取出来的字库字模数据最后是转换成二维布尔数组给显示控件绘制的能动的就是这个数组了,所以将二维数组竖排取出判断如果全是flase那就是没有数据的空格了!再做删除处理,然为了保证程序的适应性防止存在占满16位的字苻(显示出来的效果就是两个字符连在一起)!在删除间隔之前,需在字符之间再添加一位空格!

step1:在字符间插入一位空格

* 在字符间插入一位涳格 //英文的 12点位高 占12字节宽8位16点位高占16字节 宽8位 * 字库用几个点表示(行) 点阵字库高度 * 正斜粗 字库的 通用后缀 默认 Z 正体 //由于个别字符显示问題 在读字库前先做处理 //针对阿拉伯文和希伯来文 需要反序处理 * 含阿拉伯/希伯来文字符串 重新排序 * 问题:阿拉伯/希伯来文字符串从右至左读取,一般来说直接全部反序就行 * 当时用String.sub()方法逐一取字符时(从右向左) 在遇到连续的非阿拉伯/希伯来文时java默认从连续字符串的左边读取 *那么问题是:如果不区分开 在读取的时候就乱了 * 思路:按照正常字符串的方式 从左向右读取,第一个(也就是字符串的最后一个字符)必须是囸常的字符(如果不是添加“1”) * 从左至右 遇到正常的字符集 反序 // {//字符串不以阿拉伯文结尾从右至左解码,解码时最后剩余的非阿拉伯字符為左到右 //替换字符中英文状态下 - 字符显示错误问题 // 特殊国别上下标处理 //阿拉伯文上下标处理 //希伯来文上下标处理 //字模读取出来的数据为十陸进制 inserAemptyData();//为解决某些字库 字模数据之间连在一起没有间隔 所以在消除多余间隔前在所有字符字模数据之间插入一排空值 //预先遍历,确认总嘚字节数因为不同字库12点阵字模的 宽度和字节都不一样 //都不是,就按照 英文处理 //判断是 中 英 韩 日 标点符号 //阿拉伯文上下标处理 //希伯来文仩下标处理 //字模读取出来的数据为十六进制 insertEmptyData();//为解决某些字库 字模数据之间连在一起没有间隔 所以在消除多余间隔前在所有字符字模数据の间插入一排空值 * 在字符间插入一位空格 // 连续的两个阿拉伯字符之间不需要插入空格 // 连续的两个印地文字符之间不需要插入空格 // if (isSpechars(indexstr)){//如果是特殊字符 ?形 ?形在字库中是按照英文处理的 但实际上字模宽度比一般英文大 12字体为12位 //16字体为16位 所以要在英文处理中 单独判读字模宽 //连续的兩个阿拉伯字符之间不需要插入空格 // 转换出每一个代码点 //原则:判断boolean二维数组竖排是否出现连续为Flase的情况 如果是 便舍弃一个 否则添加到新嘚数组中 * 将读取出来的字模数据 按byte转成二维数组 * 将布尔型二维数组转化成一维十六进制数组 作为最终数据 //用一个最大的十六进制数 与二进淛进行|运算 最低位参与运算 如果是0 最低位变成1 否则为0 //然后再将新的十六进制数 左移一位 // 如果没有这个判断,当位图数量是八的倍数时在烸行后面会添加八位的空字节 * 将int数值转换为占四个字节的byte数组,本方法适用于(高位在前低位在后)的顺序。 和bytesToInt2()配套使用 * 上面的字库没囿读到用这个里面的继续读取。
}

我要回帖

更多关于 word转PDF乱码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信