Skip to content

Instantly share code, notes, and snippets.

@borismus
Created June 18, 2011 02:46
Show Gist options
  • Save borismus/1032746 to your computer and use it in GitHub Desktop.
Save borismus/1032746 to your computer and use it in GitHub Desktop.
Convert a base64 string into a binary Uint8 Array
var BASE64_MARKER = ';base64,';
function convertDataURIToBinary(dataURI) {
var base64Index = dataURI.indexOf(BASE64_MARKER) + BASE64_MARKER.length;
var base64 = dataURI.substring(base64Index);
var raw = window.atob(base64);
var rawLength = raw.length;
var array = new Uint8Array(new ArrayBuffer(rawLength));
for(i = 0; i < rawLength; i++) {
array[i] = raw.charCodeAt(i);
}
return array;
}
@CristianCuartas
Copy link

Hello, I hope you are well.
Could someone help me with the implementation in React JS?

As I understand it:
1.) They convert the file to base 64.
2.) They use the function convertDataURIToBinary passing as parameter the base 64 returning an array
3.) The return array is passed as a parameter to PDFJS.getDocument(array)

My question is, where do you call PDFJS.getDocument(array) to display the pdf in the library?
I'm just a little lost in the implementation if someone could clarify it for me a little bit I would appreciate it, thanks.

@zenlord
Copy link

zenlord commented Dec 8, 2020

Thank you, @borismus!

@gorankarlic
Copy link

One liner to convert Base64 to Uint8Array:

function Uint8ArrayFromBase64(base64)
{
    return Uint8Array.from(window.atob(base64), (v) => v.charCodeAt(0));
}

One liner to convert Base64Url to Uint8Array:

function Uint8ArrayFromBase64Url(base64Url)
{
    return Uint8Array.from(window.atob(base64Url.replace(/-/g, "+").replace(/_/g, "/")), (v) => v.charCodeAt(0));
}

@jiunyuchen
Copy link

jiunyuchen commented Dec 17, 2020

ERROR: Uncaught DOMException: Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded
I am running it with typescript react. Any idea?

@crhenrici
Copy link

Thanks for this! The only solution that worked for me @borismus

@gopikasireddy202
Copy link

How to convert this recordfile:///var/mobile/Containers/Data/Application/9C0F0870-EA7F-4CD2-9C42-30A3E9862012/Library/Caches/hello.m4a into binary format.

@TrungJamin
Copy link

Thank you so much sir, very respects <3

@anggaputra
Copy link

Thank you very much for this, after a week of pulling my hair out. This is the only solution that works for me.

@andreapanico10
Copy link

Thank you very much, you save my work

@mpeng
Copy link

mpeng commented Jul 20, 2021

Thank you, good work !

@marcelo-oliveira-agamenon

Thank you man! you save my day!

@jefaokpta
Copy link

Thanks buddy, save my day!

@av01d
Copy link

av01d commented Jan 20, 2022

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment