Ghostscript.NET - vykreslení část dokumentu, s událostmi DisplayUpdate

hlasů
0

Třída GhostscriptViewer dělá skvělou práci zážehů, které mi umožňují aktualizovat obraz postupně a uživatel vidí kresbu přičemž tvar - krásné. Rád bych, aby byl tento mechanismus v žádosti.

Nicméně, nemohu přijít na to, jak krmit nějakou PostScript na GhostscriptViewer, například, aby vyjádřil oříznuté část dokumentu. Zde je to, co se dá dělat s GhostscriptViewerDeviceHandler:

    GhostscriptViewerDeviceHandler dev = new GhostscriptViewerDeviceHandler(GhostscriptPngDeviceType.Png16m);
    dev.GraphicsAlphaBits = GhostscriptImageDeviceAlphaBits.V_4;
    dev.TextAlphaBits = GhostscriptImageDeviceAlphaBits.V_4;
    dev.ResolutionXY = new GhostscriptImageDeviceResolution((int)resolutionEdit.Value, (int)resolutionEdit.Value);
    dev.InputFiles.Add(@C:\work\pdf-tagger\data\bigboat.pdf);
    dev.Pdf.FirstPage = 1;
    dev.Pdf.LastPage = 1;

    if (cbCrop.Checked)
    {
        dev.CustomSwitches.Add(-dDEVICEWIDTHPOINTS= + ((int)(sizeWidth.Value)).ToString());
        dev.CustomSwitches.Add(-dDEVICEHEIGHTPOINTS= + ((int)(sizeHeight.Value)).ToString());
        dev.CustomSwitches.Add(-dFIXEDMEDIA);

        // this thing here!
        dev.PostScript = String.Format(@
        << 
            /PageOffset[{0} {1}] 
        >> setpagedevice, -offsetX.Value, offsetY.Value);
    }

Tento kód funguje a já si trochu snížena vykreslení času, jak jen oříznutý díl je vykreslen. Ale v tomto případě nemám žádné prostředky, jak reagovat na vykreslování pokroku a zobrazení částečně poskytnuté obraz. Takže, PostScript, který řídí offsety - snažil jsem se ho aplikovat i přes GhostscriptViewer.CustomSwitches třeba takto:

    _viewer = new GhostscriptViewer();
    _viewer.ProgressiveUpdateInterval = 100;

    _viewer.Dpi = (int)resolutionEdit.Value; 

    if (cbCrop.Checked)
    {
        _viewer.CustomSwitches.Add(-dDEVICEWIDTHPOINTS= + ((int)(sizeWidth.Value)).ToString());
        _viewer.CustomSwitches.Add(-dDEVICEHEIGHTPOINTS= + ((int)(sizeHeight.Value)).ToString());
        _viewer.CustomSwitches.Add(-dFIXEDMEDIA);
        _viewer.CustomSwitches.Add(String.Format(@-c << 
            /PageOffset[{0} {1}] 
        >> setpagedevice, -offsetX.Value, offsetY.Value));
    }

    _viewer.CustomSwitches.Add(-f);

ale to nemá žádný vliv, jehož šířka a výška jsou omezené, ale posun nekoná, tedy vždycky jsem si levý dolní roh tavené.

Položena 07/11/2018 v 23:31
zdroj uživatelem
V jiných jazycích...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more