web-dev-qa-db-ja.com

Node js pdfバッファをpdfに戻す変換

私はブラウザでJavaScriptを使用してPDFを作成し、次のコードを使用して投稿経由でサーバーに送信しました。

var blob = pdf.output('blob')
var xhr = new XMLHttpRequest();
xhr.open('post','/upload', true);
xhr.setRequestHeader("Content-Type", "application/pdf");                                
xhr.send(blob);

Node Expressを実行しているサーバーでPDFとして保存したいのですが、Expressとbody-parserパッケージを使用して次のコードを作成しました:

const bodyParser = require('body-parser');

app.use(bodyParser.urlencoded({ limit: '1gb', extended: false }));
app.use(bodyParser.raw({ limit: '1gb', type: 'application/pdf' }));

app.post('/upload', function(req, res){
   console.log(req.body);      
}

req.bodyはバッファ、Uint8Array [653120]です。

サーバーに保存する前に、pdfに変換する手助けが必要です。任意の助けいただければ幸いです。ありがとう。

6
dram

バッファはリテラルバイナリ表現です。 .toString()なしでファイルに直接書き込むだけで、必要なファイルになります。

例えばfs.writeFileSync('some.pdf', req.body)を試す

私は実際にはwriteFileSyncの使用をお勧めしません-代わりにwriteFileを使用します。これは非同期でコールバックが必要ですが、他のhttpリクエストの受け入れをブロックしません。

バッファは、エンコードされていない単なるバイトのシーケンスです。ログアウトしたときにbodyがxmlのように見えると思われる場合は、.toString('utf8')を試してください。 hex/utf8/base64は、バイナリの単なる表現です。これらは、データを解凍またはパックする関数のようなものです。この場合、バッファ内の一連のバイトをそのままディスク上に存在させたいものとします。そのため、エンコーディングをいじることは望ましくありません。

3
Catalyst