Forum Discussion

analyst85's avatar
analyst85
Icon for Helper I rankHelper I
1 month ago

Custom visuals - pdf export

Hello, we recently created custom visuals that we've made available in our organisational visuals section. The problem we have is that they do not appear when exporting published reports to pdf, is this  because visuals are required to be certified by Microsoft?

We only want these visuals to be internal and not made available externally, and I understand that certification means publishing them to the Appsource and removing them from Organisational visuals, which wouldn't work for us.

Any advice would be appreciated.

2 Replies

  • Yes — that's exactly the cause, not a bug you're hitting. Power BI's PDF and PowerPoint export skip any custom visual that isn't Microsoft-certified; uncertified visuals render fine in the browser/Desktop canvas but come out as blank space in the exported file. This has been a hard requirement for years, independent of whether the visual comes from AppSource or from your organisational visuals gallery.

    The good news is that certification and public AppSource listing are two separate things. Microsoft's certification process (the same GitHub-based review pipeline used for AppSource visuals) can be completed and the resulting visual published as unlisted/private in AppSource — it doesn't have to show up in public marketplace search to satisfy the certification requirement, it just has to have gone through the review and be available for your tenant admin to add to the organisational visuals gallery.

    One caveat: exactly how 'unlisted' publishing is configured in Partner Center has shifted a few times, so it's worth confirming the current option with Microsoft's certification docs or your partner rep before committing engineering time — the mechanics of that step aren't something I'd want you to take purely on my word.

    If certification turns out to be too heavy for an internal-only visual, the practical workaround most teams land on is keeping a separate 'export-friendly' version of the report page built from native visuals for anyone who needs a PDF, while the richer custom-visual page stays for in-Service viewing.

  • jubinsoni's avatar
    jubinsoni
    Icon for Continued Contributor rankContinued Contributor

    Hi analyst85​,

    One workaround that keeps everything internal: rebuild the visuals on top of a visual that is already certified and acts as a rendering engine, such as Deneb (Vega / Vega-Lite). Your design lives in the JSON spec inside your report, so nothing has to be published to AppSource, and because the host visual is certified it can render in PDF / PowerPoint export.

    A minimal Deneb (Vega-Lite) spec to show the idea:

    {
      "data": { "name": "dataset" },
      "mark": { "type": "bar", "tooltip": true },
      "encoding": {
        "y": { "field": "Region", "type": "nominal", "sort": "-x" },
        "x": { "field": "Sales", "type": "quantitative" },
        "color": {
          "condition": { "test": "datum['Sales'] < 0", "value": "#D62728" },
          "value": "#1F77B4"
        }
      }
    }

    Trade-offs to weigh: your team needs to be comfortable with Vega-Lite, very interactive SDK features may not translate one-to-one, and you should check export output for each visual since complex specs and large datasets can still behave differently in export. Also confirm your tenant allows Deneb (admins sometimes restrict AppSource visuals).

    If a visual cannot be rebuilt that way, the other option is a "print" page that swaps it for core visuals (table, matrix, bar) only for the exported version, with bookmarks or a separate page used by the subscription / export.

    So my overall approach would be:

    List which org visuals must appear in PDF
    -> Rebuild those in Deneb (certified host, spec stays in the report)
    -> Test export of each page
    -> Anything that cannot be rebuilt: export-only page with core visuals

    AI-assisted drafting: AI was used to help structure and phrase this response. I reviewed and validated the technical content before posting.