web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

News and Announcements icon
Community site session details

Community site session details

Session Id :
Small and medium business | Business Central, N...
Answered

How to run a report and convert it to Base64 string.

(1) ShareShare
ReportReport
Posted on by 163
Hi  All,

We are working on on-prem Business Central , i want to create pdf of sales order using AL code. Actually i want to run my sales order report in al code then i want to convert it on base64 so after that i can send this base64 string to API.

Does anyone have any idea about this, how we can do this.
 
Thanks for Help.
I have the same question (0)
  • Suggested answer
    Nitin Verma Profile Picture
    21,812 Moderator on at
    Hi,
    You can try as below
     
    var
            TempBlob: Codeunit "Temp Blob";
            ReportInStream: InStream;
            ReportOutStream: OutStream;
    Base64Convert: Codeunit "Base64 Convert"; TempBlob.CreateOutStream(ReportOutStream); Report.SaveAs(ReportID, '', ReportFormat::Html, ReportOutStream, RecordRef); TempBlob.CreateInStream(ReportInStream); ReportInStream.ReadText(BodyText);
    ​​​​​​​Base64Convert.ToBase64(BodyText);


  • Verified answer
    Sami Ullah Profile Picture
    315 Moderator on at
    Hi,
    Please try this code.
     
    var
        ReportSelections: Record "Report Selections"; 
        TempReportSelections: Record "Report Selections" temporary; 
        TempBlob: Codeunit "Temp Blob"; 
        Base64Convert: Codeunit "Base64 Convert"; 
        outStreamReport: OutStream; 
        inStreamReport: InStream; 
        ReportUsage: Enum "Report Selection Usage"; 
        DocumentPrint: Codeunit "Document-Print"; 
        SourceRecordRef: RecordRef; 
        SalesHeader: Record "Sales Header"; 
        DocumentBase64: Text; 
    begin
        // If you already have a RecordRef, you can skip the next four lines.
        if not SalesHeader.FindFirst() then 
            // For testing purposes, retrieving the first record of the Sales Header.
            // In your real scenario, replace this with the necessary conditions.
            exit; 
    
        SalesHeader.SetRecFilter(); 
        // Set the filter on SalesHeader to be used for the RecordRef.
    
        SourceRecordRef.GetTable(SalesHeader); 
        // Assign the SalesHeader record to the SourceRecordRef.
    
        ReportUsage := DocumentPrint.GetSalesDocTypeUsage(SalesHeader); 
        // Determine the report usage based on the document type of the Sales Header.
    
        ReportSelections.FindReportUsageForCust(ReportUsage, SalesHeader."No.", TempReportSelections); 
        // Find the appropriate report selection for the customer based on the report usage and Sales Header number.
        // Store the result in a temporary Report Selections record (TempReportSelections).
    
        TempBlob.CreateOutStream(outStreamReport); 
        // Create an output stream in the TempBlob to store the generated report.
    
        ReportSelections.SaveReportAsPDFInTempBlob(
            TempBlob, TempReportSelections."Report ID", 
            SourceRecordRef, TempReportSelections."Custom Report Layout Code", ReportUsage
        ); 
        // Save the selected report as a PDF into TempBlob using the specified report ID, 
        // custom report layout, and report usage.
    
        TempBlob.CreateInStream(inStreamReport); 
        // Create an input stream from the TempBlob to read the PDF report data.
    
        DocumentBase64 := Base64Convert.ToBase64(inStreamReport, false);
        // Convert the report data from the input stream to a Base64-encoded string 
        // and assign it to the DocumentBase64 variable.
    end;
    
     
  • Suggested answer
    YUN ZHU Profile Picture
    102,123 Super User 2026 Season 1 on at
    Hi, hope the following helps as well.
    Dynamics 365 Business Central: How to import/create item picture from encoded text (Base64 String)
    Dynamics 365 Business Central: How to convert Image (item picture) to encoded text (Base64 String) via AL
     
    Thanks.
    ZHU
  • Suggested answer
    Nyakinyua Profile Picture
    55 on at
    Var
    VarTempBlob: Codeunit "Temp Blob";
    IStream: InStream;
    B64: Codeunit Base64; 
    FileManagement: Codeunit "File Management";
    EncryptedFileName: Text;
                        
    if not FileManagement.ServerFileExists(EncryptedFileName) then
        Error('The file %1 does not exist.', EncryptedFileName);
     
    // Create an InStream from the file
    FileManagement.BLOBImportFromServerFile(VarTempBlob, EncryptedFileName);
     
    // Get the InStream from the TempBlob
    VarTempBlob.CreateInStream(IStream);
     
    // Convert the InStream to Base64
    Base64 := B64.StreamToBase64String(IStream);
  • Suggested answer
    YUN ZHU Profile Picture
    102,123 Super User 2026 Season 1 on at
    Update: Dynamics 365 Business Central: How to save a report as encoded text (Base64 String) via AL
     
    Thanks.
    ZHU
  • Vahid Ghafarpour Profile Picture
    12,266 on at
     

    ** Please don't forget to close up the thread here by Like and verify it as an answer if it is helpful **

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Season of Sharing Community Challenge Launch!

Jump in, show your community spirit, and win prizes!

Women in Power Builds Momentum

Expanding mentorship, skilling, and AI innovation

Congratulations to the May Top 10 Community Leaders

These are the community rock stars!

Leaderboard > Small and medium business | Business Central, NAV, RMS

#1
OussamaSabbouh Profile Picture

OussamaSabbouh 1,556 Super User 2026 Season 1

#2
YUN ZHU Profile Picture

YUN ZHU 1,028 Super User 2026 Season 1

#3
Grigorios Mavrogeorgis Profile Picture

Grigorios Mavrogeorgis 877 Super User 2026 Season 1

Last 30 days Overall leaderboard

Featured topics

Microsoft Training Manuals

Product updates

Dynamics 365 release plans