Udostępnij za pośrednictwem


Dokumenty w WPF

Program Windows Presentation Foundation (WPF) oferuje szeroką gamę funkcji dokumentów, które umożliwiają tworzenie zawartości o wysokiej wierności, która jest przeznaczona do łatwiejszego uzyskiwania dostępu i odczytywania niż w poprzednich generacjach systemu Windows. Oprócz rozszerzonych możliwości i jakości WPF zapewnia również zintegrowane usługi wyświetlania, pakowania i zabezpieczeń dokumentów. Ten temat zawiera wprowadzenie do typów dokumentów WPF i pakowania dokumentów.

Typy dokumentów

WPF dzieli dokumenty na dwie szerokie kategorie na podstawie zamierzonego użytku; te kategorie dokumentów są określane jako "stałe dokumenty" i "dokumenty przepływu".

Stałe dokumenty są przeznaczone dla aplikacji, które wymagają dokładnej prezentacji "tego, co widzisz" (WYSIWYG), niezależnie od używanego sprzętu wyświetlacza lub drukarki. Typowe zastosowania stałych dokumentów obejmują publikowanie pulpitu, przetwarzanie wyrazów i układ formularza, gdzie przestrzeganie oryginalnego projektu strony jest krytyczne. W ramach układu dokument stały utrzymuje dokładne położenie elementów zawartości niezależnie od używanego urządzenia wyświetlania lub drukowania. Na przykład stała strona dokumentu wyświetlana na ekranie 96 dpi będzie wyświetlana dokładnie tak samo, gdy jest wyświetlana na drukarce laserowej o rozdzielczości 600 dpi, tak jak w przypadku wyjścia do fototypu 4800 dpi. Układ strony pozostaje taki sam we wszystkich przypadkach, a jakość dokumentu maksymalizuje możliwości każdego urządzenia.

Dla porównania dokumenty przepływu są przeznaczone do optymalizowania wyświetlania i czytelności i są najlepiej wykorzystywane, gdy łatwość czytania jest podstawowym scenariuszem użycia dokumentów. Zamiast ustawiać jeden wstępnie zdefiniowany układ, dokumenty przepływu dynamicznie dostosowują i zmieniają ich zawartość na podstawie zmiennych czasu wykonywania, takich jak rozmiar okna, rozdzielczość urządzenia i opcjonalne preferencje użytkownika. Strona sieci Web to prosty przykład dokumentu przepływu, w którym zawartość strony jest dynamicznie sformatowana w celu dopasowania bieżącego okna. Dokumenty przepływu optymalizują środowisko wyświetlania i odczytu dla użytkownika na podstawie środowiska uruchomieniowego. Na przykład ten sam dokument przepływu będzie dynamicznie sformatowany w celu uzyskania optymalnej czytelności na wyświetlaczu 19-calowym o wysokiej rozdzielczości lub małym ekranie PDA 2x3 cali. Ponadto dokumenty przepływu mają wiele wbudowanych funkcji, w tym wyszukiwanie, tryby wyświetlania, które optymalizują czytelność, oraz możliwość zmiany rozmiaru i wyglądu czcionek. Zobacz Omówienie dokumentu przepływu, aby uzyskać ilustracje, przykłady i szczegółowe informacje na temat dokumentów przepływu.

Kontrolki dokumentu i układ tekstu

Program .NET Framework udostępnia zestaw wstępnie utworzonych kontrolek, które upraszczają korzystanie z stałych dokumentów, dokumentów przepływu i tekstu ogólnego w aplikacji. Wyświetlanie stałej zawartości dokumentu jest obsługiwane przy użyciu kontrolki DocumentViewer . Wyświetlanie zawartości dokumentu przepływu jest obsługiwane przez trzy różne kontrolki: FlowDocumentReader, FlowDocumentPageVieweri FlowDocumentScrollViewer które są mapowane na różne scenariusze użytkownika (zobacz sekcje poniżej). Inne kontrolki WPF zapewniają uproszczony układ do obsługi ogólnych zastosowań tekstu (zobacz Tekst w interfejsie użytkownika poniżej).

Naprawiono kontrolkę dokumentu — DocumentViewer

Kontrolka jest przeznaczona DocumentViewer do wyświetlania FixedDocument zawartości. Kontrolka DocumentViewer zapewnia intuicyjny interfejs użytkownika, który zapewnia wbudowaną obsługę typowych operacji, takich jak drukowanie danych wyjściowych, kopiowanie do schowka, powiększanie i wyszukiwanie tekstu. Kontrolka zapewnia dostęp do stron zawartości za pośrednictwem znanego mechanizmu przewijania. Podobnie jak wszystkie kontrolki WPF, DocumentViewer obsługuje pełne lub częściowe restyling, co umożliwia wizualną integrację kontrolki z praktycznie dowolną aplikacją lub środowiskiem.

DocumentViewer jest przeznaczony do wyświetlania zawartości w sposób tylko do odczytu; edytowanie lub modyfikowanie zawartości jest niedostępne i nie jest obsługiwane.

Kontrolki dokumentu przepływu

Uwaga

Aby uzyskać bardziej szczegółowe informacje na temat funkcji dokumentów przepływu i sposobu ich tworzenia, zobacz Omówienie dokumentu przepływu.

Wyświetlanie zawartości dokumentu przepływu jest obsługiwane przez trzy kontrolki: FlowDocumentReader, FlowDocumentPageVieweri FlowDocumentScrollViewer.

FlowDocumentReader

FlowDocumentReader Zawiera funkcje, które umożliwiają użytkownikowi dynamiczne wybieranie między różnymi trybami wyświetlania, w tym tryb wyświetlania jednostronicowego (page-at-a-time), dwustronicowego trybu wyświetlania (format czytania książki) oraz trybu przeglądania ciągłego przewijania (bez dołu). Aby uzyskać więcej informacji na temat tych trybów wyświetlania, zobacz FlowDocumentReaderViewingMode. Jeśli nie potrzebujesz możliwości dynamicznego przełączania się między różnymi trybami FlowDocumentPageViewer wyświetlania i FlowDocumentScrollViewer udostępniaj przeglądarki zawartości przepływu o lżejszym przepływie, które zostały naprawione w określonym trybie wyświetlania.

FlowDocumentPageViewer i FlowDocumentScrollViewer

FlowDocumentPageViewer Wyświetla zawartość w trybie wyświetlania strony w czasie, a zawartość FlowDocumentScrollViewer jest wyświetlana w trybie ciągłego przewijania. Oba FlowDocumentPageViewer elementy i FlowDocumentScrollViewer są stałe w określonym trybie wyświetlania. Porównaj z FlowDocumentReaderelementem , który zawiera funkcje, które umożliwiają użytkownikowi dynamiczne wybieranie różnych trybów wyświetlania (jak podano w wyliczenie FlowDocumentReaderViewingMode ), kosztem większej ilości zasobów niż FlowDocumentPageViewer lub FlowDocumentScrollViewer.

Domyślnie pionowy pasek przewijania jest zawsze wyświetlany, a poziomy pasek przewijania staje się widoczny w razie potrzeby. Domyślny interfejs użytkownika dla FlowDocumentScrollViewer elementu nie zawiera paska narzędzi, IsToolBarVisible jednak właściwość może służyć do włączenia wbudowanego paska narzędzi.

Tekst w interfejsie użytkownika

Oprócz dodawania tekstu do dokumentów tekst może być oczywiście używany w interfejsie użytkownika aplikacji, takim jak formularze. WPF zawiera wiele kontrolek do rysowania tekstu na ekranie. Każda kontrolka jest przeznaczona dla innego scenariusza i ma własną listę funkcji i ograniczeń. Ogólnie rzecz biorąc, element powinien być używany, TextBlock gdy wymagana jest ograniczona obsługa tekstu, na przykład krótkie zdanie w interfejsie użytkownika. Label można użyć, gdy wymagana jest minimalna obsługa tekstu. Aby uzyskać więcej informacji, zobacz TextBlock Overview (Omówienie funkcji TextBlock).

Pakowanie dokumentów

