java将WORD文档转换成pdf文件

总结对jacob和Itext学习总结.本文试验的是将WORD转换成PDF文件.

实现思路

一、先将WORD文档转换成HMTL文件格式(参阅我的前一文《JAVA操作WORD文档)。

二、用流读取HTML文件。将其保存在一个String对象中。

三、用Itext组件,将生成的字符串对象转换成PDF文件。

四、在要生成的PDF文件加入所需信息。

在此:有几点问题如还请前辈解答:1、怎么控制我在PDF文件加入某段文字的字体、大小、间距等。

/**
 * 生成PDF文件
 * @author 于学明
 *
 */
public class CreatePdf {

/**
 * 获得PDF文件所需图片
 * @param imagePath  //图片文件路径
 * @return
 * @throws BadElementException
 * @throws MalformedURLException
 * @throws IOException
 */
 public Image getImageFile(String imagePath) throws BadElementException, MalformedURLException, IOException{
  Image jpg = Image.getInstance(imagePath);
  //设置图片居中
  jpg.setAlignment(Image.MIDDLE);
  return jpg;
 }
 
 /**
  * 获得文字内容
  * @param inputFilePath 原DOC文件路径
  * @param outputFilePath 生成HTML文件路径
  * @return
  */
 public String getPdfContext(String inputFilePath,String outputFilePath){
//  读取DOC文件内容
  String htmlText = new FileExtracter().extractDoc(inputFilePath, outputFilePath);
  //把读取的HTML文件,生成一个字符串
  String pdf =  new FileExtracter().getContext(htmlText);
  
  return pdf;
 }
 /**
  * 用ITEXT生成指定PDF格式文件
  * @param imagePath0
  * @param inputFilePath
  * @param outputFilePath
  * @param imagePath1
  * @param outputPdf
  * @return
  * @throws DocumentException
  * @throws IOException
  */
 public String createPDF(String imagePath0,String inputFilePath,String outputFilePath,String imagePath1,String outputPdf) throws DocumentException, IOException{
  
  //返回的pdf全路径  
  String returnPdf="";  
  File dir=new File("out_pdf");
  //若目录不存在则新建该目录
  if(!dir.exists()){
   dir.mkdir();
  }
    
  //新建空白文件
  File outPdfPath=new File(dir+"/"+outputPdf);//输出pdf文件的全路径
  try {
   outPdfPath.createNewFile();
  } catch (IOException e1) {
   e1.printStackTrace();
   returnPdf=null;
  }
  //定义PDF文件大小和边距
  Document document = new Document(PageSize.A4, 50, 50, 50, 50);  
  //生成PDF文件的路径
  PdfWriter writer = PdfWriter.getInstance(document,new FileOutputStream(outPdfPath));
  writer.setViewerPreferences(PdfWriter.PageModeFullScreen);
  document.open();
  //文件头图片
  document.add(getImageFile(imagePath0));
  //定义字体,可以正常显示中文
  BaseFont bfComic = BaseFont.createFont("STSong-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
  Font font = new Font(bfComic, 12, Font.NORMAL);
    
  String pdf =  getPdfContext(inputFilePath, outputFilePath);
//  String str=new String(pdf.getBytes("ISO-8859-1"),"GB2312");
  document.add(new Paragraph(pdf,font));
  //文件尾图片
  document.add(getImageFile(imagePath1));
  document.close();
  returnPdf = outPdfPath.getAbsolutePath();
  return returnPdf;
 }
 
 /**
  *  用ITEXT生成指定PDF格式文件
  * @param imagePath
  * @param inputFilePath
  * @param outputFilePath
  * @param outputPdf
  * @return
  * @throws DocumentException
  * @throws IOException
  */
 public String createPDF(String imagePath,String inputFilePath,String outputFilePath,String outputPdf) throws DocumentException, IOException{
  
  //  返回的pdf全路径  
  String returnPdf="";  
  File dir=new File("out_pdf");
  //若目录不存在则新建该目录
  if(!dir.exists()){
   dir.mkdir();
  }
    
  //新建空白文件
  File outPdfPath=new File(dir+"/"+outputPdf);//输出pdf文件的全路径
  try {
   outPdfPath.createNewFile();
  } catch (IOException e1) {
   e1.printStackTrace();
   returnPdf=null;
  }
  Document document = new Document(PageSize.A4, 50, 50, 50, 50);  
  //生成PDF文件的路径
  PdfWriter writer = PdfWriter.getInstance(document,new FileOutputStream(outPdfPath));
  writer.setViewerPreferences(PdfWriter.PageModeFullScreen);
  document.open();  
  document.add(getImageFile(imagePath));
//  定义字体,可以正常显示中文
  BaseFont bfComic = BaseFont.createFont("STSong-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
  Font font = new Font(bfComic, 12, Font.NORMAL);
    
  String pdf =  getPdfContext(inputFilePath, outputFilePath);
//  String str=new String(pdf.getBytes("ISO-8859-1"),"GB2312");
  document.add(new Paragraph(pdf,font));
  document.close();
  returnPdf = outPdfPath.getAbsolutePath();
  return returnPdf;
 }

 public static void main(String [] args){
  
  try {
   String s = new CreatePdf().createPDF("c:/a.gif","c:/s.doc", "c:/x.html", "a.pdf");
   System.out.println(s);
  } catch (DocumentException e) {
   // TODO 自动生成 catch 块
   e.printStackTrace();
  } catch (IOException e) {
   // TODO 自动生成 catch 块
   e.printStackTrace();
  }
 }
}
 

展开阅读全文

没有更多推荐了,返回首页