2017-09-07 78 views
0

我想創建一個API將PDF文件轉換爲JSON。我在解析pdf文件後得到的數據是用逗號分隔的值。我正在使用Nodejs pdf2json軟件包。 數據什麼我米解析PDF文件後得到:如何使用JavaScript將解析數據寫入JSON文件?

"val a: 1, val b: 2, val c, vald: 3, 4, 5, 6, val e: 7," 

所需的輸出:

{ 
"val a" : 1, 
"val b" : 2, 
"val c" : "", 
"vald" : "3,4,5,6", 
"val e": 7 
} 

我使用的代碼:

var express = require('express'), 
 
    app = express(), 
 
    upload = require('express-fileupload'), 
 
    http = require('http').Server(app).listen(8080), 
 
    PDFParser = require("pdf2json"), 
 
    fs = require('fs'); 
 

 
console.log("Server started on port 8080"); 
 

 
//pdf parser 
 
let pdfParser = new PDFParser(this, 1); 
 

 

 
//express file uploader     
 
app.use(upload()); 
 

 
app.get("/", (req, res) => { 
 
    res.sendFile(__dirname + "/index.html"); 
 
}) 
 

 
app.post("/", (req, res) => { 
 
    if (req.files) { 
 
     var file = req.files.filename, 
 
      filename = file.name; 
 
     pdfParser.parseBuffer(file.data); 
 

 

 
     pdfParser.on("pdfParser_dataError", errData => console.error(errData.parserError)); 
 
     pdfParser.on("pdfParser_dataReady", pdfData => { 
 
      var output = JSON.stringify(pdfParser.getRawTextContent()).split(/\\r\\n/); 
 
      fs.writeFile('data2toJson.json', output, 'utf8'); 
 
      console.log("hellow" + Date()); 
 
     }); 
 

 
     res.send("done"); 
 
    } 
 
})
<form method="post" enctype="multipart/form-data" action="/"> 
 
    <input type="file" name="filename"> 
 
    <input type="submit" value="upload"> 
 
</form>

+0

你有什麼發現?上述代碼的結果是什麼? – tgdn

+0

我在問題 – Vino

+0

中給出了上述代碼的結果。對不起,我的太快讀了 – tgdn

回答

0

我試着根據你的問題得到預期的輸出灰。 嘗試以下解決方案

希望這將讓你去:)

注意:你應該嘗試優化的解決方案來這樣做。

var input = "val a: 1, val b: 2, val c, vald: 3, 4, 5, 6, val e: 7,"; 
 
var keys = input.match(/(val([a-z0-9\s]+):)|(val([a-z0-9\s]+),)/g) 
 
var output = {}; 
 
for (var i = 0; i < keys.length; i++) { 
 
    input = input.slice(keys[i].length); 
 
    if (i < keys.length - 1) 
 
    var val = input.substring(0, input.indexOf(keys[i + 1])); 
 
    else 
 
    var val = input; 
 
    input = input.slice(val.length); 
 
    val = val.trim(); 
 

 
    if (val.lastIndexOf(",") == val.length - 1) { 
 
    val = val.substr(0, val.length - 1) 
 
    } 
 
    output[keys[i].replace(":", "").replace(",", "")] = val; 
 
} 
 
console.log(output)

+0

感謝您的快速響應,我從您的代碼中得到了一點想法,我使用了正則表達式和匹配方法而不是split,m仍然在處理問題,得到解決將更新在這裏 – Vino

相關問題