Como incorporar imagens com URIs de dados em C# | IronPDF

Incorporar imagens com DataURIs em C# e VB para renderização de PDF

This article was translated from English: Does it need improvement?
Translated
View the article in English

Incorpore imagens diretamente em documentos PDF usando DataURIs em C# e VB.NET com IronPDF, eliminando dependências de arquivos externos convertendo bytes de imagem para strings base64 e incluindo-os embutidos dentro da marcação HTML para renderização de PDF perfeita.

Ao trabalhar com strings e documentos HTML, evitar dependências em diretórios de recursos é frequentemente essencial. O esquema de URI de dados oferece uma solução eficaz.

O esquema de URI de dados incorpora dados diretamente no código HTML ou CSS, eliminando a necessidade de arquivos separados. DataURIs permite injeções de imagens, arquivos e fontes tipográficas diretamente em um documento HTML como string.

Início Rápido: Incorporar Imagens em PDFs Usando DataURIs

Transforme conteúdo HTML em documentos PDF incorporando imagens usando DataURIs com IronPDF. Este guia demonstra como renderizar PDFs com imagens incorporadas usando um código simples e eficiente. O IronPDF converte HTML em PDF, mantendo a integridade da imagem. Aqui está um exemplo simples mostrando como incorporar uma imagem diretamente em seu documento PDF usando DataURI com código mínimo.

  1. Instale IronPDF com o Gerenciador de Pacotes NuGet

    PM > Install-Package IronPdf
  2. Copie e execute este trecho de código.

    new IronPdf.ChromePdfRenderer.StaticRenderHtmlAsPdf("<img src='data:image/png;base64,...' />").SaveAs("output.pdf");
  3. Implante para testar em seu ambiente de produção.

    Comece a usar IronPDF em seu projeto hoje com uma avaliação gratuita

    arrow pointer


Como faço para incorporar imagens usando DataURIs em PDFs?

Incorporar imagens usando DataURIs inclui imagens diretamente dentro da marcação HTML sem referenciar arquivos externos. Essa abordagem funciona bem ao gerar PDFs em ambientes de nuvem, sistemas distribuídos ou quando se garante que todos os recursos sejam autossuficientes. Conversão de HTML para PDF do IronPDF suporta totalmente DataURIs, permitindo criação profissional de PDF com imagens integradas.

O processo envolve três etapas: ler os dados da imagem, convertê-los para o formato base64 e incorporá-los em uma tag img HTML. Este método funciona com vários formatos de imagem, incluindo PNG, JPEG, GIF e SVG, proporcionando flexibilidade nos fluxos de trabalho de geração de PDFs. A técnica permanece consistente, independentemente de se trabalhar com imagens do Armazenamento de Blobs do Azure ou com arquivos locais.

Exemplo básico de incorporação de imagens

Este exemplo completo demonstra como incorporar uma imagem em um PDF usando DataURIs:

:path=/static-assets/pdf/content-code-examples/how-to/datauris-image.cs
using IronPdf;
using System;

// Read byte from image file
var pngBinaryData = System.IO.File.ReadAllBytes("My_image.png");

// Convert bytes to base64
var ImgDataURI = @"data:image/png;base64," + Convert.ToBase64String(pngBinaryData);

// Import base64 to img tag
var ImgHtml = $"<img src='{ImgDataURI}'>";

ChromePdfRenderer Renderer = new ChromePdfRenderer();

// Render the HTML string
var pdf = Renderer.RenderHtmlAsPdf(ImgHtml);

pdf.SaveAs("datauri_example.pdf");
Imports IronPdf
Imports System

' Read byte from image file
Private pngBinaryData = System.IO.File.ReadAllBytes("My_image.png")

' Convert bytes to base64
Private ImgDataURI = "data:image/png;base64," & Convert.ToBase64String(pngBinaryData)

' Import base64 to img tag
Private ImgHtml = $"<img src='{ImgDataURI}'>"

Private Renderer As New ChromePdfRenderer()

' Render the HTML string
Private pdf = Renderer.RenderHtmlAsPdf(ImgHtml)

pdf.SaveAs("datauri_example.pdf")
$vbLabelText   $csharpLabel

Os desenvolvedores VB .NET podem obter a mesma funcionalidade usando a biblioteca VB .NET PDF do IronPDF:

