Html sang tài liệu lưu lượng

Thư viện này nhằm mục đích chuyển đổi tài liệu HTML thành FlowDocument Ngôn ngữ đánh dấu ứng dụng mở rộng (XAML). Tất nhiên, điều này chỉ khả thi đối với các bố cục đơn giản

Đồ án gồm hai phần

  • Trình chuyển đổi HTML sang FlowDocument, được sao chép từ Demo HTMLToXamlConverter của Microsoft (giấy phép MIT)
  • Dự án ExCSS từ Tyler Brinks (giấy phép MIT)

Trong dự án này, bản demo HtmlToXamlConverter của Microsoft được mở rộng để hỗ trợ các tính năng sau

  • sử dụng cung cấp bên ngoài. css (bằng trình phân tích cú pháp ExCSS)
  • hỗ trợ cho hình ảnh
  • triển khai màu sắc (văn bản, nền)
  • hỗ trợ cho các đơn vị em ở phông chữ và tất cả các loại kích cỡ, bằng cách chuyển đổi chúng thành đơn vị tuyệt đối
  • một số bản sửa lỗi khác, như hỗ trợ dấu cách trong văn bản

Cách sử dụng

Lúc đầu, văn bản Html được chuyển đổi thành mô hình đối tượng Dom

var converter = new Converter();
var domRootElement = converter.Convert(htmlString, asFlowDocument:true, cssStyleSheetProvider)

Bạn phải cung cấp ba đối số

  1. htmlChuỗi. toàn bộ tài liệu HTML để chuyển đổi dưới dạng chuỗi văn bản (CHÚ Ý. cái này đại diện cho tài liệu HTML, không phải URL. )
  2. asFlowDocument. một biến boolean. Nếu đúng, nút gốc Dom được trả về là một HtmlToFlowDocument. nhà thờ. Lưu lượngTài liệu. Nếu sai, nút gốc Dom được trả về là HtmlToFlowDocument. nhà thờ. Mục này sau đó có thể được chèn vào HtmlToFlowDocument. nhà thờ. Phiên bản FlowDocument sau này
  3. cssStyleSheetProvider. một hàm, chỉ nhận đối số là tên tương đối của một. tệp CSS. Bạn có trách nhiệm tìm nạp. tệp CSS và trả về văn bản của. Tệp CSS làm giá trị trả về của hàm được cung cấp

Giá trị trả về của Convert là một cây gồm các phần tử Dom. Trong bước tiếp theo, cây Dom này có thể được chuyển đổi thành văn bản thuần túy, thành biểu diễn XAML và sử dụng HtmlToFlowDocument. Dự án Wpf, cây Dom cũng có thể được chuyển đổi trực tiếp thành FlowDocument. Cách thứ hai là cách được đề xuất nhiều nhất để tạo FlowDocument, vì nó bảo tồn phần lớn các thuộc tính

Ví dụ (để chuyển sang Xaml)

var renderer = new HtmlToFlowDocument.Rendering.XamlRenderer();
renderer.Render(domRootElement, memoryStream);

Không gian tên Rendering cũng chứa các trình kết xuất khác

cung cấp hình ảnh

Tôi đã quyết định không mã hóa hình ảnh trực tiếp vào cây DOM. Thay vào đó, liên kết muộn chỉ được sử dụng để hiển thị hình ảnh sau khi cây DOM được chuyển đổi thành các lớp Wpf tương ứng. Ví dụ: thẻ hình ảnh Html

Html sang tài liệu lưu lượng

được chuyển đổi thành biểu diễn XAML sau


Điều này có nghĩa là, nếu sau đó bạn hiển thị tài liệu, ngữ cảnh dữ liệu của tài liệu của bạn phải chứa một thuộc tính có tên ImageProvider. Lớp được trả về bởi thuộc tính ImageProvider phải chứa một thuộc tính được lập chỉ mục, thuộc tính này nhận một chuỗi làm đối số. Chuỗi đại diện cho tên tệp tương đối của hình ảnh. Bạn có trách nhiệm tải hình ảnh và trả về dưới dạng nguồn hình ảnh Wpf

