gpt4 book ai didi

java - 使用java编程将pdf可编辑字段转换为文本

转载 作者:行者123 更新时间:2023-12-01 23:43:02 24 4
gpt4 key购买 nike

我准备了一份可编辑的表单,但无法使用java编程将pdf可编辑字段转换为文本。

使用的 API – pdfbox-app-2.0.0-RC2、PDFBox-0.7.3、itextpdf-5.1.0、pdfclown。

请帮助我了解如何将 pdf 可编辑字段转换为 java 中的文本。

使用java程序(能够将普通pdf转换为文本,但不能将pdf可编辑字段转换为文本)。

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.IOException;
import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.parser.PdfTextExtractor;
import java.awt.Desktop;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.JFileChooser;

public class PdfConvertor_1{
public static void main(String[] args){
selectPDFFiles();
}


//allow pdf files selection for converting
public static void selectPDFFiles(){

JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("PDF","pdf");
chooser.setFileFilter(filter);
chooser.setMultiSelectionEnabled(true);
int returnVal = chooser.showOpenDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION) {
File[] Files=chooser.getSelectedFiles();
System.out.println("Please wait...");
for( int i=0;i<Files.length;i++){
convertPDFToText(Files[i].toString(),"textfrompdf"+i+".txt");
}
System.out.println("Conversion complete");
}

}

public static void convertPDFToText(String src,String desc){
try{
//create file writer
FileWriter fw=new FileWriter("D:\\POC_Pdf2.txt");
//create buffered writer
BufferedWriter bw=new BufferedWriter(fw);
//create pdf reader
PdfReader pr=new PdfReader(src);
//get the number of pages in the document
int pNum=pr.getNumberOfPages();
//extract text from each page and write it to the output text file
for(int page=1;page<=pNum;page++){
String text=PdfTextExtractor.getTextFromPage(pr, page);
bw.write(text);
bw.newLine();

}
bw.flush();
bw.close();



}catch(Exception e){e.printStackTrace();}

}

}

Please check editable fields in image which i want to convert in to text using java

最佳答案

字段不是页面内容流的一部分,因此“从页面获取文本”不会为您提供字段的值。

您需要从 PDF 中获取表格。表单是从 PDF 的根字典引用的,但有一个方便的方法来获取 AcroFields 对象。对于使用 iTextSharp/C# 的人来说,这个问题已经得到解答:How to read PDF form data using iTextSharp?

PdfReader reader = new PdfReader(path_to_your_completed_form);
AcroFields fields = reader.getAcroFields();
String value = fields.getField(key);

在此代码段中,path_to_your_completed_form 是您从 JFileChooser 获取的完整路径,key 是以下字段之一的值:在您的表单中定义。

如果您不知道表单中定义了哪些字段,请阅读问题 How to get specific types from AcroFields? Like PushButtonField, RadioCheckField, etc? 的答案该示例中的一些代码允许您循环访问可用字段,并通知您该字段是否是文本字段、复选框、单选按钮等。

关于java - 使用java编程将pdf可编辑字段转换为文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34419909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com