Bài tập đã xong trên Jupyter, nhưng hệ thống nộp bài chỉ nhận PDF. Bạn chọn "Tải xuống dưới dạng PDF" hoặc chạy jupyter nbconvert --to pdf, và nhận về lỗi: không tìm thấy xelatex, hoặc thiếu pandoc. nbconvert tạo PDF thông qua LaTeX, nên nó cần một bản phân phối TeX đầy đủ được cài sẵn trước khi xuất ra được bất cứ thứ gì.
Look Scanned giờ có thể mở trực tiếp tệp .ipynb. Chọn notebook của bạn trên trang Jupyter Notebook sang PDF bản quét, và nó được dàn trang ngay trong trình duyệt: các ô Markdown, mã và kết quả đầu ra được lưu cùng tệp. Kiểm tra các trang trong bản xem trước rồi tải PDF xuống. Không cần cài đặt gì, và notebook không bị tải lên đâu cả.
Nói rõ ngay từ đầu: Look Scanned làm cho tài liệu trông như bản quét, và PDF cũng trông như vậy. Điều này rất hợp với một notebook phải nộp dưới dạng bản in đã quét, hoặc đơn giản là cần trông như giấy. Bạn có thể giảm xoay, độ mờ và nhiễu về 0 để trang sạch hơn, nhưng mỗi trang vẫn là một hình ảnh, nên văn bản trong PDF không thể chọn hay tìm kiếm.
Cách chuyển tệp .ipynb sang PDF bản quét
- Chạy notebook rồi lưu lại trong Jupyter, JupyterLab, VS Code hoặc Google Colab để kết quả đầu ra được lưu vào tệp. Trong Colab, dùng Tệp → Tải xuống → Tải tệp .ipynb xuống.
- Mở Jupyter Notebook sang PDF bản quét và chọn tệp
.ipynb. - Xem bản xem trước từng trang. Kiểm tra mã, bảng và biểu đồ, rồi đặt khổ giấy và lề.
- Điều chỉnh hiệu ứng quét. Giữ độ mờ và nhiễu ở mức thấp để mã cỡ chữ nhỏ vẫn đọc được. Mặc định các trang ở thang xám; chọn "Màu" để biểu đồ giữ nguyên màu sắc.
- Tạo PDF bản quét và tải xuống.
Nếu muốn dùng ảnh, bạn có thể xuất mỗi trang thành JPG hoặc PNG. Hướng dẫn chọn PDF, JPG và PNG của chúng tôi giải thích khi nào nên dùng định dạng nào. Nếu dùng Pro, Quét hàng loạt xử lý được nhiều tệp .ipynb cùng lúc.
Những gì xuất hiện trên trang
- Ô Markdown: tiêu đề, danh sách, bảng, liên kết và hình ảnh, kể cả hình được dán thẳng vào ô.
- Ô mã, được tô sáng cú pháp theo ngôn ngữ của notebook và có dấu nhắc
In [1]:. Dòng dài sẽ tự xuống dòng thay vì tràn ra ngoài trang. - Kết quả đầu ra đã lưu, dưới dấu nhắc
Out[1]:: văn bản được in ra, giá trị trả về, bảng HTML như DataFrame của pandas và hình ảnh, nên biểu đồ từ matplotlib hay seaborn đều hiện ra. - Lỗi, kèm theo traceback đầy đủ.
- Đầu ra terminal đúng như terminal hiển thị. Mã màu bị loại bỏ, và thanh tiến trình như tqdm chỉ giữ lại trạng thái cuối cùng thay vì mọi lần cập nhật.
Những điều cần biết trước khi bắt đầu
- Các ô không được chạy. Look Scanned đọc những gì đã lưu trong tệp; không có kernel. Một ô bạn chưa từng chạy, hoặc notebook được lưu sau khi xóa đầu ra, sẽ chỉ hiện mã mà bên dưới không có gì. Hãy chạy tất cả các ô và lưu lại trước khi chọn tệp.
- Công thức giữ nguyên mã nguồn TeX. Công thức viết dưới dạng
$…$hoặc$$…$$trong ô Markdown sẽ hiện đúng như khi gõ, ví dụ$\alpha + \beta$, chứ không được dàn thành công thức toán. - Đầu ra tương tác không hiển thị. Plotly, Bokeh và ipywidgets vẽ bằng JavaScript, mà JavaScript không được chạy. Bạn sẽ thấy phiên bản tĩnh mà notebook lưu kèm, thường chỉ là một dòng văn bản ngắn, hoặc không có gì cả. Biểu đồ được lưu dưới dạng hình ảnh, như của matplotlib, thì không có vấn đề gì.
- Notebook phải ở định dạng nbformat 4. Đây là định dạng mà các phiên bản hiện tại của Jupyter, JupyterLab, VS Code và Colab ghi ra. Notebook rất cũ ở nbformat 3 sẽ bị từ chối; hãy mở nó bằng Jupyter mới rồi lưu lại để nâng cấp.
- Bảng rộng sẽ bị ép hẹp. Bảng được co theo chiều rộng trang, nên DataFrame nhiều cột sẽ có các cột hẹp và chữ bị xuống dòng.
- Hãy giữ lại notebook. Giống như bản quét thật, PDF được tạo từ hình ảnh của các trang. Hãy giữ tệp
.ipynbđể chạy và chỉnh sửa mã.
Notebook được đọc và dàn trang ngay trên thiết bị của bạn, không tải lên máy chủ nào. Ngoại lệ duy nhất là ô Markdown hiển thị hình ảnh qua địa chỉ web: trình duyệt của bạn sẽ tải hình đó từ trang web lưu trữ nó, giống như Jupyter vẫn làm.
Khi nào nên dùng nbconvert
Nếu bạn cần văn bản chọn được, công thức được dàn trang hoặc một PDF giống hệt bản xuất của chính Jupyter, nbconvert vẫn là công cụ phù hợp. Hãy cài một bản phân phối TeX rồi chạy jupyter nbconvert --to pdf, hoặc dùng --to webpdf, vốn in qua trình duyệt Chromium không giao diện (headless) và hoàn toàn không cần LaTeX. Dù chọn cách nào, sau đó bạn vẫn có thể thêm hiệu ứng quét cho PDF đó trong Look Scanned.
Bài viết của bạn là tệp Markdown hoặc LaTeX chứ không phải notebook? Những tệp đó cũng mở được: xem Markdown và HTML sang PDF bản quét và LaTeX sang PDF bản quét.
Bạn có notebook cần nộp dưới dạng PDF? Thử ngay.