Java 有没有办法使用iText确定PDF中字符串的位置/大小?

Java 有没有办法使用iText确定PDF中字符串的位置/大小?,java,string,pdf,itext,Java,String,Pdf,Itext,到目前为止,我已经编写了一些代码,应该用一个白色矩形覆盖PDF中的文本,这个矩形工作得很好,但是非常静态。目标是将其设计为一个简单的命令行工具,更加动态。 有没有办法确定PDF中字符串的位置(在每一页上)、字体大小以及由此计算矩形大小/位置? 谷歌搜索了不少,但没有得到令人满意的答案 使用iText。到目前为止使用的代码发布在下面(对优化想法开放) package-evaluate\u-java; 导入java.io.FileOutputStream; 导入com.itextpdf.text.B

到目前为止,我已经编写了一些代码,应该用一个白色矩形覆盖PDF中的文本,这个矩形工作得很好,但是非常静态。目标是将其设计为一个简单的命令行工具,更加动态。 有没有办法确定PDF中字符串的位置(在每一页上)、字体大小以及由此计算矩形大小/位置? 谷歌搜索了不少,但没有得到令人满意的答案

使用iText。到目前为止使用的代码发布在下面(对优化想法开放)

package-evaluate\u-java;
导入java.io.FileOutputStream;
导入com.itextpdf.text.BaseColor;
导入com.itextpdf.text.pdf.PdfContentByte;
导入com.itextpdf.text.pdf.PdfReader;
导入com.itextpdf.text.pdf.PdfStamper;
公共类PDF修改器{
公共静态void main(字符串[]args)
{           
覆盖矩形(“neu.pdf”、“output.pdf”);
}
公共静态void coverWithRectangle(字符串输入、字符串输出)
{
尝试
{
PdfReader读取器=新PdfReader(输入);
int pages=reader.getNumberOfPages();
PdfStamper stamper=新PdfStamper(读取器,新文件输出流(输出));

对于(int i=1;我已经看过iText
解析器
包中的类了吗?为什么要这样做?希望不要隐藏文本,使其无法读取?根据您如何定义白色,它可能会消失在Adobe Acrobat之类的东西中,当然也有一些工具可以让用户删除白色长方形,看看下面是什么…只是为了打印,所以覆盖就可以了。你读过iText
解析器
包中的类吗?为什么要这样做?希望不要隐藏文本,使其无法阅读?根据你如何定义白色,它可能会消失在Adobe Acrobat和there ce之类的东西中不确定的是,有一些工具可以让用户删除你的白色矩形,看看下面是什么…只是为了打印,所以覆盖是好的。
package evaluate_java;

import java.io.FileOutputStream;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;

public class PDFmodifier {

    public static void main(String[] args)  
    {           
        coverWithRectangle("neu.pdf","output.pdf"); 
    }

    public static void coverWithRectangle(String input, String output)
    {
        try
        {
            PdfReader reader = new PdfReader(input);
            int pages = reader.getNumberOfPages();
            PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(output));

            for(int i=1; i <=pages; i++)
                setContent(stamper, i, 80f, 20f, 300f, 20f, BaseColor.WHITE);

            stamper.close();
            reader.close();
            System.out.println("Success.");
        }
        catch(Exception ex) 
        {
            System.out.print("Failed because: ");
            ex.printStackTrace();
        }
    }

    public static void setContent(PdfStamper stamp, int page,  Float x, Float y, Float width, Float height, BaseColor col)
    {
        PdfContentByte content = stamp.getOverContent(page);
        content.setColorFill(col);
        content.rectangle(x,y,width, height);
        content.fill();
    }
}