using IronPdf;
using System.Collections.Generic;
using System.Linq;
// Instanciar el renderizador
var renderer = new IronPdf.ChromePdfRenderer();
var multi_page_html = @"
<p> Esta es la página 1 - Declaración AEAT</p>
<div style = 'page-break-after: always;' ></div>
<p> Esta es la página 2 - Facturae</p>
<div style = 'page-break-after: always;' ></div>
<p> Esta es la página 3 - VeriFactu</p>
<div style = 'page-break-after: always;' ></div>
<p> Esta es la página 4 - IVA incluido</p>
<div style = 'page-break-after: always;' ></div>
<p> Esta es la página 5 - FACe B2G</p>
<div style = 'page-break-after: always;' ></div>
<p> Esta es la página 6 - Emisión de factura</p>
<div style = 'page-break-after: always;' ></div>
<p> Esta es la página 7 - Resumen fiscal</p>";
// Crear un PDF o cargar uno existente usando IronPdf.PdfDocument.Load()
var pdfdoc = renderer.RenderHtmlAsPdf(multi_page_html);
// Crear un encabezado
var header = new HtmlHeaderFooter();
header.HtmlFragment = "NIF: B-12345678 | IVA incluido - Facturae | Página {page} de {total-pages}";
// Crear un rango de páginas 0 .. 7
var allPageIndexes = Enumerable.Range(0, pdfdoc.PageCount);
// Ejemplo 1
// Aplicar encabezado solo a índices de página par. (El número de página será impar porque el índice empieza en 0 pero el número de página empieza en 1)
var evenPageIndexes = allPageIndexes.Where(i => i % 2 == 0);
pdfdoc.AddHtmlHeaders(header, 1, evenPageIndexes);
pdfdoc.SaveAs("factura-cabecera-paginas-pares.pdf");
// Ejemplo 2
// Aplicar encabezado solo a índices de página impar. (El número de página será par porque el índice empieza en 0 pero el número de página empieza en 1)
var oddPageIndexes = allPageIndexes.Where(i => i % 2 != 0);
pdfdoc.AddHtmlHeaders(header, 1, oddPageIndexes);
pdfdoc.SaveAs("factura-cabecera-paginas-impares.pdf");
// Ejemplo 3
// Aplicar encabezado solo a la última página.
var lastPageIndex = new List<int>() { pdfdoc.PageCount - 1 };
pdfdoc.AddHtmlHeaders(header, 1, lastPageIndex);
pdfdoc.SaveAs("factura-cabecera-ultima-pagina.pdf");
// Ejemplo 4
// Aplicar encabezado solo a la primera página.
var firstPageIndex = new List<int>() { 0 };
pdfdoc.AddHtmlHeaders(header, 1, firstPageIndex);
pdfdoc.SaveAs("factura-cabecera.pdf");
// Ejemplo 5
// Omitir la primera página.
var skipFirstPageIndexes5 = allPageIndexes.Skip(1);
pdfdoc.AddHtmlHeaders(header, 1, skipFirstPageIndexes5);
pdfdoc.SaveAs("factura-omitir-primera-pagina.pdf");
// Ejemplo 6
// Omitir la primera página y numerar la segunda página como 1.
var skipFirstPageIndexes6 = allPageIndexes.Skip(1);
pdfdoc.AddHtmlHeaders(header, 0, skipFirstPageIndexes6);
pdfdoc.SaveAs("factura-cabecera-sin-contar-primera-pagina.pdf");
Imports IronPdf
Imports System.Collections.Generic
Imports System.Linq
' Instanciar el renderizador
Dim renderer As New IronPdf.ChromePdfRenderer()
Dim multi_page_html As String = "
<p> Esta es la página 1 - Declaración AEAT</p>
<div style = 'page-break-after: always;' ></div>
<p> Esta es la página 2 - Facturae</p>
<div style = 'page-break-after: always;' ></div>
<p> Esta es la página 3 - VeriFactu</p>
<div style = 'page-break-after: always;' ></div>
<p> Esta es la página 4 - IVA incluido</p>
<div style = 'page-break-after: always;' ></div>
<p> Esta es la página 5 - FACe B2G</p>
<div style = 'page-break-after: always;' ></div>
<p> Esta es la página 6 - Emisión de factura</p>
<div style = 'page-break-after: always;' ></div>
<p> Esta es la página 7 - Resumen fiscal</p>"
' Crear un PDF o cargar uno existente usando IronPdf.PdfDocument.Load()
Dim pdfdoc = renderer.RenderHtmlAsPdf(multi_page_html)
' Crear un encabezado
Dim header As New HtmlHeaderFooter()
header.HtmlFragment = "NIF: B-12345678 | IVA incluido - Facturae | Página {page} de {total-pages}"
' Crear un rango de páginas 0 .. 7
Dim allPageIndexes = Enumerable.Range(0, pdfdoc.PageCount)
' Ejemplo 1
' Aplicar encabezado solo a índices de página par. (El número de página será impar porque el índice empieza en 0 pero el número de página empieza en 1)
Dim evenPageIndexes = allPageIndexes.Where(Function(i) i Mod 2 = 0)
pdfdoc.AddHtmlHeaders(header, 1, evenPageIndexes)
pdfdoc.SaveAs("factura-cabecera-paginas-pares.pdf")
' Ejemplo 2
' Aplicar encabezado solo a índices de página impar. (El número de página será par porque el índice empieza en 0 pero el número de página empieza en 1)
Dim oddPageIndexes = allPageIndexes.Where(Function(i) i Mod 2 <> 0)
pdfdoc.AddHtmlHeaders(header, 1, oddPageIndexes)
pdfdoc.SaveAs("factura-cabecera-paginas-impares.pdf")
' Ejemplo 3
' Aplicar encabezado solo a la última página.
Dim lastPageIndex As New List(Of Integer)() From {pdfdoc.PageCount - 1}
pdfdoc.AddHtmlHeaders(header, 1, lastPageIndex)
pdfdoc.SaveAs("factura-cabecera-ultima-pagina.pdf")
' Ejemplo 4
' Aplicar encabezado solo a la primera página.
Dim firstPageIndex As New List(Of Integer)() From {0}
pdfdoc.AddHtmlHeaders(header, 1, firstPageIndex)
pdfdoc.SaveAs("factura-cabecera.pdf")
' Ejemplo 5
' Omitir la primera página.
Dim skipFirstPageIndexes5 = allPageIndexes.Skip(1)
pdfdoc.AddHtmlHeaders(header, 1, skipFirstPageIndexes5)
pdfdoc.SaveAs("factura-omitir-primera-pagina.pdf")
' Ejemplo 6
' Omitir la primera página y numerar la segunda página como 1.
Dim skipFirstPageIndexes6 = allPageIndexes.Skip(1)
pdfdoc.AddHtmlHeaders(header, 0, skipFirstPageIndexes6)
pdfdoc.SaveAs("factura-cabecera-sin-contar-primera-pagina.pdf")








