Cómo utilizar las URL base y la codificación de activos

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

IronPDF es una herramienta útil para generar documentos PDF en proyectos .NET.

Un uso habitual de esta biblioteca es la conversión de "HTML a PDF", en la que se utiliza HTML como lenguaje de diseño para convertir un documento PDF. Una pregunta lógica es: ¿Cómo podemos utilizar hojas de estilo CSS y archivos de imagen en nuestra conversión de HTML a PDF?


Biblioteca NuGet C# para PDF

Instalar con NuGet

Install-Package IronPdf
o
Java PDF JAR

Descargar DLL

Descargar DLL

Instalar manualmente en su proyecto

## Renderización de un PDF a partir de una cadena HTML con activos de imagen y CSS Al trabajar con la conversión de cadenas HTML a PDF, es importante establecer un parámetro **BaseUrlOrPath** para activos como CSS, archivos JavaScript e imágenes. BaseUrlOrPath especifica la URL base desde la que se cargarán todos los activos relativos. Puede ser una URL web que empiece por 'http' para cargar activos remotos o una ruta de archivo local para acceder a activos en su disco. Establecer correctamente la BaseUrlOrPath garantiza que los activos se carguen correctamente durante el proceso de conversión. ```cs :path=/static-assets/pdf/content-code-examples/how-to/base-urls-baseurl.cs ``` ### Aplicación MVC En una aplicación MVC, especificar la ruta de archivo de una imagen puede resultar complicado. Para garantizar que IronPDF pueda encontrar la imagen y mostrarla correctamente en el sitio web, es necesario configurar correctamente el atributo **baseUrl** de IronPDF y **src=""** en la cadena HTML. Con la jerarquía de archivos que se muestra a continuación - baseUrlOrPath a @"wwwroot/image" - atributo src a "../image/Sample.jpg" ```txt wwwroot └── image ├── Sample.jpg └── Sample.png ``` **Por ejemplo ```cs :path=/static-assets/pdf/content-code-examples/how-to/base-mvc.cs ``` ```html ```
Antes de proceder
#### Formatos de ruta de archivos que no funcionan Los siguientes formatos funcionan bien cuando se visualizan en el navegador Chrome, pero apuntan al directorio de carpetas incorrecto cuando se utilizan en una aplicación MVC. Estos formatos siguen funcionando con IronPDF si se proporciona baseUrlOrPath en el método RenderHtmlAsPdf: ```html ``` Por otro lado, estos formatos funcionan bien con la aplicación MVC, pero cuando se trata de la ruta del archivo, estos formatos no funcionan bien en IronPDF: ```html ```
## Encabezados y pies de página HTML con imágenes y recursos Cuando renderizamos encabezados y pies de página HTML en un PDF nuevo o existente, se tratan como documentos HTML independientes y no heredan la URL base del propio PDF. Debemos establecer una BaseURL desde la que se puedan cargar los activos: ```cs :path=/static-assets/pdf/content-code-examples/how-to/base-header-footer.cs ``` ## Archivo HTML a PDF con CSS, JS y Activos de Imagen Al convertir un archivo HTML a PDF, todos los activos se considerarán locales a ese archivo. ```cs :path=/static-assets/pdf/content-code-examples/how-to/base-html-file.cs ``` En el ejemplo anterior, todos los archivos JS, CSS y de imagen se cargarán desde la carpeta C:\\Assets del disco - el mismo directorio en el que se encuentra el archivo HTML. Para mayor comodidad, puede utilizar [ChromePdfRenderOptions.CustomCssUrl](/object-reference/api/IronPdf.ChromePdfRenderOptions.html#IronPdf_ChromePdfRenderOptions_CustomCssUrl) para especificar una hoja de estilos adicional que sólo se utilice para la representación de PDF en .NET, si así lo desea. Por ejemplo ```cs :path=/static-assets/pdf/content-code-examples/how-to/base-html-file-baseurl.cs ```
Atención
Actualmente, la propiedad ChromePdfRenderOptions.CustomCssUrl sólo funciona al renderizar desde una cadena HTML a un documento PDF mediante el método RenderHtmlAsPdf.
## Codificación de activos de imagen Los activos de imagen pueden codificarse directamente en el archivo o cadena HTML, lo que puede ayudar a evitar algunos de los frustrantes problemas de las imágenes que no se encuentran. Para ello podemos recurrir al uso de base64: 1. En primer lugar, se obtienen los datos binarios de la imagen, ya sea leyendo el archivo de imagen o recibiéndolo a través de una petición de red. 2. Utilice el método `Convert.ToBase64String` de Microsoft .NET para convertir los datos binarios a base64. 3. Construya la etiqueta de imagen en HTML utilizando "data:image/svg+xml;base64," antes de los datos base64. Habrá notado que el tipo de imagen se especifica antes que los datos base64. Visite el [Documentos web MDN](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types) para obtener más información sobre los tipos de formato de imagen. ```cs :path=/static-assets/pdf/content-code-examples/how-to/add-images-to-pdfs-base64-image.cs ```