Cách thêm số trang vào tài liệu với python-docx trong Python

Để thêm chữ “Trang” trước số trang dạng “Trang 1/5” trong Header của tài liệu Word bằng thư viện python-docx, bạn có thể sử dụng OxmlElement để thêm các field code và văn bản vào tài liệu.

Cách thêm số trang vào tài liệu với python-docx trong Python

Dưới đây là một ví dụ cụ thể để thêm số trang vào Header của tài liệu Word bằng python-docx:

from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.shared import Pt
from docx.oxml import OxmlElement
from docx.oxml.ns import qn

# Tạo một tài liệu mới
doc = Document()

# Thêm section cuối cùng
section = doc.sections[-1]

# Tạo Header cho section này
header = section.header

# Tạo một đối tượng Paragraph trong Header
paragraph = header.paragraphs[0] if header.paragraphs else header.add_paragraph()

# Thiết lập căn chỉnh cho đoạn văn bản trong header là bên phải
paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT

# Thêm text "Trang " vào Paragraph
run = paragraph.add_run('Trang ')

# Thêm text vào Paragraph, sử dụng OxmlElement để thêm PAGE field
field_code = ' PAGE '
fld_xml = OxmlElement('w:fldSimple')
fld_xml.set(qn('w:instr'), field_code)
run._r.append(fld_xml)

# Thêm dấu "/" để phân tách giữa số trang hiện tại và tổng số trang
run.add_text('/')

# Thêm field NUMPAGES để hiển thị tổng số trang
fld_xml = OxmlElement('w:fldSimple')
fld_xml.set(qn('w:instr'), ' NUMPAGES ')
run._r.append(fld_xml)

# Thiết lập cỡ chữ cho số trang là 12pt
run.font.size = Pt(12)

# Lưu tài liệu với tên file 'document_with_page_number.docx'
doc.save('document_with_page_number.docx')

Giải thích:

  • Chúng ta sử dụng paragraph.add_run('Trang ') để thêm văn bản “Trang ” vào Paragraph.
  • Sau đó, sử dụng OxmlElement để thêm các field code { PAGE }{ NUMPAGES } vào tài liệu như đã làm trước đó.
  • OxmlElement được sử dụng để tạo và thiết lập các phần tử XML chứa các field code như fldSimple với các mã lệnh { PAGE }{ NUMPAGES }.
  • Thiết lập cỡ chữ cho số trang là 12pt bằng cách sử dụng run.font.size = Pt(12).

Khi bạn chạy đoạn mã này và mở tệp document_with_page_number.docx, bạn sẽ thấy số trang dạng “Trang 1/5” ở phần Header bên phải của tài liệu Word, với chữ “Trang” đi trước số trang.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *