Cómo establecer márgenes de papel para imprimir en C

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

Los márgenes de impresión controlan el espacio en blanco entre el contenido de tu documento y los bordes de la página física. Configurarlos correctamente es fundamental para imprimir documento con márgenes precisos, previene texto cortado, asegura diseños consistentes entre impresoras y satisface los requisitos de formato para facturas, informes y documentos legales.

La clase Margins de IronPrint acepta valores en milímetros y ofrece tres sobrecargas de constructor — uniforme, horizontal/vertical y por lado — para que podamos cumplir con cualquier requisito de diseño en una sola línea. A continuación, recorremos cada enfoque, desde la instalación hasta la impresión con márgenes personalizados.

Guía rápida: Establecer márgenes de papel

  1. Instala IronPrint a través de NuGet: Install-Package IronPrint
  2. Agrega using IronPrint; al archivo
  3. Crea un objeto PrintSettings
  4. Asigna un valor Margins a PaperMargins (valores en milímetros)
  5. Pasa configuraciones a Printer.Print() con la ruta del archivo
  1. Instala IronPrint con el Administrador de Paquetes NuGet

    PM > Install-Package IronPrint
  2. Copie y ejecute este fragmento de código.

    using IronPrint;
    
    // Set 15 mm margins on all sides and print
    PrintSettings settings = new PrintSettings();
    settings.PaperMargins = new Margins(15);
    Printer.Print("report.pdf", settings);
  3. Despliegue para probar en su entorno real

    Comienza a usar IronPrint en tu proyecto hoy mismo con una prueba gratuita

    arrow pointer

¿Cómo puedo establecer márgenes iguales en todos los lados?

El constructor más simple toma un solo entero y lo aplica uniformemente a los cuatro lados. Pasamos el valor en milímetros:

:path=/static-assets/print/content-code-examples/how-to/set-paper-margins/set-paper-margins-uniform-margins.cs
using IronPrint;

// Configure a uniform 20 mm margin on all sides
PrintSettings settings = new PrintSettings
{
    PaperMargins = new Margins(20),
    PaperSize = PaperSize.A4
};

// Print the invoice
Printer.Print("invoice.pdf", settings);
Imports IronPrint

' Configure a uniform 20 mm margin on all sides
Dim settings As New PrintSettings With {
    .PaperMargins = New Margins(20),
    .PaperSize = PaperSize.A4
}

' Print the invoice
Printer.Print("invoice.pdf", settings)
$vbLabelText   $csharpLabel

Margins(20) establece Left, Top, Right, y Bottom cada uno a 20 mm. Esta es la opción más común para documentos de negocios estándar donde el espacio en blanco consistente en cada borde es suficiente.

IronPrint mide los márgenes en milímetros, lo cual evita la confusión de la clase System.Drawing.Printing.Margins que usa centésimas de pulgada. Un margen de 25.4 mm en IronPrint es equivalente a new System.Drawing.Printing.Margins(100) — no se requiere cálculo de conversión de nuestra parte.

¿Cómo configuro diferentes márgenes para cada lado?

Cuando un documento necesita espacio extra en la parte superior para un membrete o en la parte inferior para un pie de página, utilizamos el constructor de cuatro parámetros:

:path=/static-assets/print/content-code-examples/how-to/set-paper-margins/set-paper-margins-per-side-margins.cs
using IronPrint;

// Configure per-side margins (left, top, right, bottom)
PrintSettings settings = new PrintSettings
{
    PaperMargins = new Margins(10, 25, 10, 20),
    PaperOrientation = PaperOrientation.Portrait
};

// Print the letterhead
Printer.Print("letterhead.pdf", settings);
Imports IronPrint

' Configure per-side margins (left, top, right, bottom)
Dim settings As New PrintSettings With {
    .PaperMargins = New Margins(10, 25, 10, 20),
    .PaperOrientation = PaperOrientation.Portrait
}

' Print the letterhead
Printer.Print("letterhead.pdf", settings)
$vbLabelText   $csharpLabel

El orden de los parámetros es left, top, right, bottom. Cada valor es independiente, por lo que podemos crear diseños asimétricos que acomoden encabezados, pies de página, bordes de encuadernación o espacio para perforaciones. La referencia de la API de la clase Margins documenta cada campo.

¿Qué opciones abreviadas existen para diseños de márgenes comunes?

La clase Margins de IronPrint ofrece dos constructores adicionales más allá de las versiones uniforme y por lado:

Abreviatura Horizontal / VerticalMargins(int horizontal, int vertical) establece izquierda+derecha en el primer valor y arriba+abajo en el segundo:

:path=/static-assets/print/content-code-examples/how-to/set-paper-margins/set-paper-margins-shorthand-margins.cs
using IronPrint;

// Configure horizontal and vertical margin shorthand
PrintSettings settings = new PrintSettings
{
    PaperMargins = new Margins(10, 20)
};

// Print the landscape report
Printer.Print("report-landscape.pdf", settings);
Imports IronPrint

' Configure horizontal and vertical margin shorthand
Dim settings As New PrintSettings With {
    .PaperMargins = New Margins(10, 20)
}

' Print the landscape report
Printer.Print("report-landscape.pdf", settings)
$vbLabelText   $csharpLabel

Márgenes ceroMargins.Zero elimina todos los márgenes para impresión sin bordes:

:path=/static-assets/print/content-code-examples/how-to/set-paper-margins/set-paper-margins-zero-margins.cs
using IronPrint;

// Configure zero margins for edge-to-edge printing
PrintSettings borderless = new PrintSettings
{
    PaperMargins = new Margins(0)
};

// Print the poster
Printer.Print("poster.png", borderless);
Imports IronPrint

' Configure zero margins for edge-to-edge printing
Dim borderless As New PrintSettings With {
    .PaperMargins = New Margins(0)
}

' Print the poster
Printer.Print("poster.png", borderless)
$vbLabelText   $csharpLabel

Ten en cuenta que la mayoría de las impresoras físicas tienen un área mínima de impresión por hardware. Establecer Margins.Zero envía instrucciones de márgenes cero al controlador, pero la impresora aún puede cortar contenido cerca de los bordes dependiendo de sus capacidades.

¿Cómo combino márgenes con otras configuraciones de impresión?

PaperMargins es una propiedad en PrintSettings. Podemos combinarlo con tamaño de papel, orientación, DPI, copias, modo en escala de grises y selección de impresora en un único objeto de configuración:

:path=/static-assets/print/content-code-examples/how-to/set-paper-margins/set-paper-margins-combined-settings.cs
using IronPrint;

// Configure full print settings with asymmetric margins
PrintSettings settings = new PrintSettings
{
    PaperMargins = new Margins(15, 20, 15, 25),
    PaperSize = PaperSize.A4,
    PaperOrientation = PaperOrientation.Portrait,
    Dpi = 300,
    NumberOfCopies = 2,
    Grayscale = false,
    PrinterName = "HP LaserJet Pro MFP M428"
};

// Print the Q4 report to the named printer
Printer.Print("Q4-report.pdf", settings);
Imports IronPrint

' Configure full print settings with asymmetric margins
Dim settings As New PrintSettings With {
    .PaperMargins = New Margins(15, 20, 15, 25),
    .PaperSize = PaperSize.A4,
    .PaperOrientation = PaperOrientation.Portrait,
    .Dpi = 300,
    .NumberOfCopies = 2,
    .Grayscale = False,
    .PrinterName = "HP LaserJet Pro MFP M428"
}

' Print the Q4 report to the named printer
Printer.Print("Q4-report.pdf", settings)
$vbLabelText   $csharpLabel

Para flujos de trabajo asíncronos — WPF, MAUI, o aplicaciones web de ASP.NET — reemplaza Printer.Print() con await Printer.PrintAsync() para evitar bloquear el hilo de la interfaz de usuario. El mismo objeto PrintSettings funciona con ambos métodos.

¿Cuales son mis próximos pasos?

Cubrimos cuatro maneras de configurar márgenes de impresión con IronPrint: márgenes uniformes usando Margins(int), control por lado con Margins(int, int, int, int), la abreviatura horizontal/vertical Margins(int, int), y la impresión sin bordes con Margins.Zero. Cada enfoque se integra en PrintSettings.PaperMargins y funciona tanto con Printer.Print() como con Printer.PrintAsync().

Para una mayor lectura, explora estos recursos:

Obtenga una licencia de prueba gratuita para probar todas las funciones en un entorno en vivo, o vea las opciones de licencias cuando esté listo para desplegar.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más
¿Listo para empezar?
Nuget Descargas 40,056 | Versión: 2026.4 recién lanzado
Still Scrolling Icon

¿Aún desplazándote?

¿Quieres una prueba rápida? PM > Install-Package IronPrint
ejecuta una muestra observa cómo tu documento llega a la impresora.