2017-06-26 38 views
0

私はテキストを抽出し、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(); 
}}} 
+1

"私のアプリケーションにWeb関連の機能は開発していません" - 重要ではありませんが、ログはWeb以外のアプリケーションにも役立ち、pdfboxはログを記録します。 log4j設定ファイルを追加する必要があります。 https://stackoverflow.com/questions/1140358/how-to-initialize-log4j-properlyと「詳細についてはhttp://logging.apache.org/log4j/1.2/faq.html#noconfig」を参照してください。 –

+0

私はそれがウェブアプリケーションのためのロギングだけではありません。リモートアプリケーションと単純なローカルアプリケーションの展開に役立ちます。リソースが役立ちます。 – vasam

+0

あなたのコメントを読む前に私の質問に答えました。あなたは私の質問を削除したい。しかし、私は同様の問題と解決策を見たことがありますが、これはまったく同じではありません – vasam

答えて

0

私のプロジェクトの関連するmvnrepositoryとmaven依存関係をpom.xmlに構築することで解決しました。そして適切なルートロガーを使って "src"にlog4j.propertiesを設定する& log4jアペンダー。 PDFBox APIを使用してPDF文書を解析したい場合

関連する問題