├── .gitattributes ├── .gitignore ├── .npmignore ├── .travis.yml ├── index.js ├── package.json ├── parser.js ├── readme.md ├── test ├── error-version-no-supported.js ├── error-version-no-supported │ └── test.mht ├── index.js ├── readmode-position.js ├── remove-quoted-printable.js └── simple │ ├── load-file-by-parser.json │ ├── load-file-by-user.json │ ├── simple-removedQuotedPrintable.json │ └── simple.mht └── utils.js /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | 11 | # Directory for instrumented libs generated by jscoverage/JSCover 12 | lib-cov 13 | 14 | # Coverage directory used by tools like istanbul 15 | coverage 16 | 17 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 18 | .grunt 19 | 20 | # node-waf configuration 21 | .lock-wscript 22 | 23 | # Compiled binary addons (http://nodejs.org/api/addons.html) 24 | build/Release 25 | 26 | # Dependency directory 27 | # https://docs.npmjs.com/misc/faq#should-i-check-my-node-modules-folder-into-git 28 | node_modules 29 | 30 | # ========================= 31 | # Operating System Files 32 | # ========================= 33 | 34 | # OSX 35 | # ========================= 36 | 37 | .DS_Store 38 | .AppleDouble 39 | .LSOverride 40 | 41 | # Thumbnails 42 | ._* 43 | 44 | # Files that might appear in the root of a volume 45 | .DocumentRevisions-V100 46 | .fseventsd 47 | .Spotlight-V100 48 | .TemporaryItems 49 | .Trashes 50 | .VolumeIcon.icns 51 | 52 | # Directories potentially created on remote AFP share 53 | .AppleDB 54 | .AppleDesktop 55 | Network Trash Folder 56 | Temporary Items 57 | .apdisk 58 | 59 | # Windows 60 | # ========================= 61 | 62 | # Windows image file caches 63 | Thumbs.db 64 | ehthumbs.db 65 | 66 | # Folder config file 67 | Desktop.ini 68 | 69 | # Recycle Bin used on file shares 70 | $RECYCLE.BIN/ 71 | 72 | # Windows Installer files 73 | *.cab 74 | *.msi 75 | *.msm 76 | *.msp 77 | 78 | # Windows shortcuts 79 | *.lnk 80 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | test -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "4.1" 4 | - "4.0" 5 | - "0.12" 6 | - "0.11" 7 | - "0.10" 8 | - "iojs" 9 | after_success: 10 | - npm run coveralls -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | var parser = require("./parser"); 2 | module.exports = { 3 | parse: function (fileData, option) { 4 | return parser.parseByString(fileData, option); 5 | }, 6 | loadFile: function (filePath, option, callback) { 7 | var readline = require("linebyline"); 8 | var readStream = readline(filePath, { 9 | retainBuffer: true 10 | }); 11 | return parser.parseByStream(readStream, option, callback); 12 | }, 13 | constants: parser.constants 14 | } 15 | /* 16 | module.exports.loadFile(__dirname + "/test/simple/simple.mht", { 17 | charset: "gbk", 18 | decodeQuotedPrintable: true 19 | }, function (err, data) { 20 | require("fs").writeFile("./aa.json", JSON.stringify(data), "utf-8") 21 | }); 22 | */ -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mhtml-parser", 3 | "version": "1.0.2", 4 | "description": "MHTML file parser", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "mocha", 8 | "cover": "istanbul cover _mocha", 9 | "coveralls": "npm run cover -- --report lcovonly && cat ./coverage/lcov.info | coveralls" 10 | }, 11 | "author": "zsx ", 12 | "license": "MIT", 13 | "dependencies": { 14 | "iconv-lite": "^0.4.13", 15 | "linebyline": "^1.3.0", 16 | "object-assign": "^4.0.1", 17 | "quoted-printable": "^1.0.0" 18 | }, 19 | "devDependencies": { 20 | "blanket": "^1.2.1", 21 | "coveralls": "^2.11.6", 22 | "deep-diff": "^0.3.3", 23 | "istanbul": "^0.4.1", 24 | "mocha": "^2.3.4", 25 | "mocha-lcov-reporter": "^1.0.0" 26 | }, 27 | "directories": { 28 | "test": "test" 29 | }, 30 | "repository": { 31 | "type": "git", 32 | "url": "git+https://github.com/zsxsoft/mhtml-parser.git" 33 | }, 34 | "bugs": { 35 | "url": "https://github.com/zsxsoft/mhtml-parser/issues" 36 | }, 37 | "homepage": "https://github.com/zsxsoft/mhtml-parser#readme", 38 | "keywords": [ 39 | "mhtml", 40 | "mht" 41 | ] 42 | } 43 | -------------------------------------------------------------------------------- /parser.js: -------------------------------------------------------------------------------- 1 | var READING_STATE_HEADER = "READING_STATE_HEADER"; 2 | var READING_STATE_PART_HEADER = "READING_STATE_PART_HEADER"; 3 | var READING_STATE_PART_CONTENT = "READING_STATE_PART_CONTENT"; 4 | var READING_STATE_INITIALIZED = "READING_STATE_INITIALIZED"; 5 | 6 | var READ_MODE_ALL = "READ_MODE_ALL"; 7 | var READ_MODE_POSITION = "READ_MODE_POSITION"; 8 | 9 | var iconv = require("iconv-lite"); 10 | var os = require('os'); 11 | var quotedPrintable = require('quoted-printable'); 12 | var utils = require('./utils'); 13 | var EOLLength = os.EOL.length; 14 | 15 | function getContent(key, content) { 16 | var colonPosition = content.indexOf(":"); 17 | if (colonPosition < 0) return null; 18 | if (content.substr(0, colonPosition).toLowerCase() != key.toLowerCase()) return null; 19 | return content.substr(colonPosition + 1, content.length).trim(); 20 | } 21 | 22 | function initializeOptions(unformattedOption) { 23 | var option = {}; 24 | option = utils.objectAssign({}, unformattedOption); 25 | option.charset = option.charset || "utf-8"; 26 | option.decodeQuotedPrintable = option.decodeQuotedPrintable || false; 27 | option.decodeBase64ToBuffer = option.decodeBase64ToBuffer || false; 28 | option.readMode = option.readMode || READ_MODE_ALL; 29 | return option; 30 | } 31 | 32 | function parseByString(string, unformattedOption) { 33 | var ret = {}; 34 | var option = initializeOptions(unformattedOption); 35 | option.readMode = READ_MODE_ALL; 36 | var parseLine = parse(ret); 37 | string.split("\n").forEach(function(line, lineIndex) { 38 | parseLine(line, lineIndex, -1, option); 39 | }); 40 | return ret; 41 | } 42 | 43 | 44 | function parseByStream(readStream, unformattedOption, callback) { 45 | var ret = {}; 46 | var parseLine = parse(ret); 47 | var calledBack = false; 48 | var option = initializeOptions(unformattedOption); 49 | 50 | readStream.on("line", function (line, lineIndex, byteCount) { 51 | var parseResult = parseLine(iconv.decode(line, option.charset), lineIndex - 1, byteCount, option); 52 | if (parseResult !== true) { 53 | if (!calledBack) callback(parseResult, null); 54 | calledBack = true; 55 | readStream.emit("close"); 56 | } 57 | }); 58 | readStream.on("end", function () { 59 | parseLine = null; 60 | if (!calledBack) callback(null, ret); 61 | }) 62 | } 63 | 64 | function parse(ret) { 65 | 66 | var READING_STATE = READING_STATE_INITIALIZED; 67 | var boundary = "--"; 68 | var boundaryLength = 2; 69 | var singleObjectTemplate = { 70 | name: null, 71 | location: null, 72 | encoding: null, 73 | type: null, 74 | data: null, 75 | startPosition: 0, 76 | bufferLength: 0, 77 | }; 78 | var singleObject = null; 79 | var dataArray = []; 80 | var startPosition = 0; 81 | 82 | var parseLine = function (line, lineIndex, byteCount, option) { 83 | 84 | line = line.trim(); 85 | if (line == boundary) { 86 | 87 | READING_STATE = READING_STATE_PART_HEADER; 88 | 89 | if (singleObject != null) { 90 | ret[singleObject.name] = singleObject; 91 | 92 | if (option.readMode == READ_MODE_ALL) { 93 | ret[singleObject.name].data = dataArray.join("\n").trim(); 94 | 95 | if (option.decodeQuotedPrintable && ret[singleObject.name].encoding == "quoted-printable") { 96 | ret[singleObject.name].data = quotedPrintable.decode(ret[singleObject.name].data); 97 | } 98 | } 99 | 100 | ret[singleObject.name].startPosition = startPosition; 101 | ret[singleObject.name].bufferLength = startPosition == 0 ? 0 : byteCount - boundaryLength - startPosition - EOLLength; // To remove the last empty line 102 | startPosition = 0; 103 | 104 | } 105 | singleObject = utils.objectAssign({}, singleObjectTemplate); 106 | dataArray = []; 107 | } 108 | 109 | if (lineIndex == 0) { 110 | var mimeVersion = getContent("MIME-Version", line); 111 | if (mimeVersion != "1.0") { 112 | return "Unsupported version"; 113 | } 114 | READING_STATE = READING_STATE_HEADER; 115 | } else if (READING_STATE == READING_STATE_HEADER) { 116 | var contentType = getContent("Content-Type", line); 117 | if (contentType != null) { 118 | var boundaryString = contentType.split("boundary=")[1]; 119 | boundary = "--" + boundaryString.substr(1, boundaryString.length - 2); 120 | boundaryLength = boundary.length; 121 | } 122 | } else if (READING_STATE == READING_STATE_PART_HEADER) { 123 | if (line == "" || line == "\r") { 124 | READING_STATE = READING_STATE_PART_CONTENT; 125 | startPosition = byteCount + 1; // To remove the first empty line 126 | return true; 127 | } 128 | var contentType = getContent("Content-Type", line); 129 | var contentLocation = getContent("Content-Location", line); 130 | var contentTransferEncoding = getContent("Content-Transfer-Encoding", line); 131 | if (contentType != null) { 132 | singleObject.type = contentType; 133 | } else if (contentLocation != null) { 134 | singleObject.location = contentLocation; 135 | singleObject.name = contentLocation.substr(contentLocation.lastIndexOf("/") + 1); 136 | } else if (contentTransferEncoding != null) { 137 | singleObject.encoding = contentTransferEncoding.toLowerCase(); 138 | } 139 | } else if (READING_STATE == READING_STATE_PART_CONTENT) { 140 | if (option.readMode == READ_MODE_ALL) { 141 | dataArray.push(line); 142 | } 143 | 144 | } 145 | 146 | 147 | return true; 148 | } 149 | return parseLine; 150 | 151 | } 152 | module.exports = { 153 | parseByStream: parseByStream, 154 | parseByString: parseByString, 155 | constants: { 156 | READ_MODE_ALL: READ_MODE_ALL, 157 | READ_MODE_POSITION: READ_MODE_POSITION, 158 | } 159 | }; 160 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | MHTML Parser 2 | ================================== 3 | [![npm](https://img.shields.io/npm/v/mhtml-parser.svg)](https://www.npmjs.com/package/mhtml-parser) 4 | [![Coverage Status](https://coveralls.io/repos/zsxsoft/mhtml-parser/badge.svg)](https://coveralls.io/r/zsxsoft/mhtml-parser) 5 | [![Build Status](https://travis-ci.org/zsxsoft/mhtml-parser.svg?branch=master)](https://travis-ci.org/zsxsoft/mhtml-parser) 6 | [![David deps](https://david-dm.org/zsxsoft/mhtml-parser.svg)](https://david-dm.org/zsxsoft/mhtml-parser) 7 | [![npm](https://img.shields.io/npm/dm/mhtml-parser.svg)](https://www.npmjs.com/package/mhtml-parser) 8 | 9 | A MHTML(.mht) file parser. 10 | 11 | *Only tested in .mht converted by Word 2016.* 12 | 13 | ## Installion 14 | ```bash 15 | npm install mhtml-parser --save 16 | ``` 17 | 18 | ## Usage 19 | 20 | ### Parse by filename (Asynchronous) 21 | ```javascript 22 | let parser = require('mhtml-parser'); 23 | parser.loadFile(__dirname + "/simple/simple.mht", { 24 | charset: "gbk" 25 | }, function(err, data) { 26 | if (err) throw err; 27 | console.log(data); 28 | }); 29 | ``` 30 | 31 | ### Parse by filename and read content manually (Only tested in Windows & Linux) 32 | ```javascript 33 | let parser = require('mhtml-parser'); 34 | let fs = require("fs"); 35 | let fileName = 'image001.jpg'; 36 | 37 | parser.loadFile(__dirname + "/simple/simple.mht", { 38 | charset: "gbk", 39 | readMode: parser.constants.READ_MODE_POSITION 40 | }, function(err, data) { 41 | if (err) throw err; 42 | fs.open(__dirname + "/test/simple/simple.mht", "r", function(err, fd) { 43 | let buffer = new Buffer(data[fileName].bufferLength); 44 | fs.readSync(fd, buffer, 0, data[fileName].bufferLength, data[fileName].startPosition); 45 | console.log(buffer.toString()); 46 | }); 47 | }); 48 | 49 | ``` 50 | 51 | ### Parse by string (Synchronous) 52 | ```javascript 53 | let parser = require('mhtml-parser'); 54 | let data = parser.parse(iconv.decode(require("fs").readFileSync(__dirname + "/simple/simple.mht", null), "gbk"), {}); 55 | ``` 56 | 57 | **In this mode, ``option.readMode`` will always be ``constants.READ_MODE_ALL``.** 58 | 59 | ## Options 60 | ### charset: String 61 | Default Value: utf-8 62 | 63 | To convert binary data to detected charset. Useless when **readMode == READ_MODE_POSITION**. 64 | 65 | ### decodeQuotedPrintable: boolean 66 | Default Value: false 67 | 68 | To decode quoted-printable data, which is something like ``<a href=3D\"http://zsxsoft.com\">``. Useless when **readMode == READ_MODE_POSITION**. 69 | 70 | See here: https://github.com/mathiasbynens/quoted-printable 71 | 72 | ### readMode: string 73 | Default Value: constants.READ_MODE_ALL 74 | 75 | Avaiable items list here: 76 | * **READ_MODE_ALL** - Read the whole file to the memory. You can directly get each file's content from ``data.fileName.data`` 77 | * **READ_MODE_POSITION** - Scan the whole file and only get the position and length of each file but not reading them. 78 | 79 | 80 | ## Example Result 81 | ```javascript 82 | { 83 | "Hey.htm": { 84 | "name": "Hey.htm", 85 | "location": "file:///C:/B133AD19/Hey.htm", 86 | "encoding": "quoted-printable", 87 | "type": "text/html; charset=\"gb2312\"", 88 | "data": "\n 

\n\n\n\n\n\n", 89 | "startPosition": 454, 90 | "bufferLength": 61846 91 | }, 92 | "item0001.xml": { 93 | "name": "item0001.xml", 94 | "location": "file:///C:/B133AD19/Hey.files/item0001.xml", 95 | "encoding": "quoted-printable", 96 | "type": "text/xml", 97 | "data": "", 98 | "startPosition": 62470, 99 | "bufferLength": 335 100 | }, 101 | "image001.jpg": { 102 | "name": "image001.jpg", 103 | "location": "file:///C:/B133AD19/Hey.files/image001.jpg", 104 | "encoding": "base64", 105 | "type": "image/jpeg", 106 | "data": "/9j/4AAQSkZJRgABBDAAo...+z6EMn3aKKKoD//Z", 107 | "startPosition": 68533, 108 | "bufferLength": 12297 109 | } 110 | } 111 | 112 | 113 | ``` 114 | 115 | ## TODO 116 | * More tests 117 | 118 | 119 | ## License 120 | The MIT License 121 | 122 | Welcome PR :) -------------------------------------------------------------------------------- /test/error-version-no-supported.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | var parser = require("../"); 3 | var iconv = require("iconv-lite"); 4 | var fs = require("fs"); 5 | var deepDiff = require("deep-diff"); 6 | 7 | describe('error-version-no-supported', function () { 8 | describe('Test', function () { 9 | it('Should throw error', function (done) { 10 | parser.loadFile(__dirname + "/error-version-no-supported/test.mht", { 11 | charset: "gbk" 12 | }, function (err, data) { 13 | if (err) { 14 | console.log(err); 15 | assert(err == "Unsupported version"); 16 | done(); 17 | } else { 18 | throw ("Didn't throw error!"); 19 | } 20 | }); 21 | }); 22 | }); 23 | 24 | }); 25 | -------------------------------------------------------------------------------- /test/error-version-no-supported/test.mht: -------------------------------------------------------------------------------- 1 | MIME-Version: 2.0 2 | -------------------------------------------------------------------------------- /test/index.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | var parser = require("../"); 3 | var iconv = require("iconv-lite"); 4 | var fs = require("fs"); 5 | var deepDiff = require("deep-diff"); 6 | var utils = require('../utils'); 7 | 8 | function newDeepDiff(lhs, rhs) { 9 | return deepDiff.observableDiff(lhs, rhs, function (d) { 10 | if (d.kind == "E" && (d.path[d.path.lenth - 1] == "startPosition" || d.path[d.path.lenth - 1] == "bufferLength")) { 11 | deepDiff.applyChange(lhs, rhs, d); 12 | } 13 | }); 14 | } 15 | 16 | describe('Simple Test', function () { 17 | describe('Load file by parser', function () { 18 | it('JSON should be equal', function (done) { 19 | var json = JSON.parse(fs.readFileSync(__dirname + '/simple/load-file-by-parser.json', 'utf-8')); 20 | parser.loadFile(__dirname + "/simple/simple.mht", { 21 | charset: "gbk" 22 | }, function (err, data) { 23 | if (err) throw err; 24 | if (process.env.SAVE_JSON) { 25 | fs.writeFile(__dirname + '/simple/load-file-by-parser.json', JSON.stringify(data), 'utf-8'); 26 | done(); 27 | return; 28 | } 29 | var ret = newDeepDiff(data, json); 30 | if (typeof ret == "undefined" || ret === null) { 31 | done(); 32 | } else { 33 | console.error(ret); 34 | throw "Not Equal"; 35 | } 36 | }); 37 | }); 38 | }); 39 | 40 | describe('Load file by user', function () { 41 | it('JSON should be equal', function (done) { 42 | var json = JSON.parse(fs.readFileSync(__dirname + '/simple/load-file-by-user.json', 'utf-8')); 43 | var data = parser.parse(iconv.decode(fs.readFileSync(__dirname + "/simple/simple.mht", null), "gbk"), {}); 44 | if (process.env.SAVE_JSON) { 45 | fs.writeFile(__dirname + '/simple/load-file-by-user.json', JSON.stringify(data), 'utf-8'); 46 | done(); 47 | return; 48 | } 49 | var ret = newDeepDiff(data, json); 50 | if (typeof ret == "undefined" || ret === null) { 51 | done(); 52 | } else { 53 | console.error(ret); 54 | throw "Not Equal"; 55 | } 56 | }); 57 | }); 58 | }); 59 | -------------------------------------------------------------------------------- /test/readmode-position.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | var parser = require("../"); 3 | var iconv = require("iconv-lite"); 4 | var fs = require("fs"); 5 | var deepDiff = require("deep-diff"); 6 | 7 | 8 | var removeLineTag = function(string) { 9 | return string.replace(/\n|\r| | /g, ""); 10 | } 11 | 12 | describe('READ_MODE_POSITION', function () { 13 | describe('Test', function () { 14 | it('The result should be same as the Simple Test', function (done) { 15 | var originalReadData = parser.parse(iconv.decode(fs.readFileSync(__dirname + "/simple/simple.mht", null), "gbk"), {}); 16 | 17 | parser.loadFile(__dirname + "/simple/simple.mht", { 18 | readMode: parser.constants.READ_MODE_POSITION 19 | }, function (err, data) { 20 | if (err) throw err; 21 | fs.open(__dirname + "/simple/simple.mht", "r", function (err, fd) { 22 | Object.keys(data).forEach(function (fileName) { 23 | var buffer = new Buffer(data[fileName].bufferLength); 24 | fs.readSync(fd, buffer, 0, data[fileName].bufferLength, data[fileName].startPosition); 25 | var convertedBuffer = removeLineTag(iconv.decode(buffer, 'gbk')); 26 | var comparedString = removeLineTag(iconv.decode(new Buffer(originalReadData[fileName].data), 'utf-8')); 27 | assert(convertedBuffer == comparedString); 28 | }); 29 | done(); 30 | }); 31 | 32 | }); 33 | 34 | }); 35 | }); 36 | 37 | }); 38 | -------------------------------------------------------------------------------- /test/remove-quoted-printable.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | var parser = require("../"); 3 | var iconv = require("iconv-lite"); 4 | var fs = require("fs"); 5 | var deepDiff = require("deep-diff"); 6 | 7 | 8 | function newDeepDiff(lhs, rhs) { 9 | return deepDiff.observableDiff(lhs, rhs, function (d) { 10 | if (d.kind == "E" && (d.path[d.path.lenth - 1] == "startPosition" || d.path[d.path.lenth - 1] == "bufferLength")) { 11 | deepDiff.applyChange(lhs, rhs, d); 12 | } 13 | }); 14 | } 15 | 16 | describe('Remove Quoted-printable', function () { 17 | var json = JSON.parse(fs.readFileSync(__dirname + '/simple/simple-removedQuotedPrintable.json', 'utf-8'));//require("./simple/simple-removedQuotedPrintable.json"); 18 | it('JSON should be equal', function (done) { 19 | parser.loadFile(__dirname + "/simple/simple.mht", { 20 | charset: "gbk", 21 | decodeQuotedPrintable: true 22 | }, function (err, data) { 23 | if (err) throw err; 24 | if (process.env.SAVE_JSON) { 25 | fs.writeFile(__dirname + '/simple/simple-removedQuotedPrintable.json', JSON.stringify(data), 'utf-8'); 26 | done(); 27 | return; 28 | } 29 | var ret = newDeepDiff(data, json); 30 | if (typeof ret == "undefined" || ret === null) { 31 | done(); 32 | } else { 33 | console.error(ret); 34 | throw "Not Equal"; 35 | } 36 | }); 37 | }); 38 | 39 | }); -------------------------------------------------------------------------------- /test/simple/load-file-by-user.json: -------------------------------------------------------------------------------- 1 | {"Hey.htm":{"name":"Hey.htm","location":"file:///C:/B133AD19/Hey.htm","encoding":"quoted-printable","type":"text/html; charset=\"gb2312\"","data":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\n\n

Hey, I’m zsx!

\n\n

我只是在测试文件而已(笑)

\n\n

\n\n\n\n\n\n
\n\n\n\n\n
\n
\n

再来艺术字<=\n/span>

\n
\n
\n 
\n\n
随便来个图吧(pixiv:\n52023241)

\n\n

 

\n\n\n\n\n\n\n\n\n\n\n\n\n
\n

这是个表格

\n
\n

 

\n
\n

 

\n
\n

 

\n
\n

 

\n
\n

 

\n
\n\n

 

\n\n
\n\n\n\n","startPosition":0,"bufferLength":0},"item0001.xml":{"name":"item0001.xml","location":"file:///C:/B133AD19/Hey.files/item0001.xml","encoding":"quoted-printable","type":"text/xml","data":"","startPosition":0,"bufferLength":0},"props002.xml":{"name":"props002.xml","location":"file:///C:/B133AD19/Hey.files/props002.xml","encoding":"quoted-printable","type":"text/xml","data":"\n","startPosition":0,"bufferLength":0},"themedata.thmx":{"name":"themedata.thmx","location":"file:///C:/B133AD19/Hey.files/themedata.thmx","encoding":"base64","type":"application/vnd.ms-officetheme","data":"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\nBQAFAF0BAADaCgAAAAA=","startPosition":0,"bufferLength":0},"colorschememapping.xml":{"name":"colorschememapping.xml","location":"file:///C:/B133AD19/Hey.files/colorschememapping.xml","encoding":"quoted-printable","type":"text/xml","data":"\n","startPosition":0,"bufferLength":0},"image001.jpg":{"name":"image001.jpg","location":"file:///C:/B133AD19/Hey.files/image001.jpg","encoding":"base64","type":"image/jpeg","data":"/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf\nIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7\nOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCAEBAMcDASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD1CKPF\nqB7UxIRiqdzrlvDBsiO99vXsKpR+ISFO5VP04rkZ0JnTKoCj6VXvZo4LZ3kYKAO9Yc/iGZlwmEGO\n1YWo38kyMXkLE+pqlqRsdDaa1Y+eQZgPqDS3/iK1igk8rMjbTjjArioJCZz9KmuXJt5P901aiDkZ\ns95cXUxYyMqn+EHAqe2jT+KmW1tvAyQP51qQ6fMV3LCxX+83yj8zWbLTIQkYHShmC8BRVl7GZjgS\nqD/dhQyH8+lQPp8YG2UMT6Sy4/8AHFpWYcyKkl1GMgupPoOarNcBjwpNXW03n5Igo/2YioP58mq8\nlsYUZ3G1V6k1I7lcTSs2FAX3xnFWC8cS5nlbB/vyBAf+ArWOdUmWRiioAylQGGcD1+tUiP3igEkf\n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","startPosition":0,"bufferLength":0}} -------------------------------------------------------------------------------- /test/simple/simple-removedQuotedPrintable.json: -------------------------------------------------------------------------------- 1 | {"Hey.htm":{"name":"Hey.htm","location":"file:///C:/B133AD19/Hey.htm","encoding":"quoted-printable","type":"text/html; charset=\"gb2312\"","data":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\n\n

Hey, I’m zsx!

\n\n

我只是在测试文件而已(笑)

\n\n

\n\n\n\n\n\n
\n\n\n\n\n
\n
\n

再来艺术字

\n
\n
\n 
\n\n
随便来个图吧(pixiv:\n52023241)

\n\n

 

\n\n\n\n\n\n\n\n\n\n\n\n\n
\n

这是个表格

\n
\n

 

\n
\n

 

\n
\n

 

\n
\n

 

\n
\n

 

\n
\n\n

 

\n\n
\n\n\n\n","startPosition":454,"bufferLength":61846},"item0001.xml":{"name":"item0001.xml","location":"file:///C:/B133AD19/Hey.files/item0001.xml","encoding":"quoted-printable","type":"text/xml","data":"","startPosition":62470,"bufferLength":335},"props002.xml":{"name":"props002.xml","location":"file:///C:/B133AD19/Hey.files/props002.xml","encoding":"quoted-printable","type":"text/xml","data":"\n","startPosition":62975,"bufferLength":363},"themedata.thmx":{"name":"themedata.thmx","location":"file:///C:/B133AD19/Hey.files/themedata.thmx","encoding":"base64","type":"application/vnd.ms-officetheme","data":"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\nBQAFAF0BAADaCgAAAAA=","startPosition":63522,"bufferLength":4313},"colorschememapping.xml":{"name":"colorschememapping.xml","location":"file:///C:/B133AD19/Hey.files/colorschememapping.xml","encoding":"quoted-printable","type":"text/xml","data":"\n","startPosition":68015,"bufferLength":356},"image001.jpg":{"name":"image001.jpg","location":"file:///C:/B133AD19/Hey.files/image001.jpg","encoding":"base64","type":"image/jpeg","data":"/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf\nIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7\nOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCAEBAMcDASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD1CKPF\nqB7UxIRiqdzrlvDBsiO99vXsKpR+ISFO5VP04rkZ0JnTKoCj6VXvZo4LZ3kYKAO9Yc/iGZlwmEGO\n1YWo38kyMXkLE+pqlqRsdDaa1Y+eQZgPqDS3/iK1igk8rMjbTjjArioJCZz9KmuXJt5P901aiDkZ\ns95cXUxYyMqn+EHAqe2jT+KmW1tvAyQP51qQ6fMV3LCxX+83yj8zWbLTIQkYHShmC8BRVl7GZjgS\nqD/dhQyH8+lQPp8YG2UMT6Sy4/8AHFpWYcyKkl1GMgupPoOarNcBjwpNXW03n5Igo/2YioP58mq8\nlsYUZ3G1V6k1I7lcTSs2FAX3xnFWC8cS5nlbB/vyBAf+ArWOdUmWRiioAylQGGcD1+tUiP3igEkf\n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","startPosition":68533,"bufferLength":12297}} -------------------------------------------------------------------------------- /test/simple/simple.mht: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zsxsoft-deprecated/mhtml-parser/f594da4eee1807782a953883dcee514eeeeddc0b/test/simple/simple.mht -------------------------------------------------------------------------------- /utils.js: -------------------------------------------------------------------------------- 1 | var objectAssignPonyFill = require('object-assign'); 2 | 3 | function objectAssign() { 4 | if (Object.assign) { 5 | return Object.assign.apply(Object.assign, arguments); 6 | } else { 7 | return objectAssignPonyFill.apply(objectAssignPonyFill, arguments); 8 | } 9 | } 10 | module.exports = { 11 | objectAssign: objectAssign 12 | }; 13 | --------------------------------------------------------------------------------