Forum Discussion
How to Decode a Base64 Encoded Bookmark
I am using this library, https://github.com/microsoft/PowerBI-JavaScript, to embed reports and handle bookmarks. I am calling capture() from the bookmarksManager object on my report. This returns a bookmark with the state. The state is a base64 encoded string. I am trying to decode the string for testing purposes, but I can't get it to decode correctly. I have used Mime tools in Notepad++ and various online decoders, but they all return gibberish.
Is there a trick to decoding base64 encoded bookmark states?
7 Replies
- kliriumNew Member
The state of bookmarks is gzipped, so after you decoded it from base64 you need to decompress it:
static class Program { public static void Main() { // Replace with your actual Base64-encoded and gzipped string string encodedAndGzippedString = ""; // Decode the Base64 string byte[] decodedBytes = Convert.FromBase64String(encodedAndGzippedString); // Decompress the gzipped data string decompressedString = DecompressGzip(decodedBytes); Console.WriteLine("Decompressed data:"); Console.WriteLine(decompressedString); } public static string DecompressGzip(byte[] compressedData) { using (var memoryStream = new MemoryStream(compressedData)) using (var gzipStream = new GZipStream(memoryStream, CompressionMode.Decompress)) using (var reader = new StreamReader(gzipStream, Encoding.UTF8)) { return reader.ReadToEnd(); } } }- SitiVNew Member
Great post klirium - we've been struggling with trying to find a way to interpret saved bookmarks to handle updates when a change is made to a report and then the previous saved bookmarks become partially invalid. I haven't tested your code, but I was able to verify the concept of base64 and decompress does work. This site gives a nice way to plug in individual encoded bookmarks and see the plaintext https://www.zickty.com/gziptotext
- AnonymousNot applicable
Hi Log4TurtleShell ,
Please review the following links, hope they can help you.
Base64 encoding and decoding in client-side Javascript
How do I decode a Base64 encoded string in JavaScript?
console.log(atob('TXkgU3RyaW5nIFRvIEVuY29kZQ=='));Base64 Decode a Value in Node.js
const plain = Buffer.from('dXNlcm5hbWU6cGFzc3dvcmQ=', 'base64').toString('utf8')Best Regards
- Log4TurtleShellFrequent Visitor
Thank you for your reply.
Using atob() still returns gibberish. Am I wrong that the bookmark state should be able to be decoded to readable text?
- ozpbi123Regular Visitor
Did you ever get a solution to this? I am also trying to decode the bookmark state, but unable to get anything other than gibberish as well.