Chuyển đến nội dung chính

Bài đăng

Hiển thị các bài đăng có nhãn Libraries

SkiaSharp: Thư Viện Đồ Họa Mạnh Mẽ Cho .NET

Giới thiệu SkiaSharp là một thư viện đồ họa mã nguồn mở dành cho .NET, được phát triển dựa trên Google Skia. Đây là công cụ vẽ 2D mạnh mẽ, hoạt động trên nhiều nền tảng như Windows, macOS, Linux, Android, iOS, và WebAssembly.  Github: https://github.com/mono/SkiaSharp SkiaSharp cung cấp các bindings đa nền tảng cho .NET Standard 1.3 .NET Core .NET 6 Tizen Android iOS tvOS macOS Mac Catalyst WinUI 3 (Windows App SDK / Uno Platform) Windows Classic Desktop (Windows.Forms / WPF) Web Assembly (WASM) Uno Platform (iOS / macOS / Android / WebAssembly) Tại sao dùng SkiaSharp? Thật ra lý do mình sử dụng SkiaSharp là muốn thay thế System.Drawing cho dự án .NET Framework. Có 1 số thư viện thay thế khác nhưng SkiaSharp vẫn hỗ trợ .NET Framework tới năm 2025 Lý do tiếp theo là dễ dàng mở rộng, hỗ trợ gradient, blur, noise, effects…  Cài đặt SkiaSharp Nếu bạn đang sử dụng .NET Framework 4.8 / .NET 9+ Install-Package SkiaSharp Install-Package SkiaSharp.NativeAssets.Win32 Hiện tại mình vẫn...

Hướng dẫn sử dụng Refit

Refit là một thư viện cho C# giúp bạn tương tác với các API dựa trên HTTP một cách an toàn về kiểu dữ liệu. Refit được lấy cảm hứng từ thư viện Retrofit của Square, cho phép bạn chuyển đổi API của bạn thành live interface Rest API (Server): public interface IGitHubApi { [Get("/users/{user}")] Task<User> GetUser(string user); } Trường hợp không sử dụng Refit var gitHubApi = RestService.For$lt;IGitHubApi>("https://api.github.com"); var octocat = await gitHubApi.GetUser("octocat"); Trường hợp sử dụng Refit Khai báo lại interface public interface IGitHubApi { [Get("/users/{user}")] Task<User> GetUser(string user); } Đăng ký interface trong Program.cs (trường hợp xài Blazor) services .AddRefitClient<IGitHubApi>() .ConfigureHttpClient(c => c.BaseAddress = new Uri("https://api.github.com")); Tham khảo reactiveui/refit Making Faster API Calls Using Refit Rest Library (c-sharpcorner.com) Using...

iText: Merge 2 file PDF với perrmission View

iText là một thư viện Java có sẵn và miễn phí để tạo các tệp PDF. iText cũng có phiên bản .NET cũng được gọi là iText. Trong bài viết này, mình sẽ hướng dẫn bạn giải quyết vấn đề merge 2 file bị giới hạn Permission, chỉ cho phép AllowPrinting Bao gồm các bước: Tạo Console Application Thêm thư viện iText Tạo encrypt PDF file Merge file .NET Tạo Console Application (version .NET 7), cài đặt package iText7 dotnet add package itext7 Tạo 2 file PDF: 1 file giới hạn permission, 1 file không giới hạn permission static void CreateEncryptFile(string filepath) { var ownerPassword = "owner"; var writer = new PdfWriter(filepath, new WriterProperties() .SetStandardEncryption( null, Encoding.ASCII.GetBytes(ownerPassword), EncryptionConstants.ALLOW_PRINTING | iText.Kernel.Pdf.EncryptionConstants.ALLOW_FILL_IN, EncryptionConstants.ENCRYPTION_AES_128 | EncryptionConstants.DO_NOT_ENCRYPT_METADATA))...

TinyMCE: Cài đặt và sử dụng cơ bản - Part 1

TinyMCE được viết bằng ngôn ngữ JavaScript và phát hành dưới dạng phần mềm mã nguồn mở LGPL bởi Ephox. TinyMCE có khả năng chuyển đổi các trường HTML hoặc các thành phần HTML thành bộ biên tập văn bản. TinyMCE được thiết kế để dễ dàng tích hợp vào hệ thống quản lý nội dung bao gồm Django, Drupal, Joomla!, WordPress và SOY CMS. Cài đặt Sử dụng CDN: https://cdn.tiny.cloud/1/qagffr3pkuv17a8on1afax661irst1hbr4e6tbv888sz91jc/tinymce/6/tinymce.min.js Hoặc bạn download bản Community tại đây: https://www.tiny.cloud/get-tiny/ Cài đặt TinyMCE Truy cập trang web chính thức của TinyMCE tại đây và tải xuống TinyMCE SDK như bên dưới. Giải nén tệp đã tải xuống và sao chép thư mục tinymce bên trong dự án của bạn bên trong wwwroot->js->tinymce như bên dưới. Như vậy là bạn đã cài đặt xong TinyMCE Sử dụng TinyMCE Khai báo PostModel public class PostModel { public string Content { get; set; } } Trong HomeController, thêm Action TinyMceExample public IActionResult TinyMceExample() { //examp...

CKEditor: Cài đặt và upload ảnh trong ASP.NET Core - Part 1

CKEditor hiện nay là trình soạn thảo văn bản thông dụng và phổ biến nhất thế giới. Tuy nhiên, việc cái đặt CKEditor thì rất dễ dàng, nhưng mặc định, trình soạn thảo này chỉ hỗ trợ soạn thảo mà chưa có sẵn chức năng upload hình ảnh, file lên server. Trong bài viết này, mình sẽ hướng dẫn các bạn viết 1 Adapter để upload ảnh lên server Cài đặt CKEditor Thêm đoạn code sau vào HomeController: public class HomeController : Controller { private readonly ILogger<HomeController> _logger; private readonly IWebHostEnvironment _webHostEnvironment; public HomeController(ILogger<HomeController> logger, IWebHostEnvironment webHostEnvironment) { _logger = logger; _webHostEnvironment = webHostEnvironment; } public IActionResult CkEditor() { //example data var model = new PostModel { Content = "<p>Click on the Image Below to resize</p>" }; return View(model); } [HttpPost] public IActionResult UploadFile(IFormFile file) { var dir = Path....

Quill: Thêm công cụ mới vào Toolbar - Part 3

Ở bài viết này, chúng ta sẽ tìm hiểu sâu hơn vào toolbar. Sau đó thêm 1 nút trên toolbar cho phép người dùng làm 1 tính năng mới. Do Quill hỗ trợ toolbar bằng Javascript với HTML, nên chúng ta sẽ có ví dụ được viết bằng cả 2 cách Sử dụng Javascript Array Khai báo button mới trong toolbar container: Khai báo button trong toolbar container Khai báo event cho new button đó Khai báo css cho new button Khai báo button trong toolbar: ['<new-button-name>'] Để xử lý event khi user click vào button, bạn khai báo event cùng tên với button 'new-button-name': handlers: { "example1": function () { this.quill.insertText(this.quill.getSelection().index, 'Hello', 'link', 'https://nhatkyhoctap.blogspot.com'); console.log(this.quill.getText()) } } Hàm insertText insertText(index: Number, text: String, source: String = 'api'): Delta insertText(index: Number, text: String, format: String, value: any, ...

Quill: Tích hợp Quill vào ASP.NET Core - Part 1

Nhắc đến trình soạn thảo WYSIWYG, hẳn nhiều người sẽ nghĩ tới 2 công cụ phổ biến là CKEditor và TinyMCE. Nhưng mình thấy QuillJs có nhiều tính năng hay và khả năng tùy biến cao. Quill sử dụng Deltas format, một định dạng đơn giản để mô tả những nội dung và thay đổi trong Quills. Cài đặt Trang chủ: https://quilljs.com/ Include 2 file css và js vào đầu và cuối trên trang web <!-- Include stylesheet --> <link href="https://cdn.quilljs.com/1.3.7/quill.snow.css" rel="stylesheet"> <!-- Create the editor container --> <div id="editor"> <p>Hello World!</p> <p>Some initial <strong>bold</strong> text</p> <p><br></p> </div> <!-- Include the Quill library --> <script src="https://cdn.quilljs.com/1.3.7/quill.js"></script> <!-- Initialize Quill editor --> <script> // First matching element will be used var quill = new Quill('#edi...