PageLayoutEvent

PageLayoutEvent enumeration

Sayfa düzeni modeli oluşturma ve oluşturma sırasında ortaya çıkan bir olay kodu.

Sayfa düzeni modeli iki adımda oluşturulur. İlki, “dönüştürme adımı”, bu, sayfa düzeninin belge içeriğini çekip nesne grafiğini oluşturduğu zamandır. İkincisi, “yeniden akıtma adımı”, yapıların bölündüğü, birleştirildiği ve düzenlendiği zamandır. sayfalara bölünür.

Oluşturmayı tetikleyen işleme bağlı olarak, sayfa düzeni modeli sabit sayfa formatına dönüştürülebilir veya getirilmeyebilir. Örneğin, belgedeki sayfa sayısını hesaplamak veya alanları güncellemek, oluşturmayı gerektirmezken, Pdf’e aktarma gerektirir.

public enum PageLayoutEvent

değerler

İsimDeğerTanım
None0Varsayılan değer
WatchDog1Kodda sıklıkla ziyaret edilen ve işlemi iptal etmeye uygun bir kontrol noktasına karşılık gelir.
BuildStarted2Sayfa düzeninin oluşturulması başladı. Bir kez tetiklendi. Bu, şu durumlarda meydana gelen ilk olaydır:UpdatePageLayout denir.
BuildFinished3Sayfa düzeninin oluşturulması tamamlandı. Bir kez tetiklendi. Bu, şu durumlarda meydana gelen son olaydır:UpdatePageLayout denir.
ConversionStarted4Doküman modelinin sayfa düzenine dönüştürülmesi başladı. Bir kez tetiklendi. Bu, düzen modeli belge içeriğini çekmeye başladığında meydana gelir.
ConversionFinished5Belge modelinin sayfa düzenine dönüştürülmesi tamamlandı. Bir kez tetiklendi. Bu, düzen modeli belge içeriğini çekmeyi bıraktığında meydana gelir.
ReflowStarted6Sayfa düzeninin yeniden düzenlenmesi başladı. Bir kez tetiklendi. Bu, düzen modeli belge içeriğini yeniden akıtmaya başladığında meydana gelir.
ReflowFinished7Sayfa düzeninin yeniden düzenlenmesi tamamlandı. Bir kez tetiklendi. Bu, düzen modeli belge içeriğinin yeniden akışını durdurduğunda meydana gelir.
PartReflowStarted8Sayfanın yeniden akışı başladı. Sayfanın birden çok kez yeniden akıtılabileceğini ve yeniden akışın bitmeden yeniden başlayabileceğini unutmayın.
PartReflowFinished9Sayfanın yeniden akışı tamamlandı. Sayfanın birden çok kez yeniden akıtılabileceğini ve yeniden akışın bitmeden yeniden başlayabileceğini unutmayın.
PartRenderingStarted10Sayfanın oluşturulması başladı. Bu, sayfa başına bir kez tetiklenir.
PartRenderingFinished11Sayfanın oluşturulması tamamlandı. Bu, sayfa başına bir kez tetiklenir.

Örnekler

Düzen geri çağrısıyla düzen değişikliklerinin nasıl izleneceğini gösterir.

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>
/// Belgeyi sabit sayfa formatında kaydettiğimizde bizi bilgilendirir
/// ve yerel dosya sistemindeki bir görüntüye sayfa yeniden akışı gerçekleştirdiğimiz bir sayfayı işler.
/// </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;
}

Ayrıca bakınız