java使用aspose.pdf在已有的pdf文件内根据坐标写数据

最近有这样一个需求,要在PDF文件内根据坐标进行签字,最后是使用aspose.pdf实现的,代码我已经封装好了,直接可以拿去用

 

1:提供一个aspose.pdf的jar包下载路径:

     链接:https://pan.baidu.com/s/118BvmZMwt0k0CjiJgdOEFg 
     提取码:tflv

2:主要代码如下:

/**
	 根据pdf的坐标位置进行签字
	 * @author anshuo
	 * @param pdfFilePath pdf文件路径
	 * @param pageNum 在第几页进行签字
	 * @param value 签字内容
	 * @param font 字体不能为中文,比如宋体为 SimSun,黑体为 SimHei 具体可以查看 C:\Windows\Fonts 下字体文件的真实名称
	 * @param fontSize 字体大小
	 * @param xIndent x坐标
	 * @param yIndent y坐标
	 * */
	public static void pdfSign(String pdfFilePath,int pageNum, String value,String font,String fontSize,double xIndent,double yIndent) {
		
		Document document=new Document(pdfFilePath);
		if (document!=null) {
			Page page = document.getPages().get_Item(pageNum);
			if (page!=null) {
				TextParagraph paragraph = new TextParagraph();
				paragraph.getFormattingOptions().setWrapMode(
						TextFormattingOptions.WordWrapMode.ByWords);
				TextState textState = new TextState();
				
				float pondSize = getFontPound(fontSize);
				
				Font pdfFont = FontRepository.findFont(font, true);
				textState.setFont(pdfFont);
				textState.setFontSize(pondSize);
				
				paragraph.appendLine(value, textState);
				Position position = new Position(xIndent, yIndent);
				paragraph.setPosition(position);
				TextBuilder textBuilder = new TextBuilder(page);
				textBuilder.appendParagraph(paragraph);
			}else {
				System.out.println("页面第:"+pageNum+"页不存在");
			}
			document.save();
		}
	}
	

	
	//根据输入字体返回字体大小
	public static float getFontPound(String font) {
		float size = 3.70F;
		if(font.endsWith("初号")){
			return 42;
		}else if(font.endsWith("小初")){
			return 36;
		}else if(font.endsWith("一号")){
			return 26;
		}else if(font.endsWith("小一")){
			return 24;
		}else if(font.endsWith("二号")){
			return 22;
		}else if(font.endsWith("小二")){
			return 18;
		}else if(font.endsWith("三号")){
			return 16;
		}else if(font.endsWith("小三")){
			return 15;
		}else if(font.endsWith("四号")){
			return 14;
		}else if(font.endsWith("小四")){
			return 12;
		}else if(font.endsWith("五号")){
			return 10.5F;
		}else if(font.endsWith("小五")){
			return 9;
		}else if(font.endsWith("六号")){
			return 7.5F;
		}else if(font.endsWith("小六")){
			return 6.5F;
		}else if(font.endsWith("七号")){
			return 5.5F;
		}else if(font.endsWith("八号")){
			return 5;
		}
		return size;
	}

3:在main方法中调用如下:

public static void main(String[] args) {

		try {
	pdfSign("C:/Users/Administrator/Desktop/测试.pdf",1, "签字效果", "SimSun", "三号", 300, 300);

		} catch (Exception e) {
			// TODO: handle exception
		}
	}

4:实现前效果:

5:实现后效果

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叮当LIU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值