Imports IronPdf
Imports System

' Read byte from image file
Dim pngBinaryData As Byte() = System.IO.File.ReadAllBytes("My_image.png")

' Convert bytes to base64
Dim ImgDataURI As String = "data:image/png;base64," & Convert.ToBase64String(pngBinaryData)

' Import base64 to img tag
Dim ImgHtml As String = $"<img src='{ImgDataURI}'>"

Dim Renderer As New ChromePdfRenderer()

' Render the HTML string
Dim pdf = Renderer.RenderHtmlAsPdf(ImgHtml)

pdf.SaveAs("datauri_example.pdf")
Imports IronPdf
Imports System

' Read byte from image file
Dim pngBinaryData As Byte() = System.IO.File.ReadAllBytes("My_image.png")

' Convert bytes to base64
Dim ImgDataURI As String = "data:image/png;base64," & Convert.ToBase64String(pngBinaryData)

' Import base64 to img tag
Dim ImgHtml As String = $"<img src='{ImgDataURI}'>"

Dim Renderer As New ChromePdfRenderer()

' Render the HTML string
Dim pdf = Renderer.RenderHtmlAsPdf(ImgHtml)

pdf.SaveAs("datauri_example.pdf")
VB .NET

Por que devo usar DataURIs em vez de referências de arquivo?

DataURIs oferece várias vantagens sobre referências de arquivos tradicionais ao gerar PDFs. Em primeiro lugar, eliminam a dependência de arquivos externos, tornando a geração de PDFs mais confiável e portátil. Isso é crucial em ambientes de nuvem como Azure ou AWS Lambda , onde o acesso ao sistema de arquivos pode ser limitado ou sensível ao desempenho.

Em segundo lugar, DataURIs garante que os PDFs sejam completamente autossuficientes. Ao compartilhar ou distribuir PDFs gerados, links de imagens quebrados ou recursos ausentes não são uma preocupação. Isso torna DataURIs ideal para gerar relatórios, faturas ou documentos que requeiram arquivamento ou distribuição por e-mail.

Em terceiro lugar, DataURIs pode melhorar o desempenho em certos cenários. Como os dados da imagem são incorporados diretamente no HTML, nenhuma solicitação HTTP adicional ou operação no sistema de arquivos ocorre durante a renderização. Isso resulta em uma geração de PDFs mais rápida, especialmente ao lidar com várias imagens pequenas.

Quais formatos de imagem são suportados?

IronPDF suporta todos os principais formatos de imagem através de DataURIs, proporcionando flexibilidade em fluxos de trabalho de geração de PDF:

  • PNG : Ideal para imagens com transparência ou gráficos com bordas nítidas. Use data:image/png;base64,
  • JPEG : Ideal para fotografias e imagens complexas com muitas cores. Use data:image/jpeg;base64,
  • GIF : Adequado para animações simples ou imagens com cores limitadas. Use data:image/gif;base64,
  • SVG : Perfeito para gráficos vetoriais escaláveis. Use data:image/svg+xml;base64,
  • WebP : Formato moderno com excelente compressão. Use data:image/webp;base64,

O exemplo a seguir mostra como lidar com diferentes formatos de imagem:

using IronPdf;
using System;
using System.IO;

public class MultiFormatImageEmbedding
{
    public static void EmbedVariousImageFormats()
    {
        var renderer = new ChromePdfRenderer();

        // Function to create DataURI from image file
        string CreateDataUri(string filePath, string mimeType)
        {
            var imageBytes = File.ReadAllBytes(filePath);
            return $"data:{mimeType};base64,{Convert.ToBase64String(imageBytes)}";
        }

        // Create HTML with multiple image formats
        var html = $@"
        <html>
        <body>
            <h1>Multi-Format Image Test</h1>
            <img src='{CreateDataUri("logo.png", "image/png")}' alt='PNG Logo' />
            <img src='{CreateDataUri("photo.jpg", "image/jpeg")}' alt='JPEG Photo' />
            <img src='{CreateDataUri("icon.svg", "image/svg+xml")}' alt='SVG Icon' />
        </body>
        </html>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("multi_format_images.pdf");
    }
}
using IronPdf;
using System;
using System.IO;

