私はテキストを抽出し、PDF文書のPDFBox APIを使用してExcelに配置する簡単なアプリケーションを開発中です& Excelファイル用のPOIFSFilesystem(HSSFWorkbook)。最近、私は.docファイルからテキストを抽出し、その時にLOGGERの問題に直面していないExcelに置くアプリケーションを開発しました。今回は、いくつかのエラーが発生しました[ I red Apache loggingこれは設定ログです。私は自分のアプリケーションでWeb関連の機能を開発していません。 jarファイルを追加するだけでは十分ではありませんか?私は赤https://www.slf4j.org/codes.htmlこのエラー処理の記事私はアプリケーションに関連する特定のエラーを見つけることはありません。なぜPDFファイルにLOG4JとSLF4Jが必要ですか?なぜ.Docファイルには必要ないのですか?
log4j:WARN No appenders could be found for logger (org.apache.pdfbox.io.ScratchFileBuffer).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
あなたは私のコードに含まPOIにおけるAPI & PDFBOXのAPIの下に見つけることができます。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
import org.apache.poi.poifs.filesystem.*;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class FIRST {
//private static WordExtractor we;
//static InputStream inc;
static PDDocument pdDoc = null;
public static void main(String[] args) throws IOException {
POIFSFileSystem fs = null;
// String target_dir = "E:\\TESTTRS";
//File dir = new File(target_dir);
// File[] files = dir.listFiles();
String target_dir = "C:\\Users";
File dir = new File(target_dir);
File[] files = dir.listFiles();
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("firstsheet");
Row row0 = sheet.createRow(0);
row0.createCell(0).setCellValue("S.NO");
row0.createCell(1).setCellValue("DOCUMENT");
row0.createCell(2).setCellValue("VALUE1");
row0.createCell(3).setCellValue("VALUE2");
row0.createCell(4).setCellValue("TEND");
int j = 1;
for (int s=0;s<files.length;s++){
if(files[s].isFile()){
pdDoc = PDDocument.load(files[s]);
//fs = new POIFSFileSystem(new FileInputStream(files[s]));
PDFTextStripper Stripper = new PDFTextStripper();
String st = Stripper.getText(pdDoc);
String linesp = System.lineSeparator();
String[] paragraph = st.split(linesp);
//HWPFDocument doc = new HWPFDocument(fs);
//we = new WordExtractor(doc);
//String[] paragraph= we.getParagraphText();
Row row1 = sheet.createRow(j);
/***************************1_PRINTS S.NO *************************************/
Cell cell_10 =row1.createCell(0);
cell_10.setCellValue(j);
j++;
/***************************2_PRINTS FILE NAMES *********************************/
Cell cell_11 = row1.createCell(1);
cell_11.setCellValue(files[s].getName());
/******************************3_PRINTS VALUE1*****************************************/
Cell cell_12 = row1.createCell(2);
String len = files[s].getName().substring(13, 19);
cell_12.setCellValue(len);
/**********************4_PRINTS VALUE2 *******************************/
Cell cell_13 = row1.createCell(3);
for(String p: paragraph){
if(p.startsWith("VALUE2"))
cell_13.setCellValue(p.substring(22));
}
/*******************5_PRINTS TEND*****************************************/
Cell cell_14 = row1.createCell(4);
for(String pp: paragraph){
if(pp.contains("TEND"))
cell_14.setCellValue(pp);
}
/**************6_TEST PATTERNS*********************************************/
Cell cell_15 = row1.createCell(5);
for(String c : paragraph){
final String regex = ("^.*([0-9]{6}\\/[A-Z][0-9]{5}).*$");
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(c);
for (int i = 1; i < matcher.groupCount(); i++) {
if(c.startsWith("COMMENT:"))
cell_15.setCellValue(""+matcher.group(i));
}
}
workbook.write(new FileOutputStream("C:\\Users\\abc.xls"));
workbook.close();
}
pdDoc.close();
}}}
"私のアプリケーションにWeb関連の機能は開発していません" - 重要ではありませんが、ログはWeb以外のアプリケーションにも役立ち、pdfboxはログを記録します。 log4j設定ファイルを追加する必要があります。 https://stackoverflow.com/questions/1140358/how-to-initialize-log4j-properlyと「詳細についてはhttp://logging.apache.org/log4j/1.2/faq.html#noconfig」を参照してください。 –
私はそれがウェブアプリケーションのためのロギングだけではありません。リモートアプリケーションと単純なローカルアプリケーションの展開に役立ちます。リソースが役立ちます。 – vasam
あなたのコメントを読む前に私の質問に答えました。あなたは私の質問を削除したい。しかし、私は同様の問題と解決策を見たことがありますが、これはまったく同じではありません – vasam