Interfejsy System.IO.Packaging API zapewniają wydajny sposób organizowania danych aplikacji, zawartości dokumentów i powiązanych zasobów w jednym kontenerze, który jest prosty w dostępie, przenośnym i łatwym w dystrybucji. Plik ZIP jest przykładem Package typu, który może przechowywać wiele obiektów jako pojedynczą jednostkę. Interfejsy API pakowania zapewniają domyślną ZipPackage implementację zaprojektowaną przy użyciu standardu Open Packaging Conventions z architekturą plików XML i ZIP. Interfejsy API pakietów WPF ułatwiają tworzenie pakietów oraz przechowywanie obiektów w nich i uzyskiwanie do nich dostępu. Obiekt przechowywany w obiekcie Package jest określany jako PackagePart ("część"). Pakiety mogą również zawierać podpisane certyfikaty cyfrowe, które mogą służyć do identyfikowania inicjatora części i sprawdzania, czy zawartość pakietu nie została zmodyfikowana. Pakiety zawierają PackageRelationship również funkcję, która umożliwia dodawanie dodatkowych informacji do pakietu lub skojarzonych z określonymi częściami bez faktycznego modyfikowania zawartości istniejących części. Usługi pakietów obsługują również usługę Microsoft Windows Rights Management (RM).

Architektura pakietu WPF stanowi podstawę dla wielu kluczowych technologii:

  • Dokumenty XPS zgodne ze specyfikacją papieru XML (XPS).

  • Dokumenty w formacie OPEN XML (.docx) pakietu Microsoft Office "12".

  • Niestandardowe formaty magazynu dla własnego projektu aplikacji.

Na podstawie interfejsów XpsDocument API pakowania element jest przeznaczony specjalnie do przechowywania dokumentów zawartości stałej WPF. Jest XpsDocument to samodzielny dokument, który można otworzyć w przeglądarce, wyświetlany w kontrolce DocumentViewer , kierowany do buforu wydruku lub danych wyjściowych bezpośrednio do drukarki zgodnej z systemem XPS.

Poniższe sekcje zawierają dodatkowe informacje na Package temat interfejsów API i XpsDocument dostarczanych z platformą WPF.

Składniki pakietu

Interfejsy API pakowania WPF umożliwiają organizowanie danych i dokumentów aplikacji w jedną przenośną jednostkę. Plik ZIP jest jednym z najpopularniejszych typów pakietów i jest domyślnym typem pakietu dostarczanym z WPF. Package sama jest abstrakcyjną klasą, z której ZipPackage zaimplementowano przy użyciu otwartej standardowej architektury plików XML i ZIP. Metoda Open używa ZipPackage metody do tworzenia i używania plików ZIP domyślnie. Pakiet może zawierać trzy podstawowe typy elementów:

Element opis
PackagePart Zawartość aplikacji, dane, dokumenty i pliki zasobów.
PackageDigitalSignature [Certyfikat X.509] na potrzeby identyfikacji, uwierzytelniania i walidacji.
PackageRelationship Dodano informacje związane z pakietem lub określoną częścią.

PakietyPart

A PackagePart ("część") to abstrakcyjna klasa, która odwołuje się do obiektu przechowywanego w obiekcie Package. W pliku ZIP części pakietu odpowiadają poszczególnym plikom przechowywanym w pliku ZIP. ZipPackagePart Udostępnia domyślną implementację dla obiektów możliwych do serializacji przechowywanych w obiekcie ZipPackage. Podobnie jak system plików, części zawarte w pakiecie są przechowywane w katalogu hierarchicznym lub w organizacji "w stylu folderu". Za pomocą interfejsów API pakowania WPF aplikacje mogą zapisywać, przechowywać i odczytywać wiele PackagePart obiektów przy użyciu jednego kontenera plików ZIP.

PackageDigitalSignatures

W przypadku zabezpieczeń PackageDigitalSignature ("podpis cyfrowy") można skojarzyć z częściami w pakiecie. Element PackageDigitalSignature zawiera element [509], który zapewnia dwie funkcje:

  1. Identyfikuje i uwierzytelnia inicjatora części.

  2. Sprawdza, czy część nie została zmodyfikowana.

Podpis cyfrowy nie wyklucza modyfikacji części, ale sprawdzanie poprawności podpisu cyfrowego zakończy się niepowodzeniem, jeśli część zostanie w jakikolwiek sposób zmieniona. Następnie aplikacja może podjąć odpowiednie działania — na przykład zablokować otwarcie części lub powiadomić użytkownika, że część została zmodyfikowana i nie jest bezpieczna.

PackageRelationships

Element PackageRelationship ("relacja") udostępnia mechanizm kojarzenia dodatkowych informacji z pakietem lub częścią pakietu. Relacja to obiekt na poziomie pakietu, który może skojarzyć dodatkowe informacje ze częścią bez modyfikowania rzeczywistej zawartości części. Wstawianie nowych danych bezpośrednio do części zawartości elementu zwykle nie jest praktyczne w wielu przypadkach:

  • Rzeczywisty typ części i jego schemat zawartości nie jest znany.

  • Nawet jeśli jest znany, schemat zawartości może nie zapewniać środków do dodawania nowych informacji.

  • Część może być podpisana cyfrowo lub zaszyfrowana, poprzedzając wszelkie modyfikacje.

Relacje pakietów umożliwiają odnajdywanie metod dodawania i kojarzenia dodatkowych informacji z poszczególnymi częściami lub całym pakietem. Relacje pakietów są używane dla dwóch podstawowych funkcji:

  1. Definiowanie relacji zależności z jednej części do innej.

  2. Definiowanie relacji informacji, które dodają notatki lub inne dane związane z częścią.

Element zapewnia PackageRelationship szybki, możliwy do odnalezienia sposób definiowania zależności i dodawania innych informacji skojarzonych z częścią pakietu lub pakietu jako całości.

Relacje zależności

Relacje zależności są używane do opisywania zależności, które jedna część wykonuje do innych części. Na przykład pakiet może zawierać część HTML zawierającą co najmniej jeden <tag obrazu img> . Tagi obrazów odnoszą się do obrazów znajdujących się jako inne części wewnętrzne pakietu lub zewnętrznego pakietu (na przykład dostępnego przez Internet). Utworzenie skojarzonego z plikiem PackageRelationship HTML sprawia, że odnajdywanie i uzyskiwanie dostępu do zasobów zależnych jest szybkie i łatwe. Aplikacja przeglądarki lub przeglądarki może bezpośrednio uzyskać dostęp do relacji części i natychmiast rozpocząć składanie zasobów zależnych bez znajomości schematu lub analizowania dokumentu.

Relacje informacji

Podobnie jak notatka lub adnotacja, PackageRelationship można również użyć do przechowywania innych typów informacji, które mają być skojarzone ze częścią bez konieczności faktycznego modyfikowania samej zawartości części.

Dokumenty XPS

Dokument specyfikacji papieru XML (XPS) to pakiet zawierający co najmniej jeden stały dokument wraz ze wszystkimi zasobami i informacjami wymaganymi do renderowania. XPS jest również natywnym formatem pliku buforu wydruku systemu Windows Vista. Element XpsDocument jest przechowywany w standardowym zestawie danych ZIP i może zawierać kombinację składników XML i binarnych, takich jak pliki obrazów i czcionek. Klasy PackageRelationship służą do definiowania zależności między zawartością a zasobami wymaganymi do pełnego renderowania dokumentu. Projekt XpsDocument udostępnia jedno rozwiązanie dokumentu o wysokiej wierności, które obsługuje wiele zastosowań:

  • Odczytywanie, zapisywanie i przechowywanie stałej zawartości i zasobów dokumentu jako pojedynczego, przenośnego i łatwego w dystrybucji pliku.

  • Wyświetlanie dokumentów za pomocą aplikacji XPS Viewer.

  • Wyprowadzanie dokumentów w natywnym formacie wyjściowym buforu wydruku systemu Windows Vista.

  • Kierowanie dokumentów bezpośrednio do drukarki zgodnej z systemem XPS.

Zobacz też