使用iText的UniGB-UCS2-H编码方式进行中文编码出现的标点符号的问题

飘摇清风 2008-01-02 04:31:47
我用iText做pdf开发,使用UniGB-UCS2-H编码,可以打印出中英文。不过不知道为什么有标点符号“'”不在了。请各位帮一下忙。
package study;

import java.awt.Color;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import com.lowagie.text.Chunk;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfChunk;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfWriter;

/**
* 学习pdf文档中插入多样性的文本或图像
*
*/
public class T02 {

/**
* @param args
* @throws DocumentException
* @throws IOException
*/
public static void main(String[] args){
try{
OutputStream os = new FileOutputStream("c:/t11.pdf");
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, os);
document.open();
/* chapter04/FoxDogChunk1.java */
BaseFont bfChinese = BaseFont.createFont("STSong-Light",
"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font fontChinese = new Font(bfChinese, 16, Font.NORMAL, Color.red);
Font font = new Font(Font.COURIER, 10, Font.BOLD);
font.setColor(new Color(0xFF, 0xFF, 0xFF));
Chunk fox = new Chunk("quick brown fox", font);
Chunk china = new Chunk("这是中文",fontChinese);
fox.setBackground(new Color(0xa5, 0x2a, 0x2a));
Chunk jumps = new Chunk(" jumps over ", new Font());
Chunk dog = new Chunk("the lazy dog", new Font(Font.TIMES_ROMAN, 14,
Font.ITALIC));

document.add(fox);
document.add(jumps);
document.add(dog);
document.add(china);
PdfContentByte cb = writer.getDirectContent();
BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
cb.setFontAndSize(bf, 16);
cb.beginText();
cb.showTextAligned(Element.ALIGN_LEFT, "这里的单引号不在了\'1", 200, 700, 0);
cb.endText();
document.close();
}catch(Exception e) {
e.printStackTrace();
}
}

}
...全文
2082 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
飘摇清风 2008-01-17
  • 打赏
  • 举报
回复
我到现在都没想出来怎么做,所以我用了一个另类的方法,就是先输出,如果遇到英文的单引号“'”,那我就切换字体为英文的输出,然后再转回中文的继续输出下面的中文内容。
hotboy1000 2008-01-16
  • 打赏
  • 举报
回复
没得救了~~!谁知道就贴出来呀~~

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