Chuyển đổi PDF sang Base64

Mã hóa tài liệu PDF thành Base64 để dùng trong yêu cầu API, email hoặc nhúng vào HTML. Trình xem tích hợp hiển thị nội dung PDF để bạn xác nhận đúng tệp trước khi sao chép kết quả.

Chạy hoàn toàn trong trình duyệt của bạn. Không có gì được tải lên.

Cách sử dụng

  1. Thả tệp PDF vào vùng tải lên hoặc nhấp để chọn tệp (tối đa 100 MB).
  2. Xem bản xem trước để chắc chắn bạn đã chọn đúng tài liệu.
  3. Chọn Base64 thuần cho yêu cầu API, hoặc data URI để nhúng PDF vào trang web.
  4. Sao chép kết quả hoặc tải xuống dưới dạng tệp .txt.

Gửi PDF qua API JSON

JSON không có kiểu dữ liệu nhị phân, nên các REST API nhận tài liệu thường nhận chúng dưới dạng chuỗi Base64. Các nền tảng chữ ký điện tử, hệ thống lập hóa đơn và hóa đơn điện tử, dịch vụ in ấn và gửi thư, công cụ OCR và kho lưu trữ tài liệu thường nhận PDF theo cách này, trong một trường như content, file hoặc documentBase64, còn tên tệp nằm ở một trường riêng. Một số dịch vụ cũng trả về PDF theo cách tương tự; công cụ Base64 sang PDF sẽ chuyển chúng trở lại thành tệp.

Hãy gửi Base64 thuần không có dấu xuống dòng, trừ khi tài liệu API quy định khác, vì nhiều API từ chối giá trị vẫn còn tiền tố data:application/pdf;base64,. Cũng nên lưu ý giới hạn kích thước yêu cầu: một tệp PDF 7,5 MB sẽ thành khoảng 10 MB Base64.

Nhận biết PDF ở dạng Base64

Tệp PDF bắt đầu bằng các ký tự %PDF-, theo sau là số phiên bản. Khi mã hóa Base64, các byte này luôn tạo ra chuỗi bắt đầu bằng JVBERi0. Một chuỗi dài bắt đầu bằng JVBER trong phản hồi API, cột cơ sở dữ liệu hay tệp nhật ký gần như chắc chắn là một tệp PDF. Bạn cũng có thể kiểm tra như vậy trước khi gửi dữ liệu: nếu chuỗi của bạn bắt đầu bằng bất kỳ ký tự nào khác, có thể bạn đã mã hóa nhầm dữ liệu, hoặc đã mã hóa hai lần.

Nhúng PDF vào HTML

Data URI đặt toàn bộ tệp PDF bên trong trang HTML, không cần lưu trữ một tệp riêng:

<embed src="data:application/pdf;base64,JVBERi0..." type="application/pdf" width="100%" height="600">

<iframe src="data:application/pdf;base64,JVBERi0..." width="100%" height="600"></iframe>

Cách này hoạt động trên trình duyệt máy tính có trình xem PDF tích hợp, nhưng có những hạn chế. Nhiều trình duyệt di động hoàn toàn không hiển thị PDF bên trong trang. Chrome và một số trình duyệt khác cũng chặn trang điều hướng toàn bộ thẻ đến một URL data:, nên một liên kết hoặc lệnh gọi window.open trỏ tới URI data:application/pdf có thể mở ra thẻ trống hoặc không có tác dụng gì. Để mở PDF trong thẻ mới bằng JavaScript, hãy chuyển Base64 thành Blob URL. Với tài liệu lớn hơn vài megabyte, URL tệp thông thường thường là lựa chọn tốt hơn.

Mã hóa PDF bằng mã

# Python: tạo phần thân yêu cầu JSON
import base64, json
from pathlib import Path

pdf_b64 = base64.b64encode(Path('invoice.pdf').read_bytes()).decode('ascii')
body = json.dumps({'filename': 'invoice.pdf', 'content': pdf_b64})

// Trình duyệt: tệp lấy từ một <input type="file">
const reader = new FileReader();
reader.onload = () => {
  const pdfBase64 = reader.result.split(',')[1]; // bỏ tiền tố data URI
};
reader.readAsDataURL(file);

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

Vì sao chuỗi Base64 của PDF lại bắt đầu bằng JVBERi0?
Các ký tự đó là dạng mã hóa Base64 của %PDF-, phần header ở đầu mọi tệp PDF. Thấy chúng là có thể khẳng định chuỗi chứa một tệp PDF.
Tệp PDF có bị tải lên khi chuyển đổi không?

Không. Tệp được đọc, mã hóa và xem trước cục bộ trong trình duyệt của bạn. Hợp đồng, hóa đơn và các tài liệu mật khác không bao giờ rời khỏi thiết bị của bạn.

Việc mã hóa có làm thay đổi hoặc nén PDF không?

Không. Chuỗi Base64 giải mã ra đúng các byte ban đầu, nên mật khẩu bảo vệ, chữ ký số, trường biểu mẫu và siêu dữ liệu đều được giữ nguyên. Văn bản lớn hơn tệp PDF khoảng 33%; để giảm dung lượng, hãy nén PDF trước khi mã hóa.

Tôi có nên bật ngắt dòng không?

Chỉ khi định dạng yêu cầu, ví dụ khi bạn tự soạn một email MIME, nơi mỗi dòng của tệp đính kèm giới hạn ở 76 ký tự. API JSON và data URI trong HTML đều cần một chuỗi liền mạch.

Tệp PDF có thể lớn đến mức nào?

Công cụ nhận tệp tối đa 100 MB. Với API, giới hạn thực tế thường thấp hơn, vì vậy hãy kiểm tra kích thước yêu cầu tối đa và nhớ rằng Base64 làm tăng thêm khoảng một phần ba. Đầu ra rất dài có thể hiển thị chậm trên màn hình; hãy dùng Tải xuống cho tài liệu lớn.