java 使用itext导出PDF(带水印)清晰易懂

看到同事做了一个导出pdf的功能,以前没接触过,记录一下留作后用。
项目使用了maven管理工具,pom文件加入相关依赖如下:

		<dependency>
			<groupId>com.itextpdf</groupId>
			<artifactId>itextpdf</artifactId>
			<version>5.4.2</version>
		</dependency>
		<dependency>
			<groupId>com.itextpdf.tool</groupId>
			<artifactId>xmlworker</artifactId>
			<version>5.4.1</version>
		</dependency>
		<dependency>
			<groupId>com.itextpdf</groupId>
			<artifactId>itext-asian</artifactId>
			<version>5.2.0</version>
		</dependency>
		<dependency>
			<groupId>org.xhtmlrenderer</groupId>
			<artifactId>flying-saucer-pdf</artifactId>
			<version>9.0.3</version>
		</dependency>

相关js如下:
function exportPDF() {

top.$.jBox.confirm("确认要导出用户数据吗?", "系统提示", function(v, h, f) {
				if (v == "ok") {
					var URL="${ctx}/employeemark/employeeMark/getPdf?id=${employeeMark.id}";
					location.href=URL;
				}
			}, {
				buttonsFocus : 1
			});
			top.$('.jbox-body .jbox-icon').css('top', '55px');
		
	}

web层如下:

@RequestMapping(value = "getPdf")
public String getPdf(HttpServletRequest request,HttpServletResponse response, RedirectAttributes redirectAttributes)       throws Exception {
	String strId = request.getParameter("id");
			if (strId != null && strId.length() > 0) {
		EmployeeMark employeeMark = employeeMarkService.get(strId);
		
		String date = DateUtil.dateToStrEn(new Date(), DateUtil.DEFAULT_PATTERN);
	
		String filePath = Global.getAdminPath()+"/tempFile";
	
		File file = new File(filePath);
		if (!file.exists()) {
			file.mkdirs();
		}
		 String inPutPath = filePath+"/tempPDF"+System.currentTimeMillis()+".pdf";
	
    	 String outPutPath = filePath+"/PDFWater"+System.currentTimeMillis()+".pdf";
  
         File exportFile = new File(inPutPath);  
         exportFile.createNewFile();  
         System.err.println(exportFile);
         PdfUtil p =  new PdfUtil(exportFile);
         //生成pdf临时文件  未添加水印
         p.generatePDF(employeeMark); 
         //给pdf文件添加水印
         String waterStr="保密保密";
         PdfUtil.waterMark(inPutPath, outPutPath, waterStr);
         //导出pdf文件
         PdfUtil.exportPDF(request, response, outPutPath, employeeMark.getTitle(),inPutPath);
    	 return null;
		
	} else {
		addMessage(redirectAttributes, "未获得当前记录的有效标识!");
	}
	return "redirect:" + Global.getAdminPath() + "/employeemark/employeeMark/form?id="+strId;

}

许多业务都是在until里面实现的,
import java.awt.FontMetrics;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
imp

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用iText库根据模板导出PDF文件,您可以按照以下步骤进行操作: 1. 首先,您需要将iText库添加到您的Java项目中。您可以在iText的官方网站(https://itextpdf.com/)上下载并导入相应的jar文件。 2. 加载模板PDF文件。您可以使用iTextPdfReader类来加载模板文件,例如: ```java PdfReader reader = new PdfReader("template.pdf"); ``` 3. 创建一个新的PdfWriter对象,将其与输出PDF文件相关联。您可以使用iTextPdfWriter类来实现这一点,例如: ```java PdfWriter writer = new PdfWriter("output.pdf"); ``` 4. 创建一个新的PdfDocument对象,并将其与模板文件和PdfWriter对象相关联。这将使您能够编辑和导出PDF文件。例如: ```java PdfDocument document = new PdfDocument(reader, writer); ``` 5. 获取特定页面的PdfPage对象,并创建一个PdfCanvas对象以在页面上绘制内容。例如: ```java PdfPage page = document.getPage(1); // 获取第一页 PdfCanvas canvas = new PdfCanvas(page); canvas.beginText(); canvas.setFontAndSize(PdfFontFactory.createFont(FontConstants.HELVETICA_BOLD), 12); canvas.moveText(100, 700); canvas.showText("Hello, World!"); canvas.endText(); ``` 在这个示例中,我们在第一页上添加了一个文本元素。 6. 关闭文档并保存生成的PDF文件。例如: ```java document.close(); ``` 这样,您就可以使用iText库根据模板导出PDF文件了。请注意,iText库还提供了许多其他功能,例如添加表格、图片等,您可以根据自己的需求进行更多的PDF编辑操作。 希望对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值