itext从现有的pdf获取字段坐标

itext从现有的pdf获取字段坐标,第1张

itext从现有的pdf获取字段坐标

为了完全解决问题,我编写了以下java类:

// GetSigPos.java import com.itextpdf.text.*;import com.itextpdf.text.pdf.*;import java.io.*;//import java.util.*;import java.util.List;//import java.awt.List;class GetSigPos {  public static void main(String[] args) throws IOException {    String pdfFile = args[0];    PdfReader reader = new PdfReader(pdfFile);    AcroFields fields = reader.getAcroFields();    for(String signame : fields.getBlankSignatureNames()) {      List<AcroFields.FieldPosition> positions = fields.getFieldPositions(signame);      Rectangle rect = positions.get(0).position; // In points:      float left   = rect.getLeft();      float bTop   = rect.getTop();      float width  = rect.getWidth();      float height = rect.getHeight();      int page = positions.get(0).page;      Rectangle pageSize = reader.getPageSize(page);      float pageHeight = pageSize.getTop();      float top = pageHeight - bTop;      System.out.print(signame + "::" + page + "::" + left + "::" + top + "::" + width + "::" + height + "n");    }  }}

然后,我可以在命令行中运行它:

javac GetSigPos.javajava GetSigPos "MyForm.pdf"

或者在我的php程序中,我可以使用以下命令执行它们:

exec('java -cp .:/usr/local/bin/pdfbox/itextpdf-5.4.4.jar:/usr/local/bin/pdfbox GetSigPos "'.$pdfName.'" 2>&1', $output);echo '<pre>';print_r($output);echo '</pre>';

PS 不要忘记在Java中键入CLASSPATH!我正在使用 Centos 6

vi /root/.bash_rofile

并输入:

export JAVA_HOME=/usr/lib/jvm/jre-1.5.0-gcjexport PATH=$PATH:$JAVA_HOME/binexport CLASSPATH=.:/usr/local/bin/pdfbox/itextpdf-5.4.4.jar:/usr/local/bin/pdfbox


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5616189.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-15
下一篇2022-12-15

发表评论

登录后才能评论

评论列表(0条)

    保存