Bộ chuyển đổi Markdown sang PDF miễn phí

Chuyển Markdown sang PDF với xem trước trực tiếp. Tùy chỉnh kích thước trang và lề. Chạy hoàn toàn trong trình duyệt của bạn.

Dữ liệu của bạn không bao giờ rời khỏi thiết bị

Về Markdown

Markdown là một ngôn ngữ đánh dấu nhẹ chuyển văn bản thuần thành HTML đã định dạng. Nó được sử dụng rộng rãi cho tài liệu, blog và viết kỹ thuật vì dễ đọc và dễ viết.

Cú pháp Markdown

Câu hỏi thường gặp

Tôi có thể dùng HTML trong Markdown không?

Có. Markdown hỗ trợ HTML nội tuyến, vì vậy bạn có thể nhúng trực tiếp các thẻ HTML vào Markdown của bạn.

Những kích thước trang nào được hỗ trợ?

A4, Letter, A3 và A5 được hỗ trợ. Lề có thể điều chỉnh từ 0 đến 50 milimet.

Việc tạo PDF có phải ở phía máy khách không?

Có. Tất cả việc chuyển đổi diễn ra trong trình duyệt của bạn. Markdown của bạn không bao giờ được gửi đến máy chủ của chúng tôi.

Bộ chuyển đổi này hoạt động như thế nào

Một công cụ Markdown sang PDF trên trình duyệt chạy pipeline hai giai đoạn. Đầu tiên, nguồn Markdown được phân tích thành HTML bởi một parser Markdown JavaScript (trang này dùng marked.js, một parser nhỏ, nhanh, cấp phép MIT được duy trì bởi tổ chức MarkedJS). Kết quả là HTML bạn thấy trong bản xem trước trực tiếp. Thứ hai, HTML đó được chuyển đổi thành PDF, trang này dùng html2pdf.js, vốn bản thân bọc hai thư viện: html2canvas sơn lại DOM đã kết xuất lên canvas ngoài màn hình bằng cách đọc các style đã tính toán, và jsPDF ghi hình ảnh canvas đó vào một đối tượng trang PDF và lưu file.

Bản thân các thư viện được tải từ CDN công khai, nhưng Markdown của bạn được phân tích và PDF được tạo hoàn toàn trên thiết bị của bạn. Trình duyệt là bộ kết xuất; không có gì rời khỏi trang.

Lịch sử ngắn của PDF

PDF bắt đầu từ đề xuất nội bộ của đồng sáng lập Adobe John Warnock vào năm 1991. Ông muốn một cách chia sẻ tài liệu trông giống nhau trên mọi màn hình, mọi máy in, mọi hệ điều hành. Bài báo ngắn bắt đầu tất cả được đặt tên là «The Camelot Project», và Adobe công bố đặc tả PDF đầu tiên vào ngày 15 tháng 6 năm 1993 cùng với Adobe Acrobat 1.0. Adobe quản lý định dạng trong mười lăm năm trước khi xuất bản PDF 1.7 lên ISO. ISO 32000-1:2008 biến PDF thành tiêu chuẩn mở có thể dùng tự do không cần cấp phép, đây là ngày quan trọng nhất để hiểu tại sao mọi công cụ, trình duyệt và hệ điều hành hiện đại đều có thể viết PDF ngày nay. ISO 32000-2:2017 (PDF 2.0) bổ sung chữ ký số được cải thiện, xử lý Unicode tốt hơn và các móc accessibility chính thức. Phiên bản đã sửa chữa năm 2020 được Hiệp hội PDF cung cấp tải về miễn phí vào tháng 4 năm 2023, loại bỏ rào cản chi phí cuối cùng.

PDF về cơ bản là một container có cấu trúc của các đối tượng được sắp xếp để truy cập ngẫu nhiên, đồ họa vector (đường thẳng và đường cong Bézier), hình ảnh raster (thường là JPEG hoặc nén zlib), font nhúng (Type 1, TrueType, OpenType), và bảng tham chiếu chéo cho phép người đọc nhảy đến bất kỳ đâu mà không cần phân tích toàn bộ file. Có một số tiêu chuẩn con PDF đáng biết: PDF/A (lưu trữ, ISO 19005, 2005, cấm mọi thứ có thể phá vỡ khả năng đọc lâu dài), PDF/X (sản xuất in với quản lý màu sắc khóa chặt), và PDF/UA (Universal Accessibility, ISO 14289-1, 2012, yêu cầu PDF được gắn thẻ đầy đủ với thứ tự đọc, alt text, font nhúng ánh xạ sang Unicode, và ngôn ngữ tài liệu được khai báo).

Kích thước trang

Dòng chữ A đến từ ISO 216 (chính thức hóa năm 1975, có thể truy nguyên đến DIN 476 của Đức từ năm 1922). Mọi khổ A đều có cùng tỉ lệ √2 (≈ 1,414), nghĩa là giảm một nửa cạnh dài của A3 tạo ra hai A4 không lãng phí, và giảm một nửa A4 tạo ra hai A5. A0 có diện tích đúng bằng 1 m². Các khổ Bắc Mỹ (Letter, Legal, Tabloid) bỏ qua √2 và bắt nguồn từ các quy ước làm giấy thời thuộc địa:

Lề 10 mm mặc định chật hơn so với mặc định của Microsoft Word là 1 inch (25,4 mm) nhưng hoạt động tốt cho tài liệu nặng code hoặc nhiều bảng nơi bạn muốn mọi cột vừa vặn.

Lưu ý thật thà: văn bản không thể chọn

Vì bộ chuyển đổi kết xuất HTML lên canvas và nhúng canvas đó làm ảnh vào bên trong PDF, văn bản kết quả không thể chọn, không thể tìm kiếm và không thể truy cập bằng screen reader. Đó là hình ảnh trung thực về những gì trình duyệt sẽ vẽ, nhưng là hình ảnh. Điều này ổn cho các artifact trực quan như thẻ công thức, mood board hay tờ rơi in; không phù hợp cho tài liệu pháp lý, CV mà nhà tuyển dụng muốn quét từ khóa, hay bất cứ thứ gì cần vượt qua kiểm tra accessibility (WCAG / Section 508 / EN 301 549).

Nếu bạn cần văn bản có thể chọn hoặc PDF có gắn thẻ, các công cụ phù hợp là Pandoc (kết hợp với LaTeX, wkhtmltopdf hoặc weasyprint) hoặc Adobe Acrobat Pro với các công cụ gắn thẻ. Pandoc là tiêu chuẩn vàng cho sản xuất tài liệu nghiêm túc, có thể cài qua Homebrew hoặc Chocolatey, chạy từ command line, cung cấp kiểm soát typography cấp LaTeX đầy đủ với chú thích, thư mục tài liệu tham khảo, trích dẫn, dấu nháy thông minh và ligature đúng chuẩn.

Ép ngắt trang

html2pdf.js tôn trọng các thuộc tính CSS print-fragmentation. Vì Markdown cho phép bạn nhúng HTML nội tuyến, bạn có thể ép ngắt trang bằng cách dán:

<div style="break-before: page;"></div>

Bí danh cũ page-break-before: always cũng hoạt động. Các thuộc tính hữu ích khác: break-inside: avoid trên bảng hoặc khối code ngăn nó bị chia tách qua các trang; orphanswidows kiểm soát số dòng phải giữ cùng nhau ở cuối hoặc đầu trang.

Mẹo để có đầu ra sạch

Markdown phổ biến cho loại đầu ra này

Cú pháp được hỗ trợ là tập con GitHub-flavoured, tiêu đề, đậm và nghiêng, danh sách, bảng, khối code với tô sáng cú pháp đơn giản, blockquote, liên kết và ảnh. Chú thích và sơ đồ Mermaid không được hỗ trợ trong build này. Nhắc nhanh các cơ bản:

Nhắc nhở về nguồn gốc của Markdown: John Gruber và Aaron Swartz thiết kế nó vào năm 2004 như một «định dạng văn bản thuần túy dễ đọc, dễ viết». Nỗ lực chuẩn hóa CommonMark bắt đầu vào năm 2014, do John MacFarlane (Pandoc), Jeff Atwood (Stack Overflow / Discourse) và các kỹ sư từ GitHub, Reddit và Meteor dẫn đầu. GitHub Flavored Markdown là superset của CommonMark bổ sung bảng, gạch ngang, task list và autolink.

Câu hỏi thêm

Tại sao văn bản trong PDF của tôi bị mờ?

Vì bộ chuyển đổi rasterize trang ở mật độ hiển thị của trình duyệt. Trên màn hình non-Retina, hình ảnh kết quả có thể trông mềm khi phóng to, vì canvas chụp ở khoảng 96 DPI thay vì 300 DPI thông thường cho bản in. Cách sửa là kết xuất ở mật độ cao hơn, html2canvas chấp nhận tùy chọn scale (thường là 2× để có chất lượng đầu ra Retina), với chi phí là kích thước file lớn hơn.

Tại sao khối code của tôi không có tô màu cú pháp?

marked.js không tích hợp tô sáng cú pháp theo mặc định, nó chỉ bọc các khối có hàng rào trong các thẻ <pre><code class="language-…">. Tô sáng thực sự cần một thư viện riêng như Prism.js hoặc highlight.js, mà build này không bao gồm. PDF sẽ hiển thị code của bạn bằng monospace nhưng không có chủ đề màu xanh lá và đỏ mà bạn có thể mong đợi từ GitHub.

Tôi có thể bao gồm chú thích hoặc mục lục không?

Chú thích (tham chiếu [^1] và định nghĩa [^1]: definitions) là tính năng render của GitHub nằm ngoài đặc tả GFM tiêu chuẩn và không được phân tích bởi build này. Mục lục yêu cầu hoặc là extension Markdown (như plugin TOC của markdown-it) hoặc viết tay danh sách liên kết. Cho cả hai, Pandoc với cờ --toc là công cụ phù hợp.

PDF có được gắn thẻ cho accessibility không?

Không. Đầu ra là PDF hình ảnh trang không có thẻ ngữ nghĩa, alt text hay gợi ý thứ tự đọc, nó sẽ không vượt qua kiểm tra tuân thủ PDF/UA. Đối với công việc yêu cầu accessibility (biểu mẫu chính phủ, tài liệu khu vực công, bất cứ thứ gì thuộc WCAG / EN 301 549 / Section 508), dùng Pandoc + LaTeX với bộ lọc accessibility, công cụ gắn thẻ của Adobe Acrobat Pro, hoặc pipeline WeasyPrint phía máy chủ.

Có dữ liệu nào được gửi lên máy chủ không?

Không. Văn bản không bao giờ rời khỏi trình duyệt của bạn. Marked.js phân tích Markdown cục bộ, html2canvas vẽ lên canvas ngoài màn hình, jsPDF xây dựng đối tượng PDF, và trình duyệt lưu nó. Bản thân các thư viện tải từ CDN công khai với kiểm tra subresource-integrity; chúng được tải một lần rồi được cache. Sau khi trang đã tải, nó hoạt động ngoại tuyến.

Công cụ liên quan