该示例非常有用,除了文本是倒排的.例如,稍微更改示例:
String txt = "\u0623\u0628\u062c\u062f\u064a\u0629 \u0639\u0631\u0628\u064a\u0629";
System.out.println(txt);
g2.drawString(txt, 100, 30);
与PDF相比,屏幕上打印的内容是相同的字符,但方向相反.控制台输出正确,而PDF输出不正确.
我不想简单地反转字符,因为否则我将失去双向支持…
解决方法:
IIRC,iText在比drawString更高的级别上支持阿拉伯语成形.让我们看看这里…
啊! ColumnText.showTextAligned(PdfContentByte画布,int对齐,短语短语,float x,float y,float旋转,int runDirection,int arabicOptions)
对齐是Element.ALIGN_ *之一.运行方向是PdfWriter.RUN_DIRECTION_ *之一.阿拉伯语选项是位标志ColumnText.AR_ *
请注意,这应该可以解决问题:我不确定它会在同一短语中处理多个方向.您的测试字符串包含CJKV,阿拉伯和拉丁字符,因此应该有两个方向变化.
标签:unicode,pdf-generation,arabic,java
来源: https://codeday.me/bug/20191208/2093091.html
该示例非常有用,除了文本是倒排的.例如,稍微更改示例:String txt = "\u0623\u0628\u062c\u062f\u064a\u0629 \u0639\u0631\u0628\u064a\u0629";System.out.println(txt);g2.drawString(txt, 100, 30);与PDF相比,屏幕上打印的内容是相同的字符,但方向相反.控制台输出正确,而P...
<button id="cLink">
pdf
查看</button>
<a target='_blank' href="#" id="jumpUrl"><span id="jumpClick" ></span></a>
js代码:
背景:同事在苹果电脑的
PDF
阅读器中打开
PDF
文件,说里面的超链接无法跳
转
,但在浏览器中打开就是可以跳
转
的
问题:超链接中包含了中文,在苹果那个
PDF
阅读器中显示的中文的编码和浏览器地址栏中显示的中文编码不一致
思考:苹果的
PDF
阅读器对中文编码是不是跟浏览器不一样,所以是不是只要统一了编码就可以
解决方案:在生成
PDF
前将url中的中文用js中的encodeURIComponent()进行编码,这样生成的
PDF
中就不包含中文,点击超链接就可以直接使用编码后的地址了
PS: 浏览器地址栏对中文.
最近公司工资条
打印
不了了,而且好几个月了,只因为人事小姐姐换了新电脑,
打印
机无法正确配置。
症状:
打印
机
打印
和预览不同,有
时
候横竖相
反
,有
时
候缩成一坨......
如果你也是这问题,感谢我吧,给你终极解决方案。
我可是研究了好几天啊。
新建纸张类型,大家肯定都已经试了N次了,
这里没有任何问题,问题在于我们太自信了。
我们太相信微软,感觉这个太简单了,设置一下完全没问题,但是结果让...
最近要搞前端html
转
pdf
的功能。折腾了两天,略有所收,踩了一些坑,所以做些记录,为后来的兄弟做些提示,也算是回馈社区。
经过一番调(sou)研(suo)发现html导出
pdf
一般有这几种方式,各有各有优缺,下面简单介绍。
这篇文章说了啥
前端实现(着重)
通过
打印
预览实现
通过插件js
Pdf
实现
后端实现(凑数)
iText、wkhtmlto
pdf
、prince
通过
打印
预览实现
通过
打印
预览来实现导出
pdf
并不是什么稀奇事,一般浏览器(Chrome)
1. 创建一个 StringBuffer 对象,将字符串作为参数传入构造函数。
2. 使用 reverse() 方法将整个字符串
反
转
。
3. 将字符串以空格为分隔符分割为单词。
4. 遍历分前的单词,并对每个单词使用 StringBuffer 的 reverse() 方法进行
反
转
。
5. 将
反
转
后的单词重新拼接为一个字符串。
代码示例:
public static String reverseWords(String str) {
String[] words = str.split(" ");
StringBuffer sb = new StringBuffer();
for (String word : words) {
sb.append(new StringBuffer(word).reverse().toString());
sb.append(" ");
return sb.toString().trim();