第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Base64 解碼 Typescript 中嵌入的 PDF

Base64 解碼 Typescript 中嵌入的 PDF

子衿沉夜 2023-04-01 15:37:19
在 XML 文件中,我們有一個表示 PDF 文件的 base64 編碼字符串,其中包含一些表格表示,即類似于此示例。當(dāng)解碼該 PDF 文檔(例如 this )的 base64 字符串時,我們最終得到一個 66 kB 大小的 PDF 文檔,可以在任何 PDF 查看器中正確打開它。在嘗試使用 TypeScript(在 VSCode 擴展中)解碼相同的 base64 編碼字符串時Buffer,即使用以下函數(shù):function decodeBase64(base64String: string): string {    const buf: Buffer = Buffer.from(base64String, "base64");    return buf.toString();}// the base64 encoded string is usually extracted from an XML file directly// for testing purposes we load that base64 encoded string from a local fileconst base64Enc: string = fs.readFileSync(".../base64Enc.txt", "ascii");const base64Decoded: string = decodeBase64(base64Enc);fs.writeFileSync(".../table.pdf", base64Decoded);我們最終得到一個 109 kB 大小的 PDF 和一個無法使用 PDF 查看器打開的文檔。對于一個簡單的 PDF,比如這個,具有像這樣的base64 編碼字符串表示,上面的代碼可以工作,并且可以在任何 PDF 查看器中閱讀 PDF。我還嘗試使用 直接讀取本地存儲的 PDF 文件的 base64 編碼表示const buffer: string | Buffer = fs.readFileSync(".../base64Enc.txt", "base64");雖然也沒有產(chǎn)生有用的東西。即使對這個建議稍作調(diào)整,由于atob(...)不存在(建議用 Buffer替換atob),最終代碼如下:const buffer: string = fs.readFileSync(".../base64Enc.txt", "ascii");// atob(...) is not present, other answers suggest to use Buffer for conversionconst binary: string = Buffer.from(buffer, 'base64').toString();const arrayBuffer: ArrayBuffer = new ArrayBuffer(binary.length);const uintArray: Uint8Array = new Uint8Array(arrayBuffer);for (let i: number = 0; i < binary.length; i++) {    uintArray[i] = binary.charCodeAt(i);}const decoded: string = Buffer.from(uintArray.buffer).toString();fs.writeFileSync(".../table.pdf", decoded);我不會以可讀的 PDF 結(jié)尾。“解碼”table.pdf樣本最終大小為 109 kB。我在這里做錯了什么?如何解碼 table.pdf 示例等 PDF 以獲得可讀的 PDF 文檔,類似于 Notepad++ 提供的功能?
查看完整描述

1 回答

?
守著星空守著你

TA貢獻(xiàn)1799條經(jīng)驗 獲得超8個贊

如果您Uint8ArrayBuffer使用Uint8Array構(gòu)造函數(shù)中獲得權(quán)利:

const?buffer:?string?=?fs.readFileSync(".../base64Enc.txt",?"ascii");const?uintArray:?Uint8Array?=?new?Uint8Array(Buffer.from(buffer,?'base64'));
fs.writeFileSync(".../table.pdf",?uintArray);

Uint8Array直接寫入文件可確保不會因進(jìn)出字符串的編碼更改而損壞。

請注意:Uint8Array指向與Buffer.?在這種情況下并不重要,因為這段代碼不引用Buffer構(gòu)造函數(shù)的外部,但萬一有人決定為 的輸出創(chuàng)建一個新變量Buffer.from(buffer, 'base64')


查看完整回答
反對 回復(fù) 2023-04-01
  • 1 回答
  • 0 關(guān)注
  • 247 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號