Ein DOCX-Dokument ist ein Microsoft Word Open XML-Dokument, das Text, Bilder, Grafiken und mehr enthält. Der Vorteil von DOCX-Dokumenten liegt in der einfachen und intuitiven Bearbeitung ihres Inhalts. Der Nachteil besteht darin, dass der Dokumentinhalt layoutet werden muss, um ihn in Seiten aufzuteilen. Mit anderen Worten: Bei einem 1000-seitigen DOCX-Dokument müssen Sie alle Seiten des Dokuments rendern, selbst wenn Sie nur die letzte Seite anzeigen möchten.
Wenn Sie ein DOCX-Dokument mit vielen Seiten (1000 oder mehr Seiten) in Microsoft Office Word öffnen, werden Sie feststellen, dass Word das Dokument fast sofort öffnet und zunächst nur die ersten drei bis fünf Seiten anzeigt. Anschließend lädt Word im Hintergrund die restlichen Seiten. Dadurch muss der Benutzer nicht warten, bis Word alle Seiten des DOCX-Dokuments geladen hat, was recht lange dauern kann. Das Laden der Seiten im Hintergrund ist sehr praktisch, da der Benutzer so schnell mit dem Anzeigen und Bearbeiten des Dokumentanfangs beginnen kann. Um die letzte Seite des Dokuments anzuzeigen oder zu bearbeiten, muss der Benutzer warten, bis Word alle Seiten geladen hat.
Das VintaSoft Imaging .NET SDK ermöglicht das Anzeigen von DOCX-Dokumenten. Standardmäßig ruft das SDK Informationen über alle Seiten des DOCX-Dokuments ab, bevor diese im Dokumentenbetrachter angezeigt werden können. Bei großen DOCX-Dokumenten (1000 oder mehr Seiten) ist dies unpraktisch, da gewartet werden muss, bis die Informationen zu allen Seiten abgerufen wurden, bevor die Seiten angezeigt werden können.
Das VintaSoft Imaging .NET SDK ermöglicht es außerdem, das Verhalten von Microsoft Office Word nachzubilden, d. h.Informationen über die Seiten eines DOCX-Dokuments im Hintergrund abrufen. Um den Hintergrundabruf von Informationen über Seiten/Bilder der Bildersammlung zu ermöglichen, ist es notwendig, die Klasse [ImageViewerImagesManager] zu verwenden und anzugeben, dass diese Klasse Folgendes tun soll:
- Informationen zu Seiten eines DOCX-Dokuments innerhalb einer bestimmten Zeit (z. B. 1 Sekunde) abrufen
- Layoutierte DOCX-Seiten zum Dokumentenbetrachter hinzufügen
- Die vorherigen Schritte ausführen, bis alle DOCX-Seiten in den Dokumentenbetrachter geladen wurden
Hier ist C#-Code, der es ermöglicht, DOCX-Dokumentseiten im Dokumentenbetrachter anzuzeigen, während die Informationen zu den DOCX-Dokumentseiten im Hintergrund geladen werden:
/// <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");
}