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.
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
- #, ##, ### · tiêu đề (h1, h2, h3)
- **văn bản** · văn bản đậm
- *văn bản* · văn bản nghiêng
- [liên kết](url) · siêu liên kết
- - mục · danh sách không thứ tự
- 1. mục · danh sách có thứ tự
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:
- A4: 210 × 297 mm (8,3 × 11,7 in). Mặc định toàn cầu ngoài Bắc Mỹ.
- A3: 297 × 420 mm (11,7 × 16,5 in). Poster, trải trang.
- A5: 148 × 210 mm (5,8 × 8,3 in). Tập sách nhỏ, zine.
- Letter: 8,5 × 11 in (215,9 × 279,4 mm). Mặc định tại Mỹ, Canada và Philippines.
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; orphans và widows 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
- Tránh ảnh raster quá lớn. Một bức ảnh full-page đơn lẻ có thể thêm hàng trăm kilobyte. Thay đổi kích thước ảnh trước khi nhúng, hoặc dùng
max-widthtrong style nội tuyến để giới hạn kích thước hiển thị. - Bảng không nên bị ngắt qua trang: bọc chúng bằng
<div style="break-inside: avoid">. - Khối code cần monospace. Trình duyệt dùng font monospace của hệ điều hành khi không có gì cụ thể hơn được đặt, Consolas trên Windows, Menlo trên macOS, DejaVu Mono trên Linux. Đầu ra sẽ trông hơi khác nhau trên mỗi hệ điều hành.
- Kiểm tra với độ dài nội dung thực tế. Tài liệu thử ngắn không sao nhưng layout đôi khi trông khác ở 10+ trang.
- Letter so với A4. Nếu bạn chia sẻ với người nhận ở Mỹ, chọn Letter; phần còn lại của thế giới mong đợi A4. Kích thước không khớp không phá vỡ gì nhưng gây ra lề nhỏ / sự kỳ lạ về thu phóng khi in.
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:
- Tiêu đề:
# H1đến###### H6. - Đậm và nghiêng:
**bold**,*italic*,***both***. - Danh sách:
- itemcho không thứ tự,1. itemcho có thứ tự. - Liên kết và ảnh:
[text](url)và. Luôn bao gồm alt text. - Bảng: các hàng phân tách bằng pipe với hàng phân cách gạch ngang.
- Khối code có hàng rào: ba dấu backtick cộng tag ngôn ngữ tùy chọn.
- Blockquote:
> text.
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.