Chuyển HTML sang PDF
Biến file HTML — hoặc mã HTML bạn dán vào — thành PDF có phân trang trông giống hệt trang web: flexbox, grid, gradient, hình ảnh và kiểu chữ đều giữ nguyên.
- Xóa ngay sau khi chuyển đổi
- Truyền tải mã hóa, xóa ngay lập tức
- Không cần đăng ký, không watermark
Cách hoạt động
Thêm HTML
Thả file .html, hoặc dán mã HTML vào ô.
Chọn trang
Khổ giấy, hướng giấy và lề — được áp dụng dưới dạng CSS in thật.
Chuyển đổi và tải xuống
Được hiển thị và phân trang đúng như Print → Save as PDF, với chữ thật chọn được.
Trang được phép truy cập những gì, và CSS kiểm soát những gì
Quá trình chuyển đổi không có quyền truy cập mạng và không chạy script, và cả hai đều là quyết định bảo mật chứ không phải tính năng còn thiếu. Một bộ chuyển đổi tải bất cứ thứ gì trang được gửi lên yêu cầu sẽ dễ dàng bị lợi dụng để trỏ tới những địa chỉ chỉ máy chủ của chúng tôi thấy được, và một bộ chuyển đổi chạy script thì đang chạy code của người lạ. Vì vậy stylesheet liên kết tới CDN sẽ không được tải, ảnh có địa chỉ web thông thường không hiện, web font bị âm thầm thay thế, và trang tự vẽ bằng JavaScript sẽ được chuyển đổi theo đúng những gì mã HTML có trước khi bất cứ thứ gì chạy. Cách khắc phục luôn giống nhau: đưa CSS vào trong một khối style và nhúng ảnh dưới dạng data URI. Trình duyệt có sẵn tính năng này — “Save Page As → Web Page, Complete” trong Firefox, hoặc “Save as MHTML” — và một trang đã lưu thành một file duy nhất sẽ được chuyển đổi trung thực.
CSS in mới thực sự quyết định kết quả, và đó là điều thứ hai đáng biết. Trang được dàn như khi in, nên khối @media print có hiệu lực còn stylesheet thông thường cho màn hình thì có thể không — vì thế một trang có quy tắc in ẩn thanh điều hướng sẽ chuyển đổi rất đẹp, còn trang không có thì kéo theo toàn bộ khung giao diện của website. @page kiểm soát khổ giấy: kích thước, hướng giấy và lề được đọc từ đó. break-before, break-after và break-inside: avoid quyết định chỗ chia trang, nên một bảng không được tách đôi hay một phần phải bắt đầu ở trang mới hoàn toàn nằm trong tầm kiểm soát của bạn.
Nền là thứ kinh điển hay bị bỏ sót. Trình duyệt mặc định không in màu nền và ảnh nền, nên một phần đầu trang màu tối có thể ra màu trắng trừ khi stylesheet có -webkit-print-color-adjust: exact — chỉ một dòng, và đó là khác biệt giữa một tài liệu mang thương hiệu và một tài liệu trơn trụi. Chữ vẫn là chữ thật, liên kết vẫn hoạt động, và tiêu đề có thể thành bookmark PDF ở những chỗ mã HTML dùng thẻ tiêu đề thật.
Nếu máy chủ của chúng tôi không truy cập được, trang sẽ báo cho bạn và dựng lại tài liệu ngay trên máy, giữ lại chữ, ảnh và bố cục đơn giản nhưng đơn giản hóa mọi thứ cần một bước dàn trang thật — trong đó có grid, flexbox, float và định vị. Tài liệu đơn giản sẽ ra gần như y hệt; tài liệu được thiết kế công phu thì không.
Khi bạn cần công cụ khác
Để chuyển một URL trực tiếp — việc mà trang này cố ý không làm — cùng bộ máy hiển thị chạy trên máy chủ của chúng tôi cũng chạy được trên máy bạn: chrome --headless --disable-gpu --print-to-pdf=out.pdf https://example.com tải trang với đầy đủ kết nối mạng, cả script lẫn mọi thứ. Đó là toàn bộ khác biệt, và là lý do để dùng nó.
Để kiểm soát thật sự phần đầu trang, chân trang, số trang và lề, WeasyPrint và Prince triển khai đúng đặc tả CSS Paged Media: đầu trang chạy từ @top-center, bộ đếm trang, chú thích cuối trang và tham chiếu chéo trỏ tới số trang. WeasyPrint miễn phí và là thứ hầu hết quy trình làm tài liệu kỹ thuật sử dụng. Chrome hầu như không hỗ trợ những thứ đó, nên một báo cáo tự động có “Trang 3 / 12” ở chân trang cần đến một trong hai công cụ này chứ không phải trang này.
Câu hỏi thường gặp
Kết quả có giống hệt trang của tôi không?
Có — kết quả đúng như Print → Save as PDF tạo ra. Flexbox, grid, float, gradient, bóng đổ, SVG và web font đều ra đúng như trên màn hình.
Mã HTML của tôi có bị lưu ở đâu không?
Mã HTML được gửi đến máy chủ của chúng tôi qua kết nối mã hóa, được chuyển đổi và bị xóa ngay khi file PDF được tạo xong — không có gì được lưu trữ, ghi log hay chia sẻ. Nếu máy chủ đó không truy cập được, công cụ sẽ chuyển sang bộ chuyển đổi riêng của nó và báo cho bạn biết.
JavaScript có được chạy không?
Không, và đó là cố ý — trang được hiển thị chỉ từ mã HTML và CSS. Chạy script không đáng tin trên máy chủ sẽ là một lỗ hổng bảo mật, và một tài liệu đáng để chuyển đổi thì không nên phải tự dựng lên lúc chạy.
Tôi có dùng được ảnh hoặc stylesheet bên ngoài không?
Không — quá trình chuyển đổi bị cách ly khỏi mạng vì lý do bảo mật. Hãy đưa CSS vào trực tiếp và nhúng ảnh dưới dạng data URI; mọi thứ tự chứa đủ đều hiển thị hoàn hảo.
Chữ có chọn được không?
Có. PDF chứa chữ và đồ họa vector thật — không phải ảnh chụp màn hình — nên vẫn sắc nét ở mọi mức phóng to và có thể chọn, tìm kiếm và sao chép.
Chỗ ngắt trang được quyết định thế nào?
Bằng CSS in thật: nội dung chảy qua các trang, và các quy tắc page-break-before, page-break-after và page-break-inside trong mã của bạn được tuân theo đúng như trình duyệt tuân theo khi in.
Nên biết: Script không được chạy và quá trình chuyển đổi không có quyền truy cập mạng — hãy đưa style vào trực tiếp và nhúng ảnh dưới dạng data URI. Không tải được URL trực tiếp; hãy lưu trang thành file trước. Nếu máy chủ của chúng tôi không truy cập được, phương án dự phòng trên trình duyệt giữ chữ và bố cục đơn giản nhưng đơn giản hóa CSS nâng cao.
Công cụ PDF khác
Chuyển PDF sang HTML
Một trang web độc lập, đầy đủ
Chuyển TXT sang PDF
Văn bản hoặc ghi chú thành PDF gọn gàng
Chuyển Word sang PDF
DOCX sang PDF, đúng như Word xuất ra
Chuyển EPUB sang PDF
Sách điện tử sang PDF, mục lục bấm được
Chuyển Excel sang PDF
XLSX sang PDF, đúng như Excel in ra
Chuyển PowerPoint sang PDF
Slide sang PDF, đúng như PowerPoint xuất ra