nodejs对文件进行分页

本文介绍了一种使用Node.js中的Child Process模块结合Awk命令来提取压缩文件指定行内容的方法。该方法适用于需要从大型CSV文件或其他文本文件中快速检索特定行的应用场景。
//从文件中提取文件指从x行到y行的内容 
//awk -v start=5 -v end=10 -F "\x01" '{if(NR>=start && NR<=end)print $1,NR}' app_v2.csv var exec = require('child_process').exec; var fs = require('fs'); var shell = {}; shell.getContentFromFile = function(file, pageIndex, pageSize, split, next) { fs.exists(file, function(exists) { if (!exists) { next('file not exist'+file, null, null); } var start = (pageIndex - 1) * pageSize + 1; var end = (pageIndex) * pageSize; var cmd = "gzip -d -c " + file + " | awk -v start=" + start + " -v end=" + end + " -F " + split + " '{ if(NR>=start && NR<=end) print $0}' "; console.log(" the awk: " + cmd); exec(cmd, function(err, stdout, stderr) { if (err) { console.log(err); } next(err, stdout, stderr); }); }); }; shell.getFileLineCount = function(file, next) { fs.exists(file, function(exists) { if (!exists) { next('file not exist'+file, null, null); } var cmd = "gzip -d -c " + file + " | cat | wc -l"; exec(cmd, next); }); }; module.exports = shell;

 

转载于:https://www.cnblogs.com/witwave/p/4633629.html

### 使用 `pdfjs-dist` 对 PDF 文件进行分页处理 为了在 Node.js 中对 PDF 文件进行分页处理,可以利用 `pdfjs-dist` 库来解析和操作 PDF 文档。以下是具体的操作流程: #### 安装依赖库 安装 `pdfjs-dist` 可以通过 npm 来完成,这会下载预构建版本的 pdf.js 包。 ```bash npm i pdfjs-dist ``` #### 设置全局 Worker 路径 由于 `pdfjs-dist` 需要加载 Web Worker 来异步处理 PDF 解析工作,在使用前需指定 worker 的源文件路径[^1]。 ```javascript const pdfjsLib = require('pdfjs-dist'); // 如果不使用内置worker,则需要单独引入worker pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.9.359/pdf.worker.min.js'; ``` #### 加载并读取 PDF 文档 调用 `getDocument()` 函数传入目标 PDF 文件 URL 或者 Buffer 流对象,该函数返回的是一个 Promise 类型的任务实例 (`PDFDocumentLoadingTask`),当文档加载完成后可以通过 `.promise` 属性获取实际的 PDF 文档对象(`pdfDoc`)。 ```javascript async function loadPdf(urlOrBuffer){ let loadingTask = pdfjsLib.getDocument(urlOrBuffer); const pdfDoc = await loadingTask.promise; console.log(`${pdfDoc.numPages} pages found`); } ``` #### 获取单页内容 对于每一页的内容提取,可借助于 `getPage(pageNumber)` 方法逐一访问各个页面,并且可以根据需求进一步加工这些页面的信息,比如绘制图像、文字等内容到 Canvas 上显示出来。 ```javascript function renderPage(pdfDoc, pageNumber) { pdfDoc.getPage(pageNumber).then(function (page) { var scale = 1.5; // 放大比例 var viewport = page.getViewport({scale}); // 创建canvas元素用于展示当前页图片 var canvas = document.createElement('canvas'); var context = canvas.getContext('2d'); canvas.height = viewport.height; canvas.width = viewport.width; var renderContext = { canvasContext: context, viewport: viewport }; page.render(renderContext); }); } for(let pageNum=1;pageNum<=pdfDoc.numPages;++pageNum){ renderPage(pdfDoc, pageNum); } ``` 以上代码片段展示了如何逐页渲染 PDF 到 HTML 页面上的 Canvas 元素中去。当然也可以根据业务逻辑调整这部分功能,例如只导出特定几页作为新 PDF 输出等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值