Mình đang thử làm một phần mềm trộn đề kiểm tra sử dụng python cùng với thư viện python-docx, nhưng nó chỉ đọc đc paragraph với text thôi chứ về hình ảnh, bảng, sơ đồ hay bold, gạch chân, … thì k đc.
Không biết có ai từng sử dụng python-docx thì giúp mình, hoặc người từng làm việc lập trình với file Word cũng đc, có cách nào tối ưu nhất trong việc xử lí file word
Vấn đề với việc trộn đề thi sử dụng python
Chuyển file doc về file .xml rồi xử lý nhé b.
Mình thử chuyển về xml r nhưng k thấy ảnh ở đâu cả
Ảnh được lưu ở dạng binaryData ở gần cuối file xml nha b.
Bên trên thì nó sẽ đánh dấu vị trí của ảnh để khi mở file thì chèn vào
Bạn chuyển binaryData thành image như trang này https://stackoverflow.com/questions/2323128/convert-string-in-base64-to-image-and-save-on-filesystem-in-python
Nó đánh giấu bằng ID + tên nhé b .
File xml này có 3 phần
- phần dầu có ID + tên của ảnh như cái hình thứ 2 ở bên trên Id là rId25 và tên là image11
- Phần giữa có nội dung text + hình thì nó đánh giấu bằng Id
- Phần cuối có tên image11 + binaryData
Từ 3 phần là nó ==> đúng hình ảnh + nội dung đúng vị trí như file doc. Bạn mở file xml convert từ file doc bằng WORD thì sẽ thấy như mở file doc thôi
Nếu mà phải xử lí Xml thì mình thấy có vẻ như còn phức tạp hơn sử dụng python-docx
Vì file doc là độc quyền của anh microsoft nên mấy module tương tác với .doc ko đầy đủ -> ko làm đc những cái phức tạp.
Trước m có viết 1 chương trình sắp xếp tài liệu tham khảo cũng mò đến thằng python-docx này nhưng làm ko nổi nên mới chuyển qua cách này.
Tất nhiên là phức tạp hơn vì bạn phải tự code mọi thứ chứ ko có module hỗ trợ.
Sao anh Micr cứ phải làm mọi thứ phức tạp thế nhỉ Thế bạn parse cái xml kiểu j vậy, rồi sau đó còn chuyển lại nó về dạng docx nữa chứ, docx thành xml đơn giản dùng save as trong Word rồi, còn ngược lại thì làm kiểu j ?
m sửa dụng regex b vì cái xml word này ko như html . Còn chuyển ngược lại thì m làm thủ công bằng Save As của word thôi
Mà nếu b đã tách được các dữ liệu cần thì dùng python-docx mà create file mới việc gì phải convert
Kể ra cũng phức tạp phết nhỉ