首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > PowerDesigner >

java操作pdf(解决中文导出有关问题)

2014-01-17 
java操作pdf(解决中文导出问题)?/**???*?HelloWorld.java??*/????import?java.io.FileOutputStream??impo

java操作pdf(解决中文导出问题)

?

  • /**?
  • ??*?HelloWorld.java?
  • ?*/??
  • ??
  • import?java.io.FileOutputStream;??
  • import?java.io.IOException;??
  • ??
  • import?com.lowagie.text.*;??
  • import?com.lowagie.text.pdf.PdfWriter;??
  • ??
  • public?class?HelloWorld?{??
  • ??
  • ??public?static?void?main(String[]?args)?{??
  • ??
  • ????System.out.println("Hello?World");??
  • ??
  • ????//?创建一个Document对象??
  • ????Document?document?=?new?Document();??
  • ??
  • ????try???
  • ????{??
  • ??
  • ??????//?生成名为?HelloWorld.pdf?的文档??
  • ??????PdfWriter.getInstance(document,?new?FileOutputStream("HelloWorld.pdf"));??
  • ??
  • ??????//?添加PDF文档的一些信息??
  • ??????document.addTitle("Hello?World?example");??
  • ??????document.addAuthor("Bruno?Lowagie");??
  • ??????document.addSubject("This?example?explains?how?to?add?metadata.");??
  • ??????document.addKeywords("iText,?Hello?World,?step?3,?metadata");??
  • ??????document.addCreator("My?program?using?iText");??
  • ??
  • ??????//?打开文档,将要写入内容??
  • ??????document.open();??
  • ??
  • ??????//?插入一个段落??
  • ??????document.add(new?Paragraph("Hello?World!"));??
  • ??
  • ????}???
  • ????catch?(DocumentException?de)???
  • ????{??
  • ??????System.err.println(de.getMessage());??
  • ????}??
  • ????catch?(IOException?ioe)???
  • ????{??
  • ??????System.err.println(ioe.getMessage());??
  • ????}??
  • ??
  • ????//?关闭打开的文档??
  • ????document.close();??
  • ??}??
  • }???

    ?

    编译运行以后,我们可以在运行的目录发现生成的HelloWorld.pdf,打开可以看到我们写的文字:

    ?

    三、中文问题:

    ????????由于iText不支持东亚语言,我们下载了iTextAsian.jar?以后,就可以在PDF里面写中文:

    ?

  • /**?
  • ??*?AsianTest.java?
  • ?*/??
  • ??
  • import?java.io.FileOutputStream;??
  • import?java.io.IOException;??
  • ??
  • import?com.lowagie.text.*;??
  • import?com.lowagie.text.pdf.PdfWriter;??
  • import?com.lowagie.text.pdf.BaseFont;??
  • import?com.lowagie.text.Font;??
  • import?java.awt.Color;??
  • ??
  • public?class?AsianTest{??
  • ??
  • ??public?static?void?main(String[]?args)?{??
  • ??
  • ????//?创建一个Document对象??
  • ????Document?document?=?new?Document();??
  • ??
  • ????try???
  • ????{??
  • ??
  • ??????//?生成名为?AsianTest.pdf?的文档??
  • ??????PdfWriter.getInstance(document,?new?FileOutputStream("AsianTest.pdf"));??
  • ??
  • ?????/**??新建一个字体,iText的方法?
  • ???????*??STSongStd-Light?是字体,在iTextAsian.jar?中以property为后缀?
  • ???????*??UniGB-UCS2-H???是编码,在iTextAsian.jar?中以cmap为后缀?
  • ???????*??H?代表文字版式是?横版,?相应的?V?代表?竖版?
  • ??????*/??
  • //下面的那两句要有,不然的话,中文就出不来??
  • ??????BaseFont?bfChinese?=?BaseFont.createFont("STSongStd-Light",?"UniGB-UCS2-H",?false);??
  • ??
  • ????????Font?fontChinese?=?new?Font(bfChinese,?12,?Font.NORMAL,?Color.GREEN);???
  • ??
  • ??????//?打开文档,将要写入内容??
  • ??????document.open();??
  • ??
  • ??????//?插入一个段落??
  • ??????Paragraph?par?=?new?Paragraph("我们",fontChinese);??
  • ??
  • ??????document.add(par);??
  • ??
  • ????}???
  • ????catch?(DocumentException?de)???
  • ????{??
  • ??????System.err.println(de.getMessage());??
  • ????}??
  • ????catch?(IOException?ioe)???
  • ????{??
  • ??????System.err.println(ioe.getMessage());??
  • ????}??
  • ??
  • ????//?关闭打开的文档??
  • ????document.close();??
  • ??}??
  • }??

    ?

    就可以显示中文了。

    四、其他问题:(应导入相应的包)

    ???????1. 换页:

    document.newPage();

    ???????2. 表格:

    ?

  • //?设置?Table??
  • Table?aTable?=?new?Table(3);??
  • int?width[]?=?{25,25,50};??
  • aTable.setWidths(width);??
  • aTable.setWidth(80);?//?占页面宽度?80%??
  • ??
  • aTable.setDefaultHorizontalAlignment(Element.ALIGN_LEFT);??
  • aTable.setDefaultVerticalAlignment(Element.ALIGN_MIDDLE);??
  • aTable.setAutoFillEmptyCells(true);?//自动填满??
  • aTable.setPadding(1);??
  • aTable.setSpacing(1);??
  • aTable.setDefaultCellBorder(0);??
  • aTable.setBorder(0);??
  • ??
  • Cell?cell?=?new?Cell(new?Phrase("这是一个测试的?3*3?Table?数据",?fontChinese?));??
  • cell.setVerticalAlignment(Element.ALIGN_TOP);??
  • cell.setRowspan(3);??
  • aTable.addCell(cell);??
  • ??
  • aTable.addCell(new?Cell("#1"));??
  • aTable.addCell(new?Cell("#2"));??
  • aTable.addCell(new?Cell("#3"));??
  • ??
  • aTable.addCell(new?Cell("#4"));??
  • aTable.addCell(new?Cell("#5"));??
  • aTable.addCell(new?Cell("#6"));??
  • ??
  • document.add(aTable);??

    ?

    3. 图片:

    // 可以是绝对路径,也可以是URL
    Image?img =?Image.getInstance("logo.gif");

    // Image image = Image.getInstance(new URL(http://xxx.com/logo.jpg));

    img.setAbsolutePosition(0, 0);

    document.add(img);

    五、参考文档:

      iText
      http://www.lowagie.com/iText/?
      iText API:?
      http://itext.sourceforge.net/docs/?

      http://www.sentom.net/list.asp?id=42

      转自:

      http://dev.csdn.net/author/comstep/f4b87d7c83d34323bdb28025c14c4316.html

      ?

      ?

  • 热点排行