Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Log4TurtleShell
Frequent Visitor

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?

6 REPLIES 6
klirium
New Member

@Log4TurtleShell @ozpbi123 

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();
        }
    }

}

 

 

 

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

v-yiruan-msft
Community Support
Community Support

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

Community Support Team _ Rena
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

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?

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.

Unfortunately, I did not. 😞

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.