Chuyển HTML sang PDF online
Tải lên một tệp .html duy nhất và chúng tôi in nó bằng headless Chrome trên máy chủ của mình, kéo về mọi stylesheet, hình ảnh và web font được liên kết bằng URL https tuyệt đối. Không có ô nhập URL: mọi thứ mà tệp của bạn tham chiếu bằng đường dẫn tương đối sẽ không tải được, vì vậy hãy nhúng sẵn các tài nguyên đó trước khi tải lên.
Đã bắt đầu tải xuống!
Bạn đánh giá trải nghiệm của mình với MiConvert như thế nào?
Điều gì xảy ra với HTML của bạn
HTML được viết cho màn hình có thể cuộn vô tận và tự dàn lại ở mọi chiều rộng. PDF thì ngược lại: một bản chụp cố định mà bạn có thể gửi email, lưu trữ, ký hoặc in. Vì thế mọi người chuyển hóa đơn, xác nhận đơn hàng, báo cáo được sinh tự động, mẫu email và các bài viết đã lưu, những nội dung mà mã HTML đã hoàn chỉnh và chỉ còn thiếu bản in.
Tệp trước tiên được làm sạch bằng DOMPurify, công cụ này loại bỏ các phần tử object, embed, applet cùng các thuộc tính xử lý sự kiện nội tuyến. Sau đó, mọi stylesheet, hình ảnh, font và script qua http hoặc https nằm trên host công khai đều được tải về và nhúng vào tài liệu, với giới hạn 20 MB cho mỗi tài nguyên và 30 giây cho mỗi lần tải. Khi việc nhúng hoàn tất, mọi truy cập mạng tiếp theo đều bị chặn, trang được tải ở khung hiển thị 1280 x 900 và Chrome in nó ra.
Bản in dùng CSS cho màn hình, không phải CSS cho in, nên khối @media print bị bỏ qua và PDF trông giống như trang hiển thị trong cửa sổ trình duyệt. Văn bản vẫn chọn được, font được nhúng dưới dạng tập con, và các siêu liên kết ra ngoài vẫn bấm được. Thứ bị mất là những gì trình duyệt phải tạo ra lúc chạy: trong thử nghiệm của chúng tôi, nội dung do một script nội tuyến ghi ra đã không xuất hiện, nên các bảng, biểu đồ hoặc ngày tháng do JavaScript tạo sẽ bị thiếu.
Kích thước và cách phân trang do độ dài nội dung quyết định và bạn không chọn được. Nội dung ngắn hơn khoảng mười lăm trang Letter được in thành một trang duy nhất cao bằng toàn bộ nội dung, không có lề. Nội dung dài hơn được phân trang theo khổ US Letter với lề nửa inch. Quy tắc CSS @page size bị bỏ qua, nên khai báo A4 trong stylesheet không thay đổi gì. Một hệ quả cần tính trước: ở chế độ một trang, chỉ phần nội dung trước dấu ngắt trang CSS đầu tiên được in, nên một tài liệu ngắn có dùng page-break-before hoặc break-before sẽ mất toàn bộ phần sau đó.
Công cụ này phù hợp với lập trình viên muốn kiểm tra mẫu in, với bất kỳ ai cần một biên nhận hoặc báo cáo tự sinh dưới dạng tài liệu, và với những người lưu trữ một trang đã được lưu sẵn thành tệp độc lập.
Cách chuyển HTML sang PDF
- Lưu trang thành một tệp .html duy nhất. Phần mở rộng .htm bị từ chối khi tải lên, vì vậy hãy đổi tên thành .html trước khi bắt đầu; lưu ý rằng kiểu lưu trang thành một thư mục gồm nhiều tài nguyên rời sẽ không dùng được ở đây.
- Đảm bảo mọi tài nguyên đều truy cập được: liên kết https tuyệt đối trên host công khai, hoặc nhúng CSS, hình ảnh và font ngay trong tệp dưới dạng data URI. Các tham chiếu tương đối như img/logo.png hay đường dẫn tệp cục bộ không thể phân giải, vì bản tải lên chỉ là một tệp đơn lẻ trong thư mục tạm.
- Kiểm tra xem có nội dung quan trọng nào được JavaScript vẽ ra không. Nếu có, hãy sao chép mã đã kết xuất từ công cụ Inspect (DevTools) của trình duyệt và tải lên phần đó.
- Tải tệp lên, tối đa 10 tệp trong một lần với khách và tài khoản miễn phí, mỗi tệp tạo ra một PDF riêng. Khách bị giới hạn 50 MB cho mỗi tệp.
- Chạy chuyển đổi. Phần lớn trang trên công cụ này xong trong vài giây; tài liệu rất nặng bị cắt ở giới hạn kết xuất 120 giây và 150 MB HTML sau khi nhúng.
- Tải PDF về trong khoảng bốn giờ và kiểm tra việc phân trang, nhất là nếu mã đánh dấu của bạn có các dấu ngắt trang tường minh.
Chi tiết về công cụ chuyển đổi
- Được in bằng headless Chrome, nên bố cục HTML5 và CSS3 hiện đại, kể cả flexbox và grid, hiển thị đúng như trình duyệt thể hiện
- Stylesheet, hình ảnh và web font từ xa được liên kết bằng URL tuyệt đối sẽ được tải về và nhúng vào trước khi in
- Mã đánh dấu được làm sạch và mạng bị khóa hẳn sau khi nhúng xong, nên bước in không thể gọi ra bên ngoài
- Siêu liên kết ra ngoài vẫn bấm được, văn bản vẫn chọn được, font được nhúng dạng tập con trong PDF
- Xử lý tài liệu tới khoảng 150 MB sau khi nhúng và tối đa hai triệu thẻ
- Chuyển nhiều tệp HTML trong một lần, mỗi tệp một PDF
Câu hỏi về chuyển HTML sang PDF
Tôi có dán được URL của trang web không?
Không. Công cụ này chuyển đổi tệp bạn tải lên, nên không có ô nhập URL hay website. Nếu muốn chụp lại một trang đang chạy, trước tiên hãy lưu nó trong trình duyệt, giữ ở dạng một tệp .html duy nhất và đảm bảo các tài nguyên cần thiết là liên kết https tuyệt đối trước khi tải lên.
Stylesheet và hình ảnh bên ngoài có tải được không?
Có, khi chúng là URL http hoặc https tuyệt đối trên host công khai. Mỗi tài nguyên được tải về với giới hạn 20 MB, thời gian 30 giây, rồi nhúng vào tài liệu. Địa chỉ trên mạng nội bộ hoặc mạng cục bộ không được tải, và các đường dẫn tương đối như ./style.css không thể phân giải, nên chúng hiện ra không được áp kiểu CSS hoặc thành ảnh lỗi.
JavaScript có chạy không?
Đừng trông cậy vào điều đó. Truy cập mạng bị ngắt trước khi in, và trong thử nghiệm, nội dung do script nội tuyến ghi ra chưa bao giờ vào được PDF. Mọi thứ sinh ra lúc chạy, kể cả biểu đồ, kết quả dựng từ template và ảnh tải trễ (lazy-load), nên được đưa sẵn vào mã đánh dấu trước khi bạn tải lên.
Tôi chọn được A4, lề hoặc dấu ngắt trang không?
Không. Tài liệu ngắn được in thành một trang duy nhất cao bằng nội dung và không có lề, còn tài liệu dài in theo khổ US Letter với lề nửa inch. Quy tắc @page trong CSS của bạn bị bỏ qua. Nếu cần A4, hãy phân trang lại PDF đã xong bằng một công cụ thiết lập trang.
Tôi dùng page-break-before và mất một nửa tài liệu. Vì sao?
Đó là chế độ một trang: với nội dung ngắn, chỉ phần trước dấu ngắt đầu tiên được in. Hiện chưa có tùy chọn để đổi chế độ. Một cách xử lý thực tế là tách tài liệu thành mỗi phần một tệp .html, chuyển đổi theo lô rồi ghép các PDF lại.
Vì sao PDF không khớp với stylesheet dành cho in của tôi?
Vì trang được kết xuất bằng kiểu dành cho màn hình. Khối @media print, kể cả các mẹo ẩn thanh điều hướng và hiện URL của liên kết, không có tác dụng. Nếu muốn giữ thiết kế bản in, hãy chuyển những quy tắc đó vào stylesheet thường hoặc vào khối style nội tuyến trước khi chuyển đổi.
Chuyển đổi bị quá thời gian hoặc thất bại. Giờ phải làm gì?
Hãy thử lại. Các lỗi chúng tôi thấy ở cặp định dạng này là bộ kết xuất không khởi động kịp trong khung 30 giây khởi chạy và đôi khi sập trong lúc in; cả hai thường hết sau lần thử thứ hai. Thất bại lặp lại cho thấy tài liệu quá lớn hoặc quá phức tạp: hãy cắt bớt mã đánh dấu không dùng, giảm kích thước các ảnh nhúng khổng lồ, hoặc tách tệp.
Tệp của tôi có riêng tư không, và các bạn giữ nó bao lâu?
Việc chuyển đổi diễn ra trên máy chủ của chúng tôi qua HTTPS, không phải trong trình duyệt của bạn. Tệp HTML tải lên bị xóa ngay khi tác vụ kết thúc, còn PDF vẫn tải về được qua một liên kết không thể đoán được trong khoảng bốn giờ, sau đó bị xóa tự động. Tên tệp, kích thước và kết quả được ghi log, và tài khoản đã đăng nhập sẽ có một mục trong lịch sử chuyển đổi.