public class MultiFormatImageEmbedding
{
    public static void EmbedVariousImageFormats()
    {
        var renderer = new ChromePdfRenderer();

        // Function to create DataURI from image file
        string CreateDataUri(string filePath, string mimeType)
        {
            var imageBytes = File.ReadAllBytes(filePath);
            return $"data:{mimeType};base64,{Convert.ToBase64String(imageBytes)}";
        }

        // Create HTML with multiple image formats
        var html = $@"
        <html>
        <body>
            <h1>Multi-Format Image Test</h1>
            <img src='{CreateDataUri("logo.png", "image/png")}' alt='PNG Logo' />
            <img src='{CreateDataUri("photo.jpg", "image/jpeg")}' alt='JPEG Photo' />
            <img src='{CreateDataUri("icon.svg", "image/svg+xml")}' alt='SVG Icon' />
        </body>
        </html>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("multi_format_images.pdf");
    }
}
Imports IronPdf
Imports System
Imports System.IO

Public Class MultiFormatImageEmbedding
    Public Shared Sub EmbedVariousImageFormats()
        Dim renderer As New ChromePdfRenderer()

        ' Function to create DataURI from image file
        Function CreateDataUri(filePath As String, mimeType As String) As String
            Dim imageBytes = File.ReadAllBytes(filePath)
            Return $"data:{mimeType};base64,{Convert.ToBase64String(imageBytes)}"
        End Function

        ' Create HTML with multiple image formats
        Dim html = $"
        <html>
        <body>
            <h1>Multi-Format Image Test</h1>
            <img src='{CreateDataUri("logo.png", "image/png")}' alt='PNG Logo' />
            <img src='{CreateDataUri("photo.jpg", "image/jpeg")}' alt='JPEG Photo' />
            <img src='{CreateDataUri("icon.svg", "image/svg+xml")}' alt='SVG Icon' />
        </body>
        </html>"

        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("multi_format_images.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Para manipulação avançada de imagens, incluindo a adição de imagens a PDFs existentes , o IronPDF oferece suporte completo.

Como a codificação Base64 afeta o tamanho do arquivo?

A codificação Base64 aumenta o tamanho dos dados em aproximadamente 33%. O Base64 representa dados binários usando apenas 64 caracteres ASCII, exigindo 4 caracteres para representar cada 3 bytes de dados originais. Embora isso aumente o tamanho total, o impacto na geração de PDFs costuma ser mínimo em comparação com os benefícios de documentos autossuficientes.

Otimize o tamanho dos arquivos ao usar DataURIs seguindo estas práticas:

  1. Comprimir imagens antes de codificar: Use ferramentas ou bibliotecas para otimizar arquivos de imagem antes de converter para base64
  2. Escolher formatos apropriados: Use JPEG para fotos, PNG para gráficos com transparência
  3. Redimensionar imagens apropriadamente: Não incorpore imagens maiores do que o necessário para a saída de PDF
  4. Considere a compressão de PDF : Utilize os recursos de compressão do IronPDF após a geração.

Este exemplo demonstra a otimização de imagens antes da incorporação:

using IronPdf;
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;

public class OptimizedImageEmbedding
{
    public static void EmbedOptimizedImage(string imagePath, int maxWidth = 800)
    {
        // Load and resize image if necessary
        using (var originalImage = Image.FromFile(imagePath))
        {
            var resizedImage = originalImage;

            if (originalImage.Width > maxWidth)
            {
                var ratio = (double)maxWidth / originalImage.Width;
                var newHeight = (int)(originalImage.Height * ratio);
                resizedImage = new Bitmap(originalImage, maxWidth, newHeight);
            }

            // Convert to optimized JPEG
            using (var ms = new MemoryStream())
            {
                var encoder = ImageCodecInfo.GetImageEncoders()
                    .First(c => c.FormatID == ImageFormat.Jpeg.Guid);
                var encoderParams = new EncoderParameters(1);
                encoderParams.Param[0] = new EncoderParameter(
                    System.Drawing.Imaging.Encoder.Quality, 85L);

                resizedImage.Save(ms, encoder, encoderParams);
                var imageBytes = ms.ToArray();

                // Create DataURI
                var dataUri = $"data:image/jpeg;base64,{Convert.ToBase64String(imageBytes)}";

                // Generate PDF
                var html = $@"
                <html>
                <body>
                    <h1>Optimized Image Example</h1>
                    <img src='{dataUri}' style='max-width: 100%;' />
                </body>
                </html>";

                var renderer = new ChromePdfRenderer();
                var pdf = renderer.RenderHtmlAsPdf(html);
                pdf.SaveAs("optimized_image.pdf");
            }

            if (resizedImage != originalImage)
                resizedImage.Dispose();
        }
    }
}
using IronPdf;
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;

public class OptimizedImageEmbedding
{
    public static void EmbedOptimizedImage(string imagePath, int maxWidth = 800)
    {
        // Load and resize image if necessary
        using (var originalImage = Image.FromFile(imagePath))
        {
            var resizedImage = originalImage;

            if (originalImage.Width > maxWidth)
            {
                var ratio = (double)maxWidth / originalImage.Width;
                var newHeight = (int)(originalImage.Height * ratio);
                resizedImage = new Bitmap(originalImage, maxWidth, newHeight);
            }

            // Convert to optimized JPEG
            using (var ms = new MemoryStream())
            {
                var encoder = ImageCodecInfo.GetImageEncoders()
                    .First(c => c.FormatID == ImageFormat.Jpeg.Guid);
                var encoderParams = new EncoderParameters(1);
                encoderParams.Param[0] = new EncoderParameter(
                    System.Drawing.Imaging.Encoder.Quality, 85L);

                resizedImage.Save(ms, encoder, encoderParams);
                var imageBytes = ms.ToArray();

                // Create DataURI
                var dataUri = $"data:image/jpeg;base64,{Convert.ToBase64String(imageBytes)}";

                // Generate PDF
                var html = $@"
                <html>
                <body>
                    <h1>Optimized Image Example</h1>
                    <img src='{dataUri}' style='max-width: 100%;' />
                </body>
                </html>";

                var renderer = new ChromePdfRenderer();
                var pdf = renderer.RenderHtmlAsPdf(html);
                pdf.SaveAs("optimized_image.pdf");
            }

            if (resizedImage != originalImage)
                resizedImage.Dispose();
        }
    }
}
Imports IronPdf
Imports System
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.IO

Public Class OptimizedImageEmbedding
    Public Shared Sub EmbedOptimizedImage(imagePath As String, Optional maxWidth As Integer = 800)
        ' Load and resize image if necessary
        Using originalImage As Image = Image.FromFile(imagePath)
            Dim resizedImage As Image = originalImage

            If originalImage.Width > maxWidth Then
                Dim ratio As Double = CDbl(maxWidth) / originalImage.Width
                Dim newHeight As Integer = CInt(originalImage.Height * ratio)
                resizedImage = New Bitmap(originalImage, maxWidth, newHeight)
            End If

            ' Convert to optimized JPEG
            Using ms As New MemoryStream()
                Dim encoder As ImageCodecInfo = ImageCodecInfo.GetImageEncoders().First(Function(c) c.FormatID = ImageFormat.Jpeg.Guid)
                Dim encoderParams As New EncoderParameters(1)
                encoderParams.Param(0) = New EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 85L)

                resizedImage.Save(ms, encoder, encoderParams)
                Dim imageBytes As Byte() = ms.ToArray()

                ' Create DataURI
                Dim dataUri As String = $"data:image/jpeg;base64,{Convert.ToBase64String(imageBytes)}"

                ' Generate PDF
                Dim html As String = $"
                <html>
                <body>
                    <h1>Optimized Image Example</h1>
                    <img src='{dataUri}' style='max-width: 100%;' />
                </body>
                </html>"

                Dim renderer As New ChromePdfRenderer()
                Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)
                pdf.SaveAs("optimized_image.pdf")
            End Using

            If resizedImage IsNot originalImage Then
                resizedImage.Dispose()
            End If
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel
Icon Quote related to Como a codificação Base64 afeta o tamanho do arquivo?

Minha biblioteca favorita desse tipo é o IronPDF. Ele permite a manipulação rápida e eficiente de arquivos PDF. Além disso, possui muitos recursos valiosos, como a exportação para o formato PDF/A e a assinatura digital de documentos PDF.

Milan Jovanovic related to Como a codificação Base64 afeta o tamanho do arquivo?

Milan Jovanovic

Microsoft MVP

Veja o estudo de caso
Icon Quote related to Como a codificação Base64 afeta o tamanho do arquivo?

Com o IronOCR, podemos economizar US$ 40.000 por ano em processamento manual, ao mesmo tempo que aumentamos a produtividade e liberamos recursos para tarefas de alto impacto. Eu o recomendo fortemente.

Brent Matzelle related to Como a codificação Base64 afeta o tamanho do arquivo?

Brent Matzelle

Diretor de Tecnologia, OPYN

Veja o estudo de caso
Icon Quote related to Como a codificação Base64 afeta o tamanho do arquivo?

O IronSuite desempenha um papel crucial nas nossas operações. Estas são ferramentas que aumentam a eficiência no negócio, incluindo a criação de plantas baixas e melhoria na gestão de inventário.

David Jones related to Como a codificação Base64 afeta o tamanho do arquivo?

David Jones

Engenheiro(a) de Software Líder, Agorus Build

Veja o estudo de caso

Técnicas avançadas e melhores práticas

Ao trabalhar com DataURIs em ambientes de produção, implemente mecanismos de cache para evitar codificar repetidamente as mesmas imagens. Isso é particularmente importante ao gerar vários PDFs com recursos compartilhados. Aproveite os recursos de async do IronPDF para melhor desempenho ao processar várias imagens.

Para documentos complexos com muitas imagens, use uma abordagem híbrida onde imagens críticas estão embutidas como DataURIs enquanto imagens maiores e opcionais são referenciadas externamente. Isso equilibra documentos autossuficientes com tamanhos de arquivo razoáveis.

Você também pode fornecer uma string HTML inteira ou um documento PDF como uma matriz de bytes usando a integração ASP.NET MVC do IronPDF. Essa técnica funciona bem na criação de aplicações web que geram e disponibilizam PDFs dinamicamente.

Para técnicas avançadas de manipulação de PDF, incluindo marcas d'água, assinaturas digitais e criação de formulários, o IronPDF oferece documentação completa e exemplos para criar soluções robustas em PDF.


Use a diretiva using IronPdf para incluir o namespace IronPdf em seus projetos C# ou VB.NET.

O método AddBookmarkAtEnd é usado para anexar novos marcadores ao esquema do PDF.

Perguntas frequentes

O que são DataURIs e por que usá-los para geração de PDFs?

DataURIs são um esquema que incorpora dados diretamente no código HTML ou CSS como strings codificadas em base64, eliminando a necessidade de arquivos de imagem separados. O IronPDF oferece suporte completo a DataURIs, tornando-os ideais para ambientes em nuvem, sistemas distribuídos ou quando você precisa de PDFs autocontidos sem dependências de arquivos externos.

Como faço para converter uma imagem para o formato DataURI para incorporá-la em um PDF?

Com o IronPDF, a conversão de uma imagem para DataURI envolve três etapas: Primeiro, leia os bytes da imagem usando System.IO.File.ReadAllBytes(). Segundo, converta os bytes para base64 usando Convert.ToBase64String(). Finalmente, incorpore a string base64 em uma tag HTML img com o formato 'data:image/png;base64,[base64string]'.

Quais formatos de imagem são suportados ao incorporar imagens como DataURIs?

O IronPDF suporta a incorporação de vários formatos de imagem como DataURIs, incluindo PNG, JPEG, GIF e SVG. Essa flexibilidade permite que você trabalhe com diferentes tipos de imagem, mantendo o controle total sobre o fluxo de trabalho de geração de PDFs.

Posso incorporar várias imagens usando DataURIs em um único PDF?

Sim, o IronPDF permite incorporar várias imagens usando DataURIs em um único documento PDF. Basta converter cada imagem para sua representação em base64 e incluí-las na sua marcação HTML antes de renderizar com o ChromePdfRenderer do IronPDF.

Existe algum impacto no desempenho ao usar DataURIs em vez de referências de arquivo?

Embora os DataURIs aumentem o tamanho da string HTML devido à codificação base64, o IronPDF lida com a conversão de forma eficiente. Essa compensação vale a pena quando você precisa de PDFs autossuficientes, sem dependências externas, especialmente em ambientes de nuvem ou distribuídos.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais
Pronto para começar?
Nuget Downloads 19,936,792 | Versão: 2026.7 recém-lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronPdf
executar um exemplo Veja seu HTML se transformar em um PDF.