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

全部评论

相关推荐

老粉都知道小猪猪我很久没更新了,因为秋招非常非常不顺利,emo了三个月了,接下来说一下我的情况吧本人是双非本&nbsp;专业是完全不着计算机边的非科班,比较有优势的是有两段大厂实习,美团和字节。秋招面了50+场泡池子泡死的:滴滴&nbsp;快手&nbsp;去哪儿&nbsp;小鹏汽车&nbsp;不知名的一两个小厂其中字节13场&nbsp;两次3面挂&nbsp;两次2面挂&nbsp;一次一面挂其中有2场面试题没写出来,其他的都是全a,但该挂还是挂,第三次三面才面进去字节,秋招加暑期总共面了22次字节,在字节的面评可以出成书了快手面了8场,2次实习的,通过了但没去,一次2面挂&nbsp;最后一次到录用评估&nbsp;至今无消息滴滴三面完&nbsp;没几天挂了&nbsp;所有技术面找不出2个问题是我回答不上来的,三面还来说我去过字节,应该不会考虑滴滴吧,直接给我干傻了去哪儿一天速通&nbsp;至今无消息小鹏汽车hr&nbsp;至今无消息美团2面挂&nbsp;然后不捞我了,三个志愿全部结束,估计被卡学历了虾皮二面挂&nbsp;这个是我菜,面试官太牛逼了拼多多二面挂&nbsp;3道题也全写了&nbsp;也没问题是回答不出来的&nbsp;泡一周后挂腾讯面了5次&nbsp;一次2面挂&nbsp;三次一面挂,我宣布腾讯是世界上最难进的互联网公司然后还有一些零零散散的中小厂,但是数量比较少,约面大多数都是大厂。整体的战况非常惨烈,面试机会少,就算面过了也需要和各路神仙横向对比,很多次我都是那个被比下去的人,不过这也正常,毕竟谁会放着一个985的硕士不招,反而去招一个双非读化学的小子感觉现在互联网对学历的要求越来越高了,不仅仅要985还要硕士了,双非几乎没啥生存空间了,我感觉未来几年双非想要进大厂开发的难度应该直线上升了,唯一的打法还是从大二刷实习,然后苟个转正,不然要是去秋招大概率是炮灰。而且就我面字节这么多次,已经开始问很多ai的东西了,你一破本科生要是没实习没科研懂什么ai啊,纯纯白给了
不知名牛友_:爸爸
秋招你被哪家公司挂了?
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
2025-12-04 17:00
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务