java判断是否安装了pdf_Java根据PDF中的关键字位置判定PDF文件是否合法

packagecom.alphajuns.util;importcom.itextpdf.text.pdf.PdfReader;importcom.itextpdf.text.pdf.parser.PdfReaderContentParser;importjava.io.IOException;/*** @ClassName CheckPdfHelper

* @Description 校验PDF是否为指定文件

* @Author AlphaJunS

* @Date 2020/3/7 19:31

* @Version 1.0*/

public classCheckPdfHelper {//定义PDF中关键字及其坐标位置,用于判断校验上传的PDF文件是否合法

private static String KEY_WORD = "ANPQP";private static float POINT_X = (float) 36.0;private static float POINT_Y = (float) 810.2003;/*** 检验PDF是否合格

*@paramfilePath

*@return

*/

public static intcheckPdf(String filePath) {

String suffix= filePath.substring(filePath.lastIndexOf(".") + 1);if ("pdf".equals(suffix.toLowerCase())) {returncheckSinglePdf(filePath);

}else{return 1;

}

}/*** 检验单个pdf是否合格

*@paramfilePath

*@return

*/

private static intcheckSinglePdf(String filePath) {float[] point =getKeyWordsByPath(filePath);if (point != null) {if(isEqualOfFloat(point[0], POINT_X) && isEqualOfFloat(point[1], POINT_Y)) {return 0;

}else{return 1;

}

}return 1;

}/*** @Author AlphaJunS

* @Date 18:01 2020/3/7

* @Description 根据路径获取pdf中关键字的坐标

*@paramfilepath

*@returnfloat[]*/

private static float[] getKeyWordsByPath(String filepath) {float[] coordinate = null;try{

PdfReader pdfReader= newPdfReader(filepath);

coordinate=getKeyWords(pdfReader);

pdfReader.close();

}catch(IOException e) {

e.printStackTrace();

}returncoordinate;

}/*** @Author AlphaJunS

* @Date 18:02 2020/3/7

* @Description 根据pdfreader获取pdf中关键字的坐标

*@parampdfReader

*@returnfloat[]*/

private static float[] getKeyWords(PdfReader pdfReader) {float[] coordinate = null;int page = 0;try{int pageNum =pdfReader.getNumberOfPages();

PdfReaderContentParser pdfReaderContentParser= newPdfReaderContentParser(pdfReader);

CustomRenderListener renderListener= newCustomRenderListener();

renderListener.setKeyWord(KEY_WORD);for (page = 1; page <= pageNum; page++) {

renderListener.setPage(page);

pdfReaderContentParser.processContent(page, renderListener);

coordinate=renderListener.getPcoordinate();if (coordinate != null) break;

}

}catch(IOException e) {

e.printStackTrace();

}returncoordinate;

}/*** @Author AlphaJunS

* @Date 18:05 2020/3/7

* @Description 判断两个浮点数是否一致

*@parama

*@paramb

*@returnboolean*/

public static boolean isEqualOfFloat(float a, floatb){if(Math.abs(Math.floor(a) - Math.floor(b)) <= 0) {return true;

}else{return false;

}

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值