《Java实战开发》基于itextpdf 5 ,在pdf文档指定位置插入文本

最近在做基于三方存证机构的pdf电子合同签署,遇到需要在指定位置动态添加文本的需求,废话不多说,上代码

	/**
	 * 指定位置插入文本
	 * 
	 * @param text
	 *            添加文本
	 * @param page
	 *            页码
	 * @param llx
	 *            文本矩形坐标
	 * @param lly
	 *            文本矩形坐标
	 * @param urx
	 *            文本矩形坐标
	 * @param ury
	 *            文本矩形坐标
	 * @param pdfFile
	 *            文件
	 * 
	 * @return
	 */
	public static byte[] addContent(String text, int page, float llx, float lly, float urx, float ury, byte[] pdfFile) {
		PdfReader reader = null;
		PdfStamper stamper = null;
		PdfContentByte over = null;
		try (ByteArrayOutputStream bos = new ByteArrayOutputStream();) {
			reader = new PdfReader(pdfFile);
			stamper = new PdfStamper(reader, bos);
			over = stamper.getOverContent(page);
			ColumnText columnText = new ColumnText(over);

			// llx 左侧边框距离 lly下侧边框距离 urx 右侧边框距离 ury 上测边框距离
			// columnText.setSimpleColumn(115, 120, 300, 185);

			columnText.setSimpleColumn(llx, lly, urx, ury);
			Paragraph elements = new Paragraph(text);
			Font font = new Font(getPdfChineseFont(), 10f, Font.NORMAL, BaseColor.BLACK);
			elements.setFont(font);
			columnText.addElement(elements);
			columnText.go();
			stamper.close();
			return bos.toByteArray();
		} catch (Exception e) {
			e.printStackTrace();
			log.error("指定位置插入文本异常 :" + e);
		} finally {
			if (reader != null) {
				reader.close();
			}
		}
		return pdfFile;
	}
	public static BaseFont getPdfChineseFont() {
		BaseFont baseFont = null;
		try {
			baseFont = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
		} catch (DocumentException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return baseFont;
	}
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是使用itextpdf类在pdf指定位置写入字符串的示例代码: ```java import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Font; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.PdfContentByte; import com.itextpdf.text.pdf.PdfReader; import com.itextpdf.text.pdf.PdfStamper; import java.io.FileOutputStream; import java.io.IOException; public class PdfWriterExample { public static void main(String[] args) { try { // 读取原始PDF文件 PdfReader reader = new PdfReader("input.pdf"); // 创建输出PDF文件 PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("output.pdf")); // 获取指定页面的内容流 PdfContentByte content = stamper.getOverContent(1); // 设置字体 BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); Font font = new Font(baseFont, 12, Font.NORMAL); // 在指定位置添加文本 content.beginText(); content.setFontAndSize(baseFont, 12); content.showTextAligned(PdfContentByte.ALIGN_LEFT, "Hello, World!", 100, 100, 0); content.endText(); // 关闭PDF文件 stamper.close(); reader.close(); } catch (IOException | DocumentException e) { e.printStackTrace(); } } } ``` 这段代码使用itextpdf库来读取原始的PDF文件,并在指定位置添加文本。首先,我们创建一个PdfReader对象来读取原始PDF文件。然后,我们创建一个PdfStamper对象来写入输出PDF文件。通过调用`getOverContent()`方法,我们可以获取指定页面的内容流。接下来,我们设置字体并使用`showTextAligned()`方法在指定位置添加文本。最后,我们关闭PDF文件。 请注意,这只是一个示例代码,你需要根据你的实际需求进行适当的修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值