我用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();
}
}}