Nếu bạn thấy bản dịch mà bạn cho rằng có vẻ sai, vui lòng tham khảo bài viết gốc để chắc chắn và sau đó sử dụng nút bình chọn để cho chúng tôi biết về nó

Metadata

Vui lòng giúp chúng tôi bằng cách dịch siêu dữ liệu sau cho bài viết/chương, nếu chúng chưa được dịch

Nếu bạn không hài lòng với bản dịch của một mục siêu dữ liệu cụ thể, bạn có thể bỏ phiếu phản đối - khi đạt đến ngưỡng tiêu cực nhất định, mục đó sẽ bị xóa. Vui lòng chỉ gửi bản dịch đã thay đổi của mục siêu dữ liệu nếu bạn có lý do chính đáng để làm như vậy

Vui lòng đăng nhập để dịch siêu dữ liệu. Đã đăng nhập?

  • Thêm thông tin
  • Tìm kiếm các bài báo gốc bằng tiếng Anh?

Điều khiển văn bản đa dạng thức

Giới thiệu về các điều khiển Văn bản có định dạng WPF

Với những khung giao diện người dùng như WinForms, việc hiển thị một số lượng lớn văn bản đã được định dạng là một vấn đề. Tất nhiên, bạn có thể tải tệp vào RichTextBox hoặc bạn cũng có thể tạo các đối tượng WebBrowser và tải trang web cục bộ hoặc từ xa, nhưng việc chỉ định lượng văn bản lớn trong thời gian dự kiến ​​thì không thể thực hiện được. Có vẻ như Microsoft muốn khắc phục điều này trong WPF và hơn thế nữa là cái nhìn đơn giản về văn bản

FlowDocument thật sự làm cho văn bản đa tính chất, và thậm chí còn bao gồm cả hình ảnh, bảng danh sách và các phần tử có thể được thả nổi, điều chỉnh, v. v. Việc sử dụng FlowDocument chỉ có thể định dạng văn bản đa tính chất trong thời gian thực hiện nếu đó là HTML và định hướng cho ứng dụng WPF của bạn

FlowDocument không độc lập. Thay vào đó, nó sử dụng một trong các hàm đóng gói tích hợp, thứ yếu điều khiển cách trình bày FlowDocument và cấp quyền chỉnh sửa văn bản. WPF bao gồm ba điều khiển hiển thị FlowDocument trong chế độ đọc và các điều khiển hỗ trợ điều chỉnh kích thước và trong văn bản

FlowDocumentScrollViewer - trình bao bọc đơn giản nhất của FlowDocument, chỉ hiển thị tài liệu đơn giản dưới dạng tài liệu văn bản dài mà bạn có thể tùy chỉnh

FlowDocumentPageViewer - trình bao bọc tự động chia tài liệu thành nhiều trang, người dùng có thể điều hướng qua lại

FlowDocumentReader - kết hợp giữa FlowDocumentScrollViewer và FlowDocumentPageViewer, cho phép người dùng lựa chọn giữa hai chế độ. Đây cũng là khả năng cung cấp giao diện AND để tìm kiếm tài liệu

FlowDocument thông thường là chỉ đọc, nhưng nếu đặt trong lệnh RichTextBox (sẽ được giới thiệu trong bài hướng dẫn sau ) và bạn có thể chỉnh sửa văn bản, như trình soạn thảo thực tế như Microsoft Word

Với bài viết tiếp theo, chúng ta sẽ thảo luận về trình bao bọc được sử dụng trong FlowDocument, kể cả chỉ đọc hay có thể chỉnh sửa. Sau đó, chúng tôi sẽ xem xét tất cả các khả năng khi tạo tài liệu phong phú bằng FlowDocument, bao gồm bảng, danh sách, hình ảnh và nhiều hơn thế nữa