2013-01-10 58 views
52

Tôi đã tự động xây dựng của mình để chuyển đổi tệp Markdown thành tệp DOCX bằng Pandoc. Tôi thậm chí đã sử dụng một tài liệu tham khảo cho phong cách của tài liệu cuối cùng. Lệnh tôi sử dụng là:Đánh dấu xuống docx, bao gồm cả mẫu phức tạp

pandoc -f markdown -t docx --data-dir=docs/rendering/ mydoc.md -o mydoc.docx 

các reference.docx được nhặt bởi Pandoc từ docs/rendering và Pandoc renders mydoc.docx với phong cách tương tự như doc tham khảo.

Tuy nhiên, reference.docx không chỉ chứa kiểu. Nó chứa biểu trưng đồng bộ, phần mở đầu, v.v.

Làm cách nào để tự động hợp nhất nội dung Đánh dấu với cả kiểu và nội dung của reference.docx. Giải pháp của tôi cần phải làm việc trên Linux.

+0

Bạn có thể thử MergeDocx (sản phẩm thương mại của chúng tôi; Java) – JasonPlutext

+0

Tôi đã từng làm một việc như thế này, nhưng tôi thấy dễ dàng hơn khi chỉ hiển thị một trang web với các kiểu in đặc biệt và để Chrome tạo PDF từ đó. Hoặc in trang đến máy in PDF. Tôi đã phải tạo lại toàn bộ DOCX nhưng điều đó có vẻ dễ dàng hơn việc hợp nhất toàn bộ định dạng (và mạo hiểm những sai lầm). – ayke

Trả lời

11

Lý tưởng nhất, PanDoc sẽ phát triển tính năng này but it doesn't look like likely bất kỳ lúc nào.

Tôi không biết về bất kỳ công cụ nào sẽ thực hiện công việc trực tiếp, nhưng bạn có thể đạt được kết quả giảm xuống để hợp nhất reference.docx và mã được sản xuất theo mã PanDoc mydoc.docx.

Định dạng .docx là một tệp lưu trữ ZIP gồm các tệp XML (chủ yếu). Điều quan trọng nhất là word/document.xml. Nếu bạn sử dụng một công cụ XML để lấy (hầu hết) số document.xml từ một tệp và chèn nó vào một tệp khác, bạn sẽ có thứ gì đó gần hơn với những gì bạn cần.

Tôi có thể hack cùng một ví dụ trong, ví dụ, Ruby nếu một minh họa có thể hữu ích.

10

Lý tưởng nhất là bạn có thể sử dụng mẫu docx tùy chỉnh, nhưng pandoc chưa hỗ trợ mẫu đó. Tệp reference.docx chỉ cho phép các kiểu tùy chỉnh được nhúng trong các tệp docx mới được tạo.

May mắn thay bạn có thể ước tính điều này bằng cách sử dụng odt thay vì docx. Bạn có thể dễ dàng sửa đổi default OpenDocument template để bao gồm biểu trưng tùy chỉnh, lời mở đầu và các nội dung khác. Sử dụng mẫu tùy chỉnh cùng với tệp reference.odt để nhận tất cả các kiểu và nội dung tùy chỉnh.

Khi bạn có tệp ở định dạng odt, bạn có thể sử dụng bất kỳ số lượng công cụ dòng lệnh nào để chuyển đổi từ odt sang docx. Ví dụ, trên Linux bạn có thể chạy

libreoffice --invisible --convert-to docx test.odt 

Hoặc trên OS X:

/Applications/LibreOffice.app/Contents/MacOS/soffice.bin --invisible --convert-to docx test.odt 
+1

Tại sao không tự động chuyển đổi các tệp/mẫu docx thành odt? Và sau đó sử dụng odt trong chuyển đổi pandoc? (Tôi là một người mới, và xin hãy tha thứ cho câu hỏi không biết gì của tôi.) –

+1

Pandoc cần các biến đặc biệt trong mẫu odt để hoạt động chính xác (xem https://github.com/andrewheiss/Global-Pandoc-files/ blob/master/templates/odt.template # L34, ví dụ). Bạn không thể tạo chúng trong docx gốc - chúng phải được thêm bằng tay thông qua trình soạn thảo văn bản. – Andrew

10

Tôi biết điều này là cuối năm tới, nhưng tôi sẽ được giả định mọi người vẫn đang tìm kiếm giải pháp cho ba này nhiều năm sau câu hỏi ban đầu - tôi biết tôi là.

Giải pháp của tôi là sử dụng LaTeX làm trung gian giữa markdown và docx (thực ra, tôi đã chuyển đổi từ chế độ tổ chức, nhưng cũng khác biệt). Vì vậy, trong trường hợp của bạn, tôi tin rằng một giải pháp một lớp lót sẽ là:

pandoc -f markdown -t latex -o mydoc.tex mydoc.md && \ 
pandoc -f latex -t docx --data-dir=docs/rendering/ -o mydoc.docx mydoc.tex 

Điều này có thể giúp bạn gần hơn với mục tiêu của mình. Tất nhiên, Pandoc có khoảng trăm đối số nó có thể xử lý, và có lẽ có nhiều cách để làm cho cái này đẹp hơn. Nó cũng đã nhận được khá một vài cập nhật kể từ lần đầu tiên bạn đăng câu hỏi của mình.

Các vấn đề liên quan