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

Announcements

No record found.

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,788 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
    98,128 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
    98,128 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,216 Super User 2026 Season 1 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

Introducing the 2026 Season 1 community Super Users

Congratulations to our 2026 Super Stars!

Congratulations to our 2025 Community Spotlights

Thanks to all of our 2025 Community Spotlight stars!

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

#1
OussamaSabbouh Profile Picture

OussamaSabbouh 2,033 Super User 2026 Season 1

#2
Dhiren Nagar Profile Picture

Dhiren Nagar 1,105 Super User 2026 Season 1

#3
YUN ZHU Profile Picture

YUN ZHU 1,035 Super User 2026 Season 1

Last 30 days Overall leaderboard

Featured topics

Product updates

Dynamics 365 release plans