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 na pulpicie, przetwarzanie tekstu i projektowanie formularzy, gdzie istotne jest zachowanie oryginalnego projektu strony. 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, widoczna na ekranie o rozdzielczości 96 dpi, będzie wyglądać dokładnie tak samo, gdy zostanie wydrukowana na drukarce laserowej o rozdzielczości 600 dpi, jak i na fotonaświetlarce o rozdzielczości 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ą doświadczenie użytkownika podczas wyświetlania i czytania, w zależności od ś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 Flow Document Overview (Omówienie dokumentu przepływu), aby zapoznać się z ilustracjami, przykładami i szczegółowymi informacjami 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żytkownikaponiżej).

Naprawiono kontrolę dokumentów — DocumentViewer

Kontrolka DocumentViewer jest przeznaczona do wyświetlania zawartości FixedDocument. 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łną lub częściową restylizację, co umożliwia wizualne wtopienie się kontrolki w praktycznie dowolną aplikację lub środowisko.

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ływowego

Notatka

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 trybem wyświetlania jednostronicowego (strona po stronie), trybem dwustronicowym (format czytania książki) oraz trybem wyświetlania ciągłego przewijania (bez końca). 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 wyświetlania, FlowDocumentPageViewer i FlowDocumentScrollViewer zapewniają lżejsze przeglądarki treści przepływu, które są ustalone w określonym trybie wyświetlania.

FlowDocumentPageViewer i FlowDocumentScrollViewer

FlowDocumentPageViewer wyświetla zawartość w trybie wyświetlania po jednej stronie, a FlowDocumentScrollViewer w trybie ciągłego przewijania. Zarówno FlowDocumentPageViewer, jak i FlowDocumentScrollViewer są stałe w określonym trybie wyświetlania. Porównaj z FlowDocumentReader, która zawiera funkcje, które umożliwiają użytkownikowi dynamiczne wybieranie między różnymi trybami wyświetlania (zgodnie z wyliczeniem FlowDocumentReaderViewingMode), kosztem intensywniejszego wykorzystania 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 nie zawiera paska narzędzi; można jednak użyć właściwości IsToolBarVisible w celu 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 TextBlock powinien być używany, 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.

Pakowanie dokumentów

Interfejsy API System.IO.Packaging 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 typu Package, który może przechowywać wiele obiektów jako pojedynczą jednostkę. Interfejsy API pakowania zapewniają domyślną implementację ZipPackage 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 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ą również funkcję PackageRelationship, 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 otwartego XML Microsoft Office "12" (.docx).

  • Niestandardowe formaty przechowywania dla własnego projektu aplikacji.

W oparciu o interfejsy API pakowania, XpsDocument jest specjalnie zaprojektowany, aby przechowywać dokumenty z zawartością stałą WPF. XpsDocument to samodzielny dokument, który można otworzyć w przeglądarce, wyświetlić w kontrolce DocumentViewer, skierować do bufora wydruku lub wysłać bezpośrednio do drukarki zgodnej z systemem XPS.

Poniższe sekcje zawierają dodatkowe informacje na temat interfejsów API Package 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 jest abstrakcyjną klasą, z której ZipPackage jest implementowana przy użyciu otwartej standardowej architektury plików XML i ZIP. Metoda Open używa ZipPackage do tworzenia i używania plików ZIP domyślnie. Pakiet może zawierać trzy podstawowe typy elementów:

Przedmiot 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ą.

PakietyCzęści

PackagePart ("część") to abstrakcyjna klasa, która odwołuje się do obiektu przechowywanego w Package. W pliku ZIP części pakietu odpowiadają poszczególnym plikom przechowywanym w pliku ZIP. ZipPackagePart zapewnia domyślną implementację obiektów możliwych do serializacji przechowywanych w 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 obiektów PackagePart przy użyciu jednego kontenera plików ZIP.

PackageDigitalSignatures

Dla bezpieczeństwa można skojarzyć PackageDigitalSignature ("podpis cyfrowy") z elementami pakietu. 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.

RelacjePakietów

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, co uniemożliwia jakiekolwiek 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 pomiędzy jedną częścią a drugą.

  2. Określanie zależności informacyjnych, które dodają notatki lub inne dane związane z częścią.

PackageRelationship zapewnia szybki, czytelny 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ą jeden lub więcej <img> tagów obrazu. 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 PackageRelationship skojarzonego z plikiem HTML sprawia, że odnajdywanie i uzyskiwanie dostępu do zasobów zależnych jest szybkie i łatwe. Przeglądarka lub aplikacja do przeglądania może uzyskać bezpośredni dostęp do relacji częściowych i natychmiast rozpocząć montowanie 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. Format XPS jest również natywnym formatem pliku buforu wydruku w systemie Windows Vista. 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. PackageRelationships służą do definiowania zależności między zawartością a zasobami wymaganymi do pełnego renderowania dokumentu. Projekt XpsDocument zapewnia 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ż