Giới thiệu
Mỗi lập trình viên đều gặp phải tình huống mà một người nào đó yêu cầu một điều tưởng chừng như đơn giản: "Chúng tôi chỉ cần hệ thống in các tệp PDF." Bạn đồng ý, nghĩ rằng đây là một công việc nhanh chóng. In PDF đã có từ lâu rồi, đúng không? Nhưng khi bạn bắt đầu, bạn sẽ nhanh chóng nhận ra rằng việc in PDF trong C# khó hơn nhiều so với vẻ bề ngoài.
Làm việc với PDF trong .NET có thể phức tạp. Hai công cụ phổ biến là PdfiumViewer và IronPrint.
-
PdfiumViewer là một thư viện PDF mã nguồn mở cho .NET, được xây dựng dựa trên PDFium của Google, cung cấp khả năng hiển thị tài liệu PDF với chất lượng gốc và có sẵn các điều khiển WinForms/WPF; nó lý tưởng khi bạn chỉ cần xem tài liệu với độ trung thực cao và một số tính năng in cơ bản trong ứng dụng máy tính để bàn và muốn một thứ miễn phí, nhẹ nhàng.
-
IronPrint là thư viện in PDF thương mại. Nó tập trung vào việc in trên nhiều nền tảng như Windows, macOS và cả thiết bị di động. Nó có các tính năng nâng cao như in lặng, kiểm soát máy in mặc định và các tác vụ bất đồng bộ. Tốt nhất cho các ứng dụng doanh nghiệp cần in đáng tin cậy và quy mô lớn.
Tóm lại:
- Chọn PdfiumViewer nếu bạn cần một trình xem miễn phí, mã nguồn mở với tính năng in cơ bản.
- Chọn IronPrint nếu bạn cần in đa nền tảng, hỗ trợ doanh nghiệp và kiểm soát in nâng cao.
Tại sao điều này quan trọng
Việc in các tệp PDF và hiển thị tệp PDF khó hơn những gì bạn nghĩ. Các động cơ hiển thị, API máy in, giấy phép và hỗ trợ hệ điều hành đều ảnh hưởng đến trải nghiệm cuối cùng. Nhiều lập trình viên hỏi: Tôi nên sử dụng công cụ miễn phí như PdfiumViewer hay trả tiền cho một tùy chọn thương mại như IronPrint?
Hướng dẫn này sẽ xem xét cả hai, cùng với mã mẫu. Chúng tôi sẽ so sánh các tính năng, hiệu suất, chi phí và các trường hợp sử dụng thực tế.
Tổng quan nhanh (mỗi sản phẩm là gì)
PdfiumViewer - In PDF trong C#
PdfiumViewer là một điều khiển và thư viện .NET được xây dựng trên động cơ PDFium (trình hiển thị PDF mã nguồn mở được sử dụng bởi Chromium). Nhiều nhánh và lớp bọc .NET tồn tại; PdfiumViewer cung cấp PdfDocument, PdfRenderer và các điều khiển xem để nhúng vào ứng dụng WinForms/WPF và cung cấp khả năng in nhiều tệp PDF thông qua đầu ra hiển thị gốc. Bởi vì đây là một lớp bọc, chức năng theo dõi những gì PDFium cung cấp và phụ thuộc vào các nhị phân PDFium gốc cho mỗi nền tảng/kiến trúc.
IronPrint
IronPrint là một thư viện in thương mại từ Iron Software, được thiết kế để mang lại khả năng in mạnh mẽ cho các lập trình viên .NET. IronPrint tập trung vào việc in (PDF, hình ảnh, tài liệu) và cung cấp các tính năng như in lặng, in bất đồng bộ, lớp Printer với tùy chọn hộp thoại và không hộp thoại, hỗ trợ đa nền tảng (Windows, macOS, mục tiêu di động), hợp nhất nhiều tệp PDF và tài liệu hướng dẫn và hỗ trợ chuyên dụng. Nó được định vị như một thư viện in tất cả trong một cho các ứng dụng sản xuất và được phân phối qua NuGet.
Phạm vi và cách sử dụng
PdfiumViewer
- Tốt nhất cho việc hiển thị PDF với độ chính xác cao. Tốt nếu người dùng nhấp "In" và sử dụng hộp thoại hệ thống.
IronPrint
- Tốt nhất cho các ứng dụng cần in ở chế độ nền (in lặng phía máy chủ, kiểm soát lập trình các cài đặt máy in, hàng đợi in, in bất đồng bộ hoặc nền và các mục tiêu in cụ thể cho nền tảng), trên nhiều nền tảng hoặc không cần tương tác của người dùng.
Hỗ trợ nền tảng
-
PdfiumViewer: Chủ yếu là Windows. Hỗ trợ đa nền tảng là có thể nhưng yêu cầu nỗ lực và quản lý nhị phân.
-
IronPrint: Được xây dựng cho việc sử dụng đa nền tảng. Hoạt động với MAUI, Avalonia, máy chủ web và thiết bị di động.
Chất lượng hiển thị tài liệu PDF
PdfiumViewer/PDFium:
- Sử dụng trình hiển thị PDFium của Google — cùng động cơ mà Chromium sử dụng — vì vậy độ trung thực hiển thị (hình dạng văn bản, phông chữ, đồ họa vector, độ trong suốt, chú thích) là xuất sắc và nhất quán với các trình duyệt hiện đại. Việc hiển thị của PDFium là gốc và được tinh chỉnh để có độ chính xác trên màn hình và in. Nếu việc hiển thị chính xác các tài liệu PDF là rất quan trọng, PDFium là một lựa chọn hàng đầu.
IronPrint:
- IronPrint tập trung vào việc in hơn là trở thành động cơ hiển thị. Để in PDF, nó sẽ dựa vào việc hiển thị nội bộ và ngăn xếp in của hệ điều hành để cung cấp đầu ra chính xác. Các sản phẩm thương mại của Iron Software (IronPDF để tạo tài liệu PDF, IronPrint) thường nhằm mục tiêu đạt được kết quả chất lượng cao và cung cấp các trình trợ giúp để đảm bảo phông chữ và bố cục được chuyển đổi chính xác sang máy in. Đối với các ứng dụng mà độ trung thực hiển thị phải khớp với chế độ xem PDF của trình duyệt, trình hiển thị trực tiếp của PDFium có thể có lợi thế; đối với việc in sản xuất (kích thước giấy, duplex, lề), IronPrint cung cấp nhiều trợ giúp thực tế và các tính năng hướng về máy in.
Tính năng - In tệp PDF
PdfiumViewer
-
In thông qua các hộp thoại Windows.
-
In lặng thì khó.
-
Kiểm soát máy in nâng cao cần thêm mã.
IronPrint
-
Được thiết kế cho việc in lập trình.
-
In lặng, tác vụ bất đồng bộ, chọn máy in.
-
Xử lý máy in mạng, in hàng loạt và công việc máy chủ.
Kinh nghiệm lập trình viên khi làm việc với tệp PDF
PdfiumViewer
- Dễ dàng thêm vào các ứng dụng Windows: có các gói NuGet tồn tại, và bạn nhận được các điều khiển xem có sẵn cùng với một API nhỏ. Nếu nhóm của bạn thoải mái với việc xử lý gói phụ thuộc gốc (các nhị phân PDFium cho mỗi kiến trúc mục tiêu), điều này rất đơn giản. Tính chất mã nguồn mở khiến việc gỡ lỗi và tùy chỉnh dễ dàng hơn — bạn có thể kiểm tra hoặc nhánh mã khi cần. Ví dụ sử dụng: tải PdfDocument, đính kèm PdfRenderer vào điều khiển WinForms, hiển thị các trang của tệp PDF và phản hồi các hành động của người dùng.
IronPrint
- SDK thương mại với tài liệu chính thức, ví dụ và hỗ trợ khách hàng. Việc tích hợp thường nhanh chóng cho các nền tảng được hỗ trợ vì IronPrint nhằm mục tiêu trừu tượng hóa sự khác biệt của máy in giữa các nền tảng. Nhược điểm: bạn đang sử dụng một sản phẩm mã nguồn đóng và phải tuân theo các điều khoản giấy phép. Tài liệu bao gồm các ví dụ cho việc in lặng, cấu hình máy in và xử lý các điểm cụ thể giữa các nền tảng — hữu ích trong các nhóm doanh nghiệp thích hỗ trợ từ nhà cung cấp.
Giấy phép, chi phí và hỗ trợ
-
PdfiumViewer: Mã nguồn mở (các nhánh khác nhau với các giấy phép khác nhau; kiểm tra dự án cụ thể). Miễn phí để sử dụng, sửa đổi và phân phối theo giấy phép của dự án. Không có hỗ trợ thương mại chính thức trừ khi bạn thuê một bên thứ ba hoặc duy trì nó trong nội bộ. Điều này hấp dẫn cho các dự án khởi nghiệp, nhưng có nghĩa là bạn phải chịu trách nhiệm về việc bảo trì và xử lý các vấn đề thời gian chạy gốc.
-
IronPrint: Giấy phép thương mại (có sẵn khóa thử nghiệm), hỗ trợ trả phí và SLA tùy thuộc vào kế hoạch. Giá trị của nó là hỗ trợ chính thức, bảo trì và các tính năng cho doanh nghiệp. Dự kiến chi phí giấy phép cho triển khai sản xuất. Iron Software cũng xuất bản các so sánh giữa IronPrint và các sản phẩm khác của Iron, giải thích vị trí và sự khác biệt giữa các nền tảng. Nếu việc mua sắm yêu cầu hỗ trợ từ nhà cung cấp, IronPrint phù hợp với mô hình đó.
Hiệu suất
PdfiumViewer:
- Rất nhanh trong việc hiển thị. Sử dụng mã C++ tối ưu hóa. Hoạt động tốt cho việc xem từng trang.
IronPrint:
- Tối ưu hóa cho việc in hàng loạt lớn. Xử lý các tác vụ bất đồng bộ và thử lại. Tốt nhất cho các tình huống máy chủ và doanh nghiệp.
An ninh
-
PdfiumViewer: Giống như bất kỳ thư viện gốc nào, hãy lưu ý về các CVE và cập nhật cho PDFium — phân tích PDF là một bề mặt tấn công phổ biến. Nếu xử lý các tệp PDF không đáng tin cậy, hãy chạy trong một môi trường được tăng cường và giữ cho các nhị phân PDFium gốc được cập nhật. Các dự án mã nguồn mở có thể không phát hành các bản vá bảo mật nhanh chóng như các nhà cung cấp thương mại, vì vậy hãy theo dõi các thông báo từ PDFium.
-
IronPrint: Các nhà cung cấp thương mại thường duy trì các bản cập nhật bảo mật và có thể cung cấp hướng dẫn và thời gian biểu. Tuy nhiên, luôn xem xét tài liệu bảo mật của nhà cung cấp và kiểm tra với các chính sách của bạn. Đối với việc in phía máy chủ, hãy đảm bảo cách ly thích hợp và rằng các công việc in không thể được sử dụng để lấy thông tin nhạy cảm.
Cộng đồng và bảo trì
PdfiumViewer:
- Được điều hành bởi cộng đồng. Nhiều nhánh khác nhau. Chất lượng thay đổi. Bạn có thể cần phải chịu trách nhiệm cho các dự án dài hạn.
IronPrint:
- Được hỗ trợ bởi Iron Software. Cập nhật thường xuyên và hỗ trợ chính thức.
Ví dụ mã
PdfiumViewer (WinForms, đơn giản)
// Cài đặt gói PdfiumViewer.
using PdfiumViewer;
var pdf = PdfDocument.Load("invoice.pdf");
var viewer = new PdfViewer(); // Điều khiển WinForms từ PdfiumViewer, khởi tạo thư viện PDF
viewer.Document = pdf; // Ví dụ: xử lý sự kiện nhấp chuột trên viewer
viewer.MouseClick += (object sender, MouseEventArgs e) =>
{
Console.WriteLine($"Viewer clicked at X={e.X}, Y={e.Y}");
};
// Thêm viewer vào form của bạn và nó sẽ hiển thị các trang, cung cấp phóng to, v.v. // Lặp qua các trang một cách rõ ràng
for (int i = 0; i < pdf.PageCount; i++)
{
var page = pdf.Render(i, 300, 300, true);
// 'page' bây giờ là một System.Drawing.Image (hình ảnh bitmap của trang PDF đó)
// Bạn có thể xem trước, lưu hoặc in hình ảnh này nếu cần.
}
// Để in:
pdf.Print(); // mặc định sử dụng hộp thoại máy in
IronPrint (ví dụ khái niệm)
// Cài đặt gói IronPrint
using IronSoftware.Print;
var printer = new Printer();
printer.PrintFile("report.pdf", showDialog: false); // in lặng nếu được phép
// Hoặc sử dụng các API tác vụ bất đồng bộ và API chọn máy in được cung cấp bởi IronPrint.
Tình huống thực tế
-
Sử dụng PdfiumViewer nếu:
- Bạn đang xây dựng một ứng dụng máy tính để bàn Windows (WinForms/WPF) và cần một trình xem PDF độ trung thực cao.
- Bạn muốn mã nguồn mở mà bạn có thể kiểm tra hoặc mở rộng.
- Bạn thoải mái trong việc quản lý các nhị phân PDFium cho các nền tảng mục tiêu.
- Bạn chủ yếu cần hiển thị và in theo yêu cầu của người dùng (luồng công việc hộp thoại in).
-
Sử dụng IronPrint nếu:
- Bạn cần in lập trình đa nền tảng (in lặng, di động, MAUI/Avalonia, máy chủ web).
- Bạn muốn hỗ trợ nhà cung cấp, bảo trì và API in tập trung vào doanh nghiệp.
- Ứng dụng của bạn phải xử lý đáng tin cậy việc in hàng loạt, máy in mạng hoặc in trong môi trường máy chủ.
- Bạn muốn một SDK thương mại duy nhất trừu tượng hóa sự khác biệt giữa các nền tảng.
Mẹo kiểm tra
-
Nếu đánh giá PdfiumViewer, hãy tạo một ma trận kiểm tra các tệp PDF điển hình của bạn (phông chữ, hình ảnh, độ trong suốt, biểu mẫu) và so sánh đầu ra hiển thị với đầu ra mong đợi của bạn (cả trên màn hình và in). Kiểm tra trên tất cả các kiến trúc CPU/OS mục tiêu để xác nhận chiến lược đóng gói nhị phân gốc.
-
Nếu đánh giá IronPrint, hãy đăng ký dùng thử, xác thực quy trình in lặng với cơ sở hạ tầng in của bạn, kiểm tra thông lượng công việc và xác minh mô hình giấy phép cho triển khai của bạn (máy chủ không đầu, VMs lưu trữ đám mây, v.v.). Đọc tài liệu IronPrint về các sắc thái giữa các nền tảng và các chiến lược triển khai được khuyến nghị.
Chi phí sở hữu
Hãy nhớ xem xét những chi phí không hiển nhiên:
-
Đối với PdfiumViewer: thời gian phát triển để quản lý các nhị phân gốc, khả năng cần các bản vá bảo mật, và hỗ trợ nội bộ cho các lỗi cạnh.
-
Đối với IronPrint: phí giấy phép, các điều khoản giấy phép theo máy chủ hoặc theo lập trình viên, nhưng giảm bảo trì nội bộ và SLA từ nhà cung cấp. Đánh giá tổng chi phí trong 1-3 năm dựa trên khối lượng in mong đợi và mức độ hỗ trợ yêu cầu.
Kết luận
-
Nếu bạn muốn độ trung thực hiển thị gốc trong một trình xem máy tính để bàn Windows và thích mã nguồn mở, hãy bắt đầu với PdfiumViewer (hoặc một nhánh được duy trì cho .NET Core). Nó nhanh chóng, chính xác và chi phí thấp để có được.
-
Nếu sản phẩm của bạn phải in đáng tin cậy ở quy mô lớn, từ máy chủ, di động, hoặc khách hàng đa hệ điều hành, với in lặng và hỗ trợ chính thức từ nhà cung cấp, hãy đánh giá IronPrint — thử nghiệm và kiểm tra máy in cũng như công việc in của bạn từ đầu đến cuối. Đối với quy trình in doanh nghiệp, IronPrint có thể sẽ tiết kiệm thời gian kỹ thuật và giảm rủi ro hoạt động. Bắt đầu với IronPrint ngay hôm nay!