检查二进制数据文件类型是否为PDF?

时间:2019-03-06 07:12:47

标签: node.js file-type

我有一个PDF文件或任何其他文件。当我在Node.js中读取文件内容时,它会提供二进制数据。如何在Node.js中确定二进制数据文件类型是否为PDF?

2 个答案:

答案 0 :(得分:0)

您可以使用pdf-parse之类的PDF解析库来检查文件,缓冲区等是否为有效的PDF:

const rp = require("request-promise-native");
const pdf = require('pdf-parse');

const testUrl1 = "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf";
const testUrl2 = "https://en.wikipedia.org/wiki/Cat#/media/File:Cat_poster_1.jpg";

function getPDF(url) {
    return rp({ uri: url, encoding: null});
}

function isPDF(buffer) {
    return pdf(buffer).then(function(data) {
        return { isPDF: true, info: data.info };
    }, (err) => {
        return { isPDF: false, info: null };
    });
}

async function testPDFCheck(url) {

    let pdfBuffer = await getPDF(url);
    let result = await isPDF(pdfBuffer);
    console.log(`Is PDF result: (${url}): `, result);
}

testPDFCheck(testUrl1);
testPDFCheck(testUrl2);

答案 1 :(得分:0)

选中此https://github.com/MaraniMatias/isPDF

const fs = require("fs");
const isPDF = require("is-pdf-valid");

const file = fs.readFileSync("./test.pdf")
console.log(isPDF(file));