DOCX էջերի դանդաղ բեռնում WinForms/WPF viewer-ում

Բլոգի կատեգորիա՝ ՊատկերացումOffice.NET

19.04.2024

DOCX փաստաթուղթը Microsoft Word Open XML ձևաչափի փաստաթուղթ է, որը պարունակում է տեքստ, պատկերներ, գրաֆիկա և այլն: DOCX փաստաթղթի առավելությունը դրա բովանդակության պարզ և ինտուիտիվ խմբագրումն է: DOCX փաստաթղթի թերությունն այն է, որ այն պահանջում է փաստաթղթի բովանդակությունը դասավորել՝ այն էջերի բաժանելու համար: Այլ կերպ ասած, 1000 էջանոց DOCX փաստաթղթի համար անհրաժեշտ է ցուցադրել փաստաթղթի բոլոր էջերը, նույնիսկ եթե ձեզ անհրաժեշտ է դիտել միայն վերջին էջը:

Եթե Microsoft Office Word-ում բացում եք մեծ թվով էջերով (1000 կամ ավելի էջ) DOCX փաստաթուղթ, կնկատվի, որ Word-ը գրեթե անմիջապես բացում է DOCX փաստաթուղթը և ցուցադրում է միայն մի քանի էջ (3-5 էջ): Հետագայում, ֆոնային ռեժիմում, Word-ը բեռնում է փաստաթղթի մնացած բոլոր էջերը: Սա արվում է, որպեսզի օգտատերը չսպասի, մինչև Word-ը դասավորի DOCX փաստաթղթի բոլոր էջերը, ինչը կարող է բավականին երկար ժամանակ տևել: DOCX էջերի ֆոնային բեռնումը շատ հարմար է, քանի որ օգտատերը կարող է արագ սկսել դիտել և խմբագրել փաստաթղթի սկիզբը: Եթե օգտատերը պետք է դիտի կամ խմբագրի փաստաթղթի վերջին էջը, ապա անհրաժեշտ է սպասել, մինչև Word-ը բեռնի փաստաթղթի բոլոր էջերը:

VintaSoft Imaging .NET SDK-ն թույլ է տալիս դիտել DOCX փաստաթուղթը, և լռելյայնորեն SDK-ն ստանում է տեղեկատվություն DOCX փաստաթղթի բոլոր էջերի մասին, և միայն դրանից հետո DOCX փաստաթղթի էջերը կարող են դիտվել փաստաթղթերի դիտման ծրագրում: Մեծ DOCX փաստաթղթերի համար (1000 կամ ավելի էջ) սա հարմար չէ, քանի որ անհրաժեշտ է սպասել մինչև բոլոր էջերի մասին տեղեկատվությունը վերցվի, և միայն դրանից հետո էջերը կարող են դիտվել։

Նաև VintaSoft Imaging .NET SDK-ն թույլ է տալիս վերարտադրել Microsoft Office Word-ի վարքագիծը, այսինքն՝ ֆոնային ռեժիմով ստանալ DOCX փաստաթղթի էջերի մասին տեղեկատվությունը: Պատկերների հավաքածուի էջերի/պատկերների մասին տեղեկատվության ֆոնային վերականգնումը հնարավոր դարձնելու համար անհրաժեշտ է օգտագործել [ImageViewerImagesManager] դասը և նշել, որ դասը պետք է.

Ահա C# կոդը, որը թույլ է տալիս ցուցադրել DOCX փաստաթղթի էջերը փաստաթղթերի դիտման մեջ՝ միաժամանակ DOCX փաստաթղթերի էջերի մասին տեղեկատվությունը բեռնելով ֆոնային ռեժիմում։
/// <summary>
/// The images manager for an image viewer.
/// </summary>
Vintasoft.Imaging.UI.ImageViewerImagesManager _imagesManager;



/// <summary>
/// Initializes a new instance of the <see cref="MainForm1"/> class.
/// </summary>
public MainForm1()
{
    InitializeComponent();

    // create images manager
    _imagesManager = new Vintasoft.Imaging.UI.ImageViewerImagesManager(imageViewer1);
    // specify that manager should retrieve information about image from file during 1 second, add images to an image viewer,
    // do previous steps until information about all images will not be retrieved
    _imagesManager.IntermediateAddInterval = 1000;
    // specify that manager should work asynchronously
    _imagesManager.IsAsync = true;
    _imagesManager.ImageSourceAddException += ImagesManager_ImageSourceAddException;
}



/// <summary>
/// Opens an image file.
/// </summary>
/// <param name="filename">The filename.</param>
internal void OpenImageFile(string filename)
{
    // cancel previous file opening process
    CancelOpening();
    // clear image collection of manager
    _imagesManager.Images.ClearAndDisposeItems();
    // add image file to the manager
    _imagesManager.Add(filename);
}

/// <summary>
/// Cancels the opening of a file.
/// </summary>
private void CancelOpening()
{
    _imagesManager.Cancel();
}

private void ImagesManager_ImageSourceAddException(object sender, Vintasoft.Imaging.ImageSourceExceptionEventArgs e)
{
    string message = string.Format("Cannot open {0} : {1}", System.IO.Path.GetFileName(e.SourceFilename), e.Exception.Message);
    System.Windows.Forms.MessageBox.Show(message, "Error");
}