iText的PDF操作

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.0.6</version>
</dependency>

Document:这是iText库中最常用的类,它代表了一个pdf实例。如果你需要从零开始生成一个PDF文件,你需要使用这个Document类。首先创建(new)该实例,然后打开(open)它,并添加(add)内容,最后关闭(close)该实例,即可生成一个pdf文件。

  • com.itextpdf.text.Paragraph:表示一个缩进的文本段落,在段落中,你可以设置对齐方式,缩进,段落前后间隔等。
  • com.itextpdf.text.Chapter:表示PDF的一个章节,他通过一个Paragraph类型的标题和整形章数创建。
  • com.itextpdf.text.Font:这个类包含了所有规范好的字体,包括family of font,大小,样式和颜色,所有这些字体都被声明为静态常量。
  • com.itextpdf.text.List:表示一个列表;
  • com.itextpdf.text.pdf.PDFPTable:表示一个表格;
  • com.itextpdf.text.Anchor:表示一个锚,类似于HTML页面的链接。
  • com.itextpdf.text.pdf.PdfWriter:当这个PdfWriter被添加到PdfDocument后,所有添加到Document的内容将会写入到与文件或网络关联的输出流中。
  • com.itextpdf.text.pdf.PdfReader:用于读取PDF文件;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfWriter;

public class PdfTest {
	public static void main(String[] args){
		File filedir = new File("D:/pdf");//pdf保存路径
		if(!filedir.exists()) {
			filedir.mkdirs();
		}
//		String path = request.getSession().getServletContext().getRealPath("/");
		File pdf = new File(filedir+"/cxy.pdf");//pdf文件路径
		Document document = new Document(PageSize.A4.rotate());//rotate函数支持横向打印
		try {
			PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(pdf));
			//方法一:使用Windows系统字体(TrueType)  
	       BaseFont baseFont = BaseFont.createFont("C:/Windows/Fonts/SIMYOU.TTF",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);  
	          
	        //方法二:使用iTextAsian.jar中的字体  
	        //BaseFont baseFont = BaseFont.createFont("STSong-Light",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);  
	          
	        //方法三:使用资源字体(ClassPath)  
	        ////BaseFont baseFont = BaseFont.createFont("/SIMYOU.TTF",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);  
		
			Font font = new Font(baseFont,10);//可以设置字号
			document.open();
			document.add(new Paragraph("中文问题解决了",font));
			document.close();
			writer.close();
    } catch (DocumentException e) {
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }catch (IOException e) {
	        e.printStackTrace();
	    }
}
}
public static void main(String[] args) throws FileNotFoundException,Exception {
		String htmlFile = "C:\\Users\\Administrator\\Desktop\\test.htm";
 
		String pdfFile = "C:\\Users\\Administrator\\Desktop\\test.pdf";
		// PdfUtils.parseHTML2PDFFile(pdfFile, new FileInputStream(htmlFile));
		String ss = "";
		BufferedReader br = new BufferedReader(new InputStreamReader(
				new FileInputStream(htmlFile), "UTF-8"));
		String t = "";
		while ((t = br.readLine()) != null) {
			// System.out.println(t);
			ss += t;
		}
		PdfUtils.parseHTML2PDFFile2(pdfFile, ss);
	}
 
	public static void parseHTML2PDFFile2(String pdfFile, String html)
			throws DocumentException, IOException {
		Document document = new Document();
		PdfWriter writer = PdfWriter.getInstance(document,
				new FileOutputStream(pdfFile));
		document.open();
		XMLWorkerHelper.getInstance().parseXHtml(writer, document,
				new ByteArrayInputStream(html.getBytes("Utf-8")),
				Charset.forName("UTF-8"));
		document.close();
	}

HTML 里加 <body style="font-size:12.0pt; font-family:微软雅黑">

参考:https://www.cnblogs.com/chenpi/p/5534595.html

猜你喜欢

转载自blog.csdn.net/qq_38930240/article/details/86506722