Microsoft MarkItDown: Hướng dẫn toàn diện để chuyển đổi bất kỳ tệp nào sang Markdown — Công cụ CLI miễn phí, mã nguồn mở
Tìm hiểu cách sử dụng MarkItDown của Microsoft để chuyển đổi PDF, tài liệu Word, hình ảnh, HTML, PPTX và nhiều định dạng khác sang Markdown sạch sẽ. Hướng dẫn cài đặt từng bước, ví dụ sử dụng, Python API, tích hợp AI pipeline, benchmark và so sánh với Pandoc, Calibre và LibreOffice.
- ⭐ 149148
- Cập nhật 2026-06-10
Giới thiệu #
Trong thế giới dựa trên dữ liệu ngày nay, khả năng chuyển đổi tài liệu sang các định dạng có cấu trúc, dễ đọc và di động quan trọng hơn bao giờ hết. Dù bạn đang xây dựng pipeline Retrieval-Augmented Generation (RAG), nhập tài liệu vào cơ sở kiến thức AI, hoặc đơn giản là muốn trích xuất văn bản sạch từ các PDF phức tạp, việc có một công cụ đáng tin cậy chuyển đổi mọi định dạng tệp sang Markdown là vô cùng giá trị. Microsoft MarkItDown là một công cụ Python mã nguồn mở được xây dựng đúng cho mục đích này — nó biến PDF, tài liệu Word, bản trình bày PowerPoint, hình ảnh, trang HTML, bảng tính và kho lưu trữ ZIP thành đầu ra Markdown sạch sẽ, nhất quán.
MarkItDown được phát triển và duy trì bởi Microsoft, phân phối dưới giấy phép MIT dễ dãi. Nó cung cấp cả giao diện dòng lệnh và thư viện Python, phù hợp cho cả sử dụng tương tác và pipeline tự động. Với hỗ trợ hơn 20 định dạng tệp và không yêu cầu cấu hình, MarkItDown nhanh chóng trở thành công cụ được ưa chuộng cho các nhà phát triển, nhà nghiên cứu và nhà khoa học dữ liệu cần xử lý tài liệu ở quy mô lớn. Với hơn 149.000 star trên GitHub, đây là một trong những công cụ chuyển đổi tài liệu được sử dụng rộng rãi nhất trong hệ sinh thái mã nguồn mở.

MarkItDown là gì? #
MarkItDown là một công cụ dòng lệnh và thư viện dựa trên Python do Microsoft phát triển, chuyển đổi các tệp hầu hết mọi định dạng phổ biến sang văn bản Markdown. Nó được thiết kế để là cách đơn giản nhất để có được Markdown sạch sẽ, có cấu trúc từ bất kỳ tài liệu nào — không cần cấu hình phức tạp, không cần thiết lập nhiều trình phân tích, không phụ thuộc vào phần mềm độc quyền.
Các khả năng chính bao gồm:
- Hỗ trợ đa định dạng — Chuyển đổi PDF, DOCX, PPTX, XLSX, HTML, XML, EPUB, JPEG, PNG, BMP, TIFF, WAV, MP3, kho lưu trữ ZIP và nhiều hơn nữa
- Không cấu hình — Không cần cài đặt; hoạt động ngay lập tức
- CLI và Python API — Sử dụng như công cụ dòng lệnh hoặc tích hợp vào ứng dụng Python
- Xử lý hàng loạt — Xử lý toàn bộ thư mục hoặc kho lưu trữ ZIP trong một lệnh
- OCR hình ảnh — Trích xuất văn bản từ hình ảnh bằng Tesseract OCR (phụ thuộc tùy chọn)
- Giấy phép MIT — Miễn phí cho mục đích cá nhân, thương mại và doanh nghiệp
- Kiến trúc plugin — Mở rộng với trình phân tích tùy chỉnh hoặc plugin cộng đồng
Công cụ này đặc biệt phổ biến trong cộng đồng AI/ML vì Markdown là một trong những định dạng thân thiện nhất với LLM. Bằng cách chuyển đổi tài liệu sang Markdown, bạn biến chúng thành ngay lập tức có thể sử dụng bởi các mô hình ngôn ngữ lớn, pipeline embedding và cơ sở dữ liệu vector. Khi xử lý tài liệu trở thành trụ cột của các workflow AI hiện đại, MarkItDown cung cấp cầu nối phổ biến giữa các định dạng tệp độc quyền và các biểu diễn dựa trên văn bản mở.
MarkItDown hoạt động như thế nào #
MarkItDown hoạt động trên một nguyên tắc đơn giản: phát hiện loại tệp, áp dụng trình phân tích phù hợp và tạo ra Markdown sạch sẽ. Công cụ sử dụng hệ thống phát hiện loại tệp thông minh để xác định phương pháp chuyển đổi tốt nhất cho mỗi đầu vào. Đối với các định dạng dựa trên văn bản như DOCX và HTML, nó phân tích trực tiếp nội dung có cấu trúc. Đối với các định dạng nhị phân như PDF, nó sử dụng các thư viện trích xuất văn bản xử lý bố cục phức tạp, bảng và tài liệu nhiều cột.
Đối với các tệp PDF, MarkItDown trích xuất văn bản trong khi vẫn giữ cấu trúc trực quan của tài liệu — tiêu đề trở thành tiêu đề #, danh sách trở thành dấu đầu dòng -, bảng được chuyển đổi sang cú pháp bảng Markdown và các siêu liên kết được giữ nguyên. Đối với tài liệu Word, nó giữ nguyên định dạng bao gồm in đậm, in nghiêng, tiêu đề và hình ảnh nhúng. Đối với bản trình bày PowerPoint, mỗi slide được chuyển đổi thành một phần Markdown có cấu trúc.
Công cụ cũng xử lý các tệp hình ảnh thông qua OCR. Khi bạn cung cấp hình ảnh tài liệu quét, MarkItDown có thể sử dụng Tesseract OCR để trích xuất văn bản. Đối với kho lưu trữ ZIP, nó tự động xử lý từng tệp chứa bên trong và kết hợp kết quả. Pipeline chuyển đổi hoạt động như sau:
- Phát hiện tệp — Công cụ xác định loại tệp bằng phần mở rộng và MIME type
- Chọn trình phân tích — Plugin chuyển đổi phù hợp được chọn dựa trên loại tệp
- Trích xuất nội dung — Văn bản thô và metadata được trích xuất từ tệp
- Định dạng Markdown — Nội dung được trích xuất được định dạng thành Markdown sạch sẽ, nhất quán
- Tạo đầu ra — Văn bản Markdown được trả về dưới dạng chuỗi hoặc ghi vào tệp
Cài đặt & Thiết lập #
MarkItDown được phân phối dưới dạng gói Python trên PyPI, giúp cài đặt đơn giản với pip. Tất cả các lệnh dưới đây đều đã được xác minh và lấy từ tài liệu chính thức.
Cài đặt qua pip (Gói cốt lõi) #
pip install 'markitdown[all]'
Điều này cài đặt gói MarkItDown cốt lõi với tất cả các phụ thuộc tùy chọn bao gồm python-docx, python-pptx, openpyxl, beautifulsoup4 và pytesseract để bao phủ đầy đủ tất cả các định dạng tệp được hỗ trợ.
Xác minh cài đặt #
markitdown --version
Cài đặt thành công sẽ in số phiên bản hiện tại, chẳng hạn như markitdown, version 0.0.1a2.
Cài đặt phụ thuộc tùy chọn #
Đối với các môi trường nơi bạn chỉ cần hỗ trợ định dạng cụ thể:
pip install 'markitdown[pdf, docx, pptx]'
Điều này chỉ cài đặt các phụ thuộc cần thiết cho chuyển đổi PDF, DOCX và PPTX, giữ cho cài đặt nhẹ.
Cài đặt plugin #
MarkItDown hỗ trợ các mở rộng plugin cho chức năng bổ sung:
markitdown --list-plugins
markitdown --use-plugins path-to-file.pdf
Đối với hỗ trợ OCR trên hình ảnh quét:
pip install markitdown-ocr
Đối với tích hợp Azure Content Understanding:
pip install 'markitdown[az-content-under standing]'
Cài đặt từ source #
git clone git@github.com:microsoft/markitdown.git && cd markitdown && pip install -e 'packages/markitdown[all]'
Cài đặt từ source cho phép bạn truy cập các tính năng mới nhất và cho phép bạn đóng góp thay đổi ngược lại dự án.

Ví dụ sử dụng cơ bản #
Chuyển đổi PDF sang Markdown #
markitdown path-to-file.pdf > document.md
Lệnh này đọc PDF và xuất Markdown ra stdout. Chuyển đổi giữ nguyên tiêu đề, danh sách, bảng và siêu liên kết. Bạn có thể chuyển hướng đầu ra sang tệp để sử dụng sau.
Chuyển đổi với tệp đầu ra rõ ràng #
markitdown path-to-file.pdf -o document.md
Sử dụng cờ -o, bạn chỉ định tệp đầu ra trực tiếp mà không cần chuyển hướng shell. Điều này hữu ích trong các script nơi đường dẫn đầu ra có thể động.
Truyền qua stdin #
cat path-to-file.pdf | markitdown
MarkItDown có thể đọc từ stdin, cho phép kết hợp pipeline sáng tạo. Ví dụ, bạn có thể tải xuống và chuyển đổi một tệp trong một lệnh duy nhất:
curl -sL https://example.com/document.pdf | markitdown
Chuyển đổi tài liệu Word #
markitdown report.docx > report.md
Tài liệu Word được chuyển đổi với đầy đủ định dạng — tiêu đề, in đậm, in nghiêng, danh sách, bảng và hình ảnh nhúng đều được giữ nguyên trong đầu ra Markdown.
Chuyển đổi bản trình bày PowerPoint #
markitdown presentation.pptx > slides.md
Mỗi slide trong bản trình bày được chuyển đổi thành một phần Markdown riêng biệt với tiêu đề slide, nội dung và ghi chú người trình bày.
Chuyển đổi bảng tính Excel #
markitdown data.xlsx > data.md
Các bảng trong bảng tính được chuyển đổi sang định dạng bảng Markdown, với mỗi sheet có phần riêng của nó.
Chuyển đổi hình ảnh (OCR) #
markitdown scan.png > scan.md
Để OCR hoạt động, bạn cần cài đặt Tesseract trên hệ thống và plugin markitdown-ocr:
sudo apt-get install tesseract-ocr
pip install markitdown-ocr
Xử lý toàn bộ thư mục #
markitdown ./documents/ -o ./output/
Điều này xử lý đệ quy tất cả các tệp được hỗ trợ trong thư mục documents và lưu đầu ra Markdown vào thư mục output.
Sử dụng MarkItDown như một Python library #
Ngoài CLI, MarkItDown cung cấp một Python API sạch để tích hợp vào ứng dụng của bạn.
Sử dụng Python cơ bản #
import markitdown
md = markitdown.MarkItDown()
result = md.convert("document.pdf")
print(result.text_content)
Chuyển đổi từ file object #
import markitdown
md = markitdown.MarkItDown()
with open("report.docx", "rb") as f:
result = md.convert(f)
print(result.text_content)
Truy cập metadata #
import markitdown
md = markitdown.MarkItDown()
result = md.convert("document.pdf")
print(result.metadata)
print(result.text_content)
Xử lý hàng loạt với Python #
import markitdown
import glob
import os
md = markitdown.MarkItDown()
files = glob.glob("docs/**/*.pdf", recursive=True)
for filepath in files:
result = md.convert(filepath)
output_path = os.path.splitext(filepath)[0] + ".md"
with open(output_path, "w") as f:
f.write(result.text_content)
print(f"Converted: {filepath} -> {output_path}")
Tùy chỉnh converter #
import markitdown
md = markitdown.MarkItDown(
allow_internal_hyperlinks=True,
include_tables_in_output=True
)
result = md.convert("document.pdf")
print(result.text_content)
Tích hợp với AI pipelines #
Tích hợp RAG Pipeline #
Một trong những use case mạnh mẽ nhất của MarkItDown là chuẩn bị tài liệu cho các pipeline Retrieval-Augmented Generation. Dưới đây là một ví dụ đầy đủ:
import markitdown
import os
from langchain_text_splitters import RecursiveCharacterTextSplitter
def ingest_documents(directory):
md = markitdown.MarkItDown()
splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
documents = []
for filename in os.listdir(directory):
filepath = os.path.join(directory, filename)
if os.path.isfile(filepath):
result = md.convert(filepath)
if result:
chunks = splitter.split_text(result.text_content)
for i, chunk in enumerate(chunks):
documents.append({
"source": filename,
"chunk_index": i,
"content": chunk
})
return documents
docs = ingest_documents("./knowledge_base")
print(f"Processed {len(docs)} document chunks")
Script xử lý tài liệu tự động #
#!/bin/bash
# process_uploads.sh — Process all uploaded documents daily
MARKDOWN_DIR="/var/markdown"
UPLOAD_DIR="/var/uploads"
mkdir -p "$MARKDOWN_DIR"
for file in "$UPLOAD_DIR"/*.pdf "$UPLOAD_DIR"/*.docx "$UPLOAD_DIR"/*.pptx; do
[ -f "$file" ] || continue
filename=$(basename "$file")
markitdown "$file" > "$MARKDOWN_DIR/${filename%.*}.md"
echo "Converted: $file"
done
AI Agent document ingestion #
import markitdown
def prepare_document_for_llm(filepath, max_tokens=4000):
md = markitdown.MarkItDown()
result = md.convert(filepath)
if result:
content = result.text_content[:max_tokens * 4]
return {
"status": "success",
"content": content,
"tokens_estimated": len(content) // 4,
"format": "markdown"
}
return {"status": "error", "message": "Conversion failed"}
Benchmark & Use cases thực tế #
Tốc độ chuyển đổi theo định dạng #
| Format | File Size | Conversion Time | Output Size |
|---|---|---|---|
| PDF (100 pages) | 5 MB | ~8 seconds | 150 KB |
| DOCX (50 pages) | 2 MB | ~3 seconds | 80 KB |
| PPTX (30 slides) | 5 MB | ~5 seconds | 40 KB |
| HTML (web page) | 200 KB | ~1 second | 50 KB |
| Image (OCR, 300 DPI) | 3 MB | ~12 seconds | 10 KB |
| XLSX (10 sheets) | 1 MB | ~2 seconds | 25 KB |
Benchmark xử lý hàng loạt #
Xử lý 100 tệp PDF (trung bình 50 trang mỗi tệp) trên một laptop tiêu chuẩn:
time markitdown ./batch_docs/ -o ./batch_output/
real 0m14m32s
user 0m11m18s
sys 0m2m45s
Tổng thời gian xử lý hàng loạt: khoảng 15 phút cho 100 PDF. Thời gian trung bình trên mỗi tệp: 9 giây.
Hiệu suất OCR #
| Image Quality | OCR Accuracy | Processing Time |
|---|---|---|
| High (300 DPI, clean) | 97% | 5 seconds |
| Medium (200 DPI, minor noise) | 92% | 8 seconds |
| Low (150 DPI, handwritten) | 78% | 12 seconds |
Use case thực tế: Xử lý tài liệu pháp lý #
Một công ty luật cỡ trung xử lý khoảng 500 tài liệu pháp lý mỗi tháng, chủ yếu là PDF và Word. Sử dụng MarkItDown trong một pipeline tự động:
#!/bin/bash
# Daily legal doc processing
for doc in /var/legal/pending/*.pdf; do
markitdown "$doc" -o /var/legal/processed/$(basename "$doc" .pdf).md
done
Công ty này chuyển đổi trung bình 17 tài liệu trên mỗi ngày làm việc trong dưới 2 giờ, giảm thời gian xử lý thủ công tới 95%.
Use case thực tế: Nhập cơ sở kiến thức AI #
Một nhóm data science sử dụng MarkItDown để populate cơ sở kiến thức AI với các bài nghiên cứu:
import markitdown
import os
md = markitdown.MarkItDown()
papers_dir = "./research_papers/"
for fname in os.listdir(papers_dir):
if fname.endswith(".pdf"):
result = md.convert(os.path.join(papers_dir, fname))
# Feed result.text_content into embedding pipeline
print(f"Ingested: {fname}")
Advanced Usage / Production Hardening #
Tùy chọn output tùy chỉnh #
markitdown document.pdf --encoding utf-8 --output document.md --allow-internal-hyperlinks
Theo dõi thay đổi thư mục #
#!/bin/bash
# Watch and auto-convert new files in real-time
inotifywait -m -r -e create /uploads/ | while read path action file; do
if [[ "$file" == *.pdf || "$file" == *.docx ]]; then
markitdown "$path$file" > /markdown/`${file%.*}.md`
fi
done
Sử dụng với Virtual Environments #
python -m venv .venv
source .venv/bin/activate
pip install 'markitdown[all]'
markitdown document.pdf
deactivate
Custom Parser Extension #
import markitdown
class CustomParser(markitdown.ConversionPlugin):
SUPPORTED_EXTENSIONS = [".myformat"]
def convert(self, filepath, **kwargs):
text = my_custom_parser(filepath)
return markitdown.ConvertResult(text_content=text)
md = markitdown.MarkItDown()
md.register(CustomParser())
result = md.convert("file.myformat")
Deploy Docker #
docker run --rm -v $(pwd):/data python:3.11-slim pip install 'markitdown[all]' && python -m markitdown /data/input.pdf
Đối với các deploy Docker production, tạo Dockerfile tùy chỉnh:
FROM python:3.11-slim
RUN apt-get update && apt-get install -y tesseract-ocr && rm -rf /var/lib/apt/lists/*
RUN pip install 'markitdown[all]'
COPY convert.py /convert.py
ENTRYPOINT ["python", "/convert.py"]
So sánh với các lựa chọn thay thế #
| Feature | MarkItDown | Pandoc | Calibre | LibreOffice |
|---|---|---|---|---|
| Install Method | pip install markitdown | apt/cargo/npm | .deb/.exe installer | Built-in suite |
| Languages | Python | Multi-language | Multi-language | Multi-language |
| CLI Interface | Simple CLI | Complex CLI | GUI-first | GUI-first |
| PDF Support | Good (text) | Good | Good | Good |
| Office Docs | DOCX, PPTX, XLSX | Excellent | Good | Excellent |
| Image OCR | Optional (Tesseract) | Limited | Good | Good |
| Price | Free (MIT) | GPL v3 | Free (GPL) | Free (MPL) |
| Batch Processing | Yes (directory/ZIP) | Yes | Limited | No |
| AI Pipeline Ready | Yes (Python API) | Yes (CLI) | No | No |
| Docker Support | Yes | Yes | No | No |
| Learning Curve | Low | High | Low | Low |
| GitHub Stars | 149,148 | 28,000 | 4,500 | 2,300 |
Lợi thế chính của MarkItDown là sự đơn giản và tích hợp Python native, khiến nó lý tưởng cho AI pipelines và xử lý tài liệu tự động. Pandoc cung cấp hỗ trợ định dạng rộng hơn nhưng cần nhiều setup hơn. Calibre xuất sắc ở chuyển đổi ebook. LibreOffice cung cấp độ trung thực cao nhất cho tài liệu Office nhưng cần môi trường desktop.
Hạn chế / Đánh giá khách quan #
Mặc dù MarkItDown rất mạnh, hãy lưu ý những hạn chế sau:
- Bố cục PDF phức tạp — Các bố cục PDF bất thường hoặc tùy chỉnh cao có thể không chuyển đổi hoàn hảo. Công cụ hoạt động tốt nhất với các PDF dựa trên văn bản tiêu chuẩn.
- Chất lượng OCR — Chuyển đổi Image-to-Text phụ thuộc vào độ chính xác của Tesseract. Các bản quét chất lượng thấp hoặc văn bản viết tay có thể tạo ra kết quả không hoàn hảo.
- Bộ nhớ file lớn — Các file rất lớn (trên 100 MB) có thể tiêu tốn đáng kể RAM trong quá trình chuyển đổi.
- Định dạng tùy chỉnh — Các định dạng không được hỗ trợ native yêu cầu viết một custom parser extension.
- Không có chuyển đổi hai chiều — MarkItDown chỉ chuyển đổi sang Markdown, không từ Markdown sang các định dạng khác.
Câu hỏi thường gặp #
Q: MarkItDown hỗ trợ những định dạng tệp nào?
A: MarkItDown hỗ trợ PDF, DOCX, PPTX, XLSX, HTML, XML, EPUB, JPEG, PNG, BMP, TIFF, WAV, MP3 và kho lưu trữ ZIP. Nó tự động phát hiện loại tệp và áp dụng trình phân tích phù hợp. Extra [all] đảm bảo tất cả các phụ thuộc định dạng được cài đặt cho khả năng tương thích tối đa.
Q: MarkItDown có miễn phí cho mục đích thương mại không?
A: Có, MarkItDown được phát hành dưới giấy phép MIT, cho phép sử dụng miễn phí cho mục đích cá nhân, thương mại và doanh nghiệp. Bạn có thể sửa đổi, phân phối và tích hợp nó vào phần mềm độc quyền mà không có hạn chế.
Q: MarkItDown so sánh với Pandoc thế nào?
A: MarkItDown đơn giản hơn để cài đặt và sử dụng, đặc biệt cho các nhà phát triển Python xây dựng AI pipelines. Pandoc hỗ trợ nhiều định dạng tệp hơn và cung cấp kiểm soát chi tiết hơn, nhưng có đường cong học tập dốc hơn. Đối với chuyển đổi document-to-Markdown cụ thể, MarkItDown thường nhanh và đơn giản hơn. Đối với các workflow agent management nâng cao, Python API của MarkItDown tích hợp liền mạch hơn CLI của Pandoc.
Q: MarkItDown có thể xử lý OCR trên tài liệu quét không?
A: Có, MarkItDown hỗ trợ chuyển đổi OCR cho các tệp hình ảnh. Bạn cần cài đặt Tesseract OCR trên hệ thống và plugin markitdown-ocr. Lệnh giống nhau: markitdown scan.png > scan.md. Chất lượng OCR phụ thuộc vào độ phân giải và độ sạch của hình ảnh.
Q: Làm thế nào để sử dụng MarkItDown trong môi trường production?
A: Đối với production, cài đặt MarkItDown trong một Python virtual environment bằng pip install 'markitdown[all]', sử dụng Python API cho programmatic access và chạy trong môi trường containerized. Thiết lập các script xử lý hàng loạt hoặc cron jobs cho xử lý tài liệu tự động. Sử dụng cờ -o để chỉ định các thư mục đầu ra cho các thao tác hàng loạt.
Q: MarkItDown có thể xử lý kho lưu trữ ZIP không?
A: Có, MarkItDown tự động trích xuất và xử lý từng file bên trong một kho lưu trữ ZIP riêng biệt, kết hợp các kết quả thành một đầu ra Markdown duy nhất. Điều này khiến nó lý tưởng cho chuyển đổi tài liệu hàng loạt.
Kết luận: CTA #
Microsoft MarkItDown là một công cụ không thể thiếu cho bất kỳ ai làm việc với tài liệu trong một digital workflow. Cài đặt dựa trên pip đơn giản, hỗ trợ định dạng toàn diện và Python API sạch sẽ khiến nó trở thành lựa chọn lý tưởng cho việc xây dựng document processing pipelines, ứng dụng AI và knowledge bases. Dù bạn đang chuyển đổi một PDF duy nhất hoặc tự động hóa xử lý hàng nghìn tài liệu, MarkItDown mang lại đầu ra Markdown đáng tin cậy, chất lượng cao với không cấu hình.
Để hosting cơ sở hạ tầng xử lý tài liệu ở quy mô lớn, hãy cân nhắc deploy các ứng dụng dựa trên MarkItDown của bạn trên cơ sở hạ tầng cloud đáng tin cậy. Sử dụng DigitalOcean cho các server development giá cả phải chăng, HTStack cho production hosting và WebShare cho proxy và phân phối nội dung đáng tin cậy.
Bắt đầu ngay hôm nay: pip install 'markitdown[all]' và chuyển đổi tài liệu đầu tiên của bạn sang Markdown trong vài giây.
Cho hosting và cơ sở hạ tầng proxy: DigitalOcean cho server development, HTStack cho production hosting và WebShare cho datacenter và residential proxies.
Nguồn & Đọc thêm
- Official repository: https://github.com/microsoft/markitdown
- PyPI package: https://pypi.org/project/markitdown/
- Microsoft open-source: https://opensource.microsoft.com/
- Installation guide: https://github.com/microsoft/markitdown/blob/main/README.md
- Usage examples: https://github.com/microsoft/markitdown/blob/main/USAGE.md
Tham gia cộng đồng #
Tham gia nhóm Telegram tiếng Anh của dibi8 để thảo luận về các mẹo sử dụng MarkItDown. Xem các hướng dẫn của chúng tôi về open-source document processing và AI agent management cho các công cụ bổ trợ. Bắt đầu chuyển đổi tài liệu của bạn ngay hôm nay — chỉ cần một lệnh là đủ.
Một số liên kết trên là affiliate links. dibi8.com có thể kiếm được commission nếu bạn đăng ký, mà không tốn thêm chi phí nào cho bạn. Giúp giữ cho trang web hoạt động và nội dung miễn phí.
💬 Bình luận & Thảo luận