PageLayoutEvent

PageLayoutEvent enumeration

Un código de evento generado durante la creación y representación del modelo de diseño de página.

El modelo de diseño de página se construye en dos pasos. Primero, “paso de conversión”, aquí es cuando el diseño de página extrae el contenido del documento y crea un gráfico de objetos. Segundo, “paso de reflujo”, aquí es cuando las estructuras se dividen, fusionan y organizan en páginas.

Dependiendo de la operación que desencadenó la compilación, el modelo de diseño de página puede o no representarse en un formato de página fijo. Por ejemplo, calcular el número de páginas en el documento o actualizar campos no requiere renderizado, mientras que exportar a PDF sí.

public enum PageLayoutEvent

Valores

NombreValorDescripción
None0Valor predeterminado
WatchDog1Corresponde a un punto de control en el código que se visita con frecuencia y que es adecuado para abortar el proceso.
BuildStarted2Se ha iniciado la creación del diseño de página. Disparado una vez. Este es el primer evento que ocurre cuandoUpdatePageLayout se llama.
BuildFinished3La construcción del diseño de página ha finalizado. Disparado una vez. Este es el último evento que ocurre cuandoUpdatePageLayout se llama.
ConversionStarted4Se ha iniciado la conversión del modelo de documento al diseño de página. Se disparó una vez. Esto ocurre cuando el modelo de diseño comienza a extraer el contenido del documento.
ConversionFinished5La conversión del modelo de documento al diseño de página ha finalizado. Se disparó una vez. Esto ocurre cuando el modelo de diseño deja de extraer el contenido del documento.
ReflowStarted6Se ha iniciado el reflujo del diseño de página. Se disparó una vez. Esto ocurre cuando el modelo de diseño comienza a redistribuir el contenido del documento.
ReflowFinished7El reflujo del diseño de página ha finalizado. Se disparó una vez. Esto ocurre cuando el modelo de diseño deja de distribuir el contenido del documento.
PartReflowStarted8El reflujo de la página ha comenzado. Tenga en cuenta que la página puede refluir varias veces y que el reflujo puede reiniciarse antes de finalizar.
PartReflowFinished9El reflujo de la página ha finalizado. Tenga en cuenta que la página puede refluir varias veces y que el reflujo puede reiniciarse antes de finalizar.
PartRenderingStarted10Se ha iniciado el procesamiento de la página. Esto se activa una vez por página.
PartRenderingFinished11La renderización de la página ha finalizado. Esto se activa una vez por página.

Ejemplos

Muestra cómo realizar un seguimiento de los cambios de diseño con una devolución de llamada de diseño.

public void PageLayoutCallback()
{
    Document doc = new Document();
    doc.BuiltInDocumentProperties.Title = "My Document";

    DocumentBuilder builder = new DocumentBuilder(doc);
    builder.Writeln("Hello world!");

    doc.LayoutOptions.Callback = new RenderPageLayoutCallback();
    doc.UpdatePageLayout();

    doc.Save(ArtifactsDir + "Layout.PageLayoutCallback.pdf");
}

/// <summary>
/// Nos notifica cuando guardamos el documento en un formato de página fijo
/// y representa una página en la que realizamos un reflujo de página en una imagen en el sistema de archivos local.
/// </summary>
private class RenderPageLayoutCallback : IPageLayoutCallback
{
    public void Notify(PageLayoutCallbackArgs a)
    {
        switch (a.Event)
        {
            case PageLayoutEvent.PartReflowFinished:
                NotifyPartFinished(a);
                break;
            case PageLayoutEvent.ConversionFinished:
                NotifyConversionFinished(a);
                break;
        }
    }

    private void NotifyPartFinished(PageLayoutCallbackArgs a)
    {
        Console.WriteLine($"Part at page {a.PageIndex + 1} reflow.");
        RenderPage(a, a.PageIndex);
    }

    private void NotifyConversionFinished(PageLayoutCallbackArgs a)
    {
        Console.WriteLine($"Document \"{a.Document.BuiltInDocumentProperties.Title}\" converted to page format.");
    }

    private void RenderPage(PageLayoutCallbackArgs a, int pageIndex)
    {
        ImageSaveOptions saveOptions = new ImageSaveOptions(SaveFormat.Png) { PageSet = new PageSet(pageIndex) };

        using (FileStream stream =
            new FileStream(ArtifactsDir + $@"PageLayoutCallback.page-{pageIndex + 1} {++mNum}.png",
                FileMode.Create))
            a.Document.Save(stream, saveOptions);
    }

    private int mNum;
}

Ver también