# parse-x-to-text **Repository Path**: pixelloz/parse-x-to-text ## Basic Information - **Project Name**: parse-x-to-text - **Description**: 解析各种格式电子书转文本,如PDF、EPUB、MOBI等。 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-09 - **Last Updated**: 2025-08-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: epub, pdf, mobi, parse ## README # Parse-X-To-Text 一个纯前端JavaScript库,用于将PDF、EPUB、MOBI文件转换为TXT格式。 ## ✨ 特性 - 📄 支持PDF、EPUB、MOBI格式文件转换 - 🔄 支持按页码转换或整体转换 - 📱 纯前端实现,无需服务器 - 🚀 高性能,支持大文件处理 - 🎨 现代化UI界面 - 📦 支持NPM安装 - 🔧 完全可配置的转换选项 ## 📦 安装 ```bash npm install parse-x-to-text ``` 或者使用Yarn: ```bash yarn add parse-x-to-text ``` ## 🚀 快速开始 ### 基本使用 ```javascript import ParseXToText from 'parse-x-to-text'; // 创建转换器实例 const converter = new ParseXToText(); // 转换单个文件 const file = document.getElementById('fileInput').files[0]; const result = await converter.convertToText(file); if (result.error) { console.error('转换失败:', result.error); } else { console.log('转换成功:', result.content); console.log('总页数:', result.totalPages); console.log('转换耗时:', result.conversionTime + 'ms'); } ``` ### 按页码转换 ```javascript // 转换指定页码范围 const options = { byPage: true, pageRange: '1-5', // 转换第1-5页 includePageNumbers: true }; const result = await converter.convertToText(file, options); ``` ### 批量转换 ```javascript // 批量转换多个文件 const files = Array.from(document.getElementById('fileInput').files); const results = await converter.convertMultipleFiles(files); // 获取转换统计信息 const stats = converter.getConversionStats(results); console.log('成功转换:', stats.successfulConversions, '个文件'); ``` ## 📚 API 文档 ### ParseXToText 类 #### 构造函数 ```javascript const converter = new ParseXToText(); ``` #### 方法 ##### `getSupportedFormats()` 获取支持的文件格式。 ```javascript const formats = converter.getSupportedFormats(); // 返回: ['pdf', 'epub', 'mobi'] ``` ##### `isFileSupported(file)` 检查文件是否支持转换。 ```javascript const isSupported = converter.isFileSupported(file); // 返回: boolean ``` ##### `getFileInfo(file)` 获取文件信息。 ```javascript const fileInfo = converter.getFileInfo(file); // 返回: { name, size, type, lastModified } ``` ##### `convertToText(file, options)` 将文件转换为文本。 ```javascript const result = await converter.convertToText(file, { byPage: false, pageRange: undefined, outputFormat: 'txt', includePageNumbers: false, separator: '\n\n--- 第 {page} 页 ---\n\n' }); ``` ##### `convertToHTML(file, options)` 将文件转换为HTML。 ```javascript const result = await converter.convertToHTML(file, options); ``` ##### `convertMultipleFiles(files, options)` 批量转换文件。 ```javascript const results = await converter.convertMultipleFiles(files, options); ``` ##### `downloadResult(result, filename)` 下载转换结果。 ```javascript converter.downloadResult(result, 'output.txt'); ``` ##### `getConversionStats(results)` 获取转换统计信息。 ```javascript const stats = converter.getConversionStats(results); // 返回: { totalFiles, successfulConversions, failedConversions, totalPages, totalFileSize, averageConversionTime } ``` ##### `formatFileSize(bytes)` 格式化文件大小。 ```javascript const size = converter.formatFileSize(1024); // 返回: "1 KB" ``` ### 转换选项 (ConversionOptions) ```typescript interface ConversionOptions { /** 是否按页码转换 */ byPage?: boolean; /** 指定页码范围,格式: "1-5" 或 "1,3,5" */ pageRange?: string; /** 输出格式 */ outputFormat?: 'txt' | 'html'; /** 是否包含页码信息 */ includePageNumbers?: boolean; /** 自定义分隔符 */ separator?: string; } ``` ### 转换结果 (ConversionResult) ```typescript interface ConversionResult { /** 转换后的文本内容 */ content: string; /** 总页数 */ totalPages: number; /** 转换的页数 */ convertedPages: number; /** 文件大小(字节) */ fileSize: number; /** 转换耗时(毫秒) */ conversionTime: number; /** 错误信息 */ error?: string; } ``` ## 🎯 使用示例 ### 示例1: 基本文件转换 ```html 文件转换示例
``` ### 示例2: 按页码转换 ```javascript // 转换第1-5页 const result = await converter.convertToText(file, { byPage: true, pageRange: '1-5', includePageNumbers: true }); // 转换第1,3,5页 const result = await converter.convertToText(file, { byPage: true, pageRange: '1,3,5', includePageNumbers: true }); ``` ### 示例3: 拖拽上传转换 ```html
拖拽文件到此处
``` ## 🛠️ 开发 ### 安装依赖 ```bash yarn install ``` ### 构建项目 ```bash yarn build ``` ### 开发模式 ```bash yarn dev ``` ### 运行测试 ```bash yarn test ``` ### 运行DEMO 构建完成后,在浏览器中打开 `demo/index.html` 查看演示。 ## 📁 项目结构 ``` parse-x-to-text/ ├── src/ │ ├── converters/ # 转换器实现 │ │ ├── PDFConverter.ts │ │ ├── EPUBConverter.ts │ │ └── MOBIConverter.ts │ ├── types/ # 类型定义 │ │ └── index.ts │ ├── utils/ # 工具函数 │ │ └── helpers.ts │ ├── ParseXToText.ts # 主要类 │ └── index.ts # 入口文件 ├── demo/ # 演示页面 │ ├── index.html │ ├── styles.css │ └── app.js ├── dist/ # 构建输出 ├── package.json ├── rollup.config.js ├── tsconfig.json └── README.md ``` ## 🔧 配置选项 ### Rollup 配置 项目使用 Rollup 进行打包,支持以下输出格式: - CommonJS (`dist/index.js`) - ES Module (`dist/index.esm.js`) - UMD (`dist/index.min.js`) ### TypeScript 配置 项目使用 TypeScript 进行开发,配置了严格模式和其他最佳实践。 ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! ## 📄 许可证 MIT License ## 🙏 致谢 - [PDF.js](https://mozilla.github.io/pdf.js/) - PDF解析 - [EPUB.js](https://github.com/futurepress/epub.js/) - EPUB解析 - [Rollup](https://rollupjs.org/) - 模块打包器 ## 📞 支持 如果您在使用过程中遇到问题,请: 1. 查看 [Issues](https://github.com/yourusername/parse-x-to-text/issues) 2. 提交新的 Issue 3. 发送邮件到 support@example.com --- ⭐ 如果这个项目对您有帮助,请给它一个星标!