Tôi được giao nhiệm vụ chuyển đổi hàng tấn tệp .doc thành .pdf. Và cách duy nhất mà người giám sát của tôi muốn tôi làm điều này là thông qua MSWORD 2010. Tôi biết tôi sẽ có thể tự động hóa điều này với tự động hóa Python Com. Chỉ có vấn đề là tôi không biết làm thế nào và bắt đầu từ đâu. Tôi đã thử tìm kiếm một số hướng dẫn nhưng không thể tìm thấy bất kỳ hướng dẫn nào [có thể là tôi có thể có, nhưng tôi không biết mình đang tìm gì].
Ngay bây giờ tôi đang đọc qua điều này. Không biết điều này sẽ hữu ích như thế nào.
Williamkf
39,4K65 Huy hiệu vàng189 Huy hiệu bạc288 Huy hiệu Đồng65 gold badges189 silver badges288 bronze badges
Khi được hỏi ngày 15 tháng 5 năm 2011 lúc 20:42May 15, 2011 at 20:42
Một ví dụ đơn giản sử dụng comtypes, chuyển đổi một tệp, đầu vào và đầu ra được đưa ra làm đối số dòng lệnh:
import sys
import os
import comtypes.client
wdFormatPDF = 17
in_file = os.path.abspath[sys.argv[1]]
out_file = os.path.abspath[sys.argv[2]]
word = comtypes.client.CreateObject['Word.Application']
doc = word.Documents.Open[in_file]
doc.SaveAs[out_file, FileFormat=wdFormatPDF]
doc.Close[]
word.Quit[]
Bạn cũng có thể sử dụng pywin32, sẽ giống nhau ngoại trừ:
import win32com.client
và sau đó:
word = win32com.client.Dispatch['Word.Application']
Đã trả lời ngày 16 tháng 5 năm 2011 lúc 13:19May 16, 2011 at 13:19
StevenstevenSteven
27.2K5 Huy hiệu vàng60 Huy hiệu bạc 50 Huy hiệu Đồng5 gold badges60 silver badges50 bronze badges
10
Bạn có thể sử dụng gói python
import win32com.client
3 sang số lượng lớn chuyển đổi docx sang pdf. Nó có thể được sử dụng như cả thư viện CLI và Python. Nó yêu cầu Microsoft Office được cài đặt và sử dụng COM trên Windows và AppleScript [JXA] trên macOS.from docx2pdf import convert
convert["input.docx"]
convert["input.docx", "output.pdf"]
convert["my_docx_folder/"]
pip install docx2pdf
docx2pdf input.docx output.pdf
Tuyên bố miễn trừ trách nhiệm: Tôi đã viết gói DOCX2PDF. //github.com/aljohri/docx2pdf
Đã trả lời ngày 24 tháng 12 năm 2019 lúc 8:04Dec 24, 2019 at 8:04
Al Johrial JohriAl Johri
1.49219 huy hiệu bạc21 Huy hiệu đồng19 silver badges21 bronze badges
6
Tôi đã thử nghiệm nhiều giải pháp nhưng không ai trong số chúng hoạt động hiệu quả về phân phối Linux.
Tôi đề nghị giải pháp này:
import sys
import subprocess
import re
def convert_to[folder, source, timeout=None]:
args = [libreoffice_exec[], '--headless', '--convert-to', 'pdf', '--outdir', folder, source]
process = subprocess.run[args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=timeout]
filename = re.search['-> [.*?] using filter', process.stdout.decode[]]
return filename.group[1]
def libreoffice_exec[]:
# TODO: Provide support for more platforms
if sys.platform == 'darwin':
return '/Applications/LibreOffice.app/Contents/MacOS/soffice'
return 'libreoffice'
Và bạn gọi chức năng của bạn:
result = convert_to['TEMP Directory', 'Your File', timeout=15]
Tất cả tài nguyên:
//michalzalecki.com/converting-docx-to-pdf-using-python/
Đã trả lời ngày 28 tháng 2 năm 2020 lúc 20:05Feb 28, 2020 at 20:05
Abdelhedi Hlelabdelhedi Hlelabdelhedi hlel
2.3031 Huy hiệu vàng15 Huy hiệu bạc18 Huy hiệu đồng1 gold badge15 silver badges18 bronze badges
1
Tôi đã làm việc về vấn đề này trong nửa ngày, vì vậy tôi nghĩ rằng tôi nên chia sẻ một số kinh nghiệm của mình về vấn đề này. Câu trả lời của Steven là đúng, nhưng nó sẽ thất bại trên máy tính của tôi. Có hai điểm chính để sửa nó ở đây:
[1]. Lần đầu tiên khi tôi tạo đối tượng 'Word.Application', tôi nên hiển thị nó [ứng dụng từ] trước khi mở bất kỳ tài liệu nào. . Hệ điều hành.]
[2]. Sau khi thực hiện [1], chương trình sẽ hoạt động tốt đôi khi nhưng có thể thất bại thường xuyên. Lỗi sự cố
import win32com.client
4 có nghĩa là máy chủ COM có thể không thể phản hồi quá nhanh. Vì vậy, tôi thêm một độ trễ trước khi tôi cố gắng mở một tài liệu.Sau khi thực hiện hai bước này, chương trình sẽ hoạt động hoàn hảo mà không còn thất bại nữa. Mã demo như dưới đây. Nếu bạn đã gặp phải những vấn đề tương tự, hãy cố gắng làm theo hai bước này. Hy vọng nó giúp.
import os
import comtypes.client
import time
wdFormatPDF = 17
# absolute path is needed
# be careful about the slash '\', use '\\' or '/' or raw string r"..."
in_file=r'absolute path of input docx file 1'
out_file=r'absolute path of output pdf file 1'
in_file2=r'absolute path of input docx file 2'
out_file2=r'absolute path of outputpdf file 2'
# print out filenames
print in_file
print out_file
print in_file2
print out_file2
# create COM object
word = comtypes.client.CreateObject['Word.Application']
# key point 1: make word visible before open a new document
word.Visible = True
# key point 2: wait for the COM Server to prepare well.
time.sleep[3]
# convert docx file 1 to pdf file 1
doc=word.Documents.Open[in_file] # open docx file 1
doc.SaveAs[out_file, FileFormat=wdFormatPDF] # conversion
doc.Close[] # close docx file 1
word.Visible = False
# convert docx file 2 to pdf file 2
doc = word.Documents.Open[in_file2] # open docx file 2
doc.SaveAs[out_file2, FileFormat=wdFormatPDF] # conversion
doc.Close[] # close docx file 2
word.Quit[] # close Word Application
Đã trả lời ngày 13 tháng 12 năm 2016 lúc 9:48Dec 13, 2016 at 9:48
YangyangYang
Phim huy hiệu bạc 17111 silver badge7 bronze badges
UNOCONV [Writen in Python] và OpenOffice chạy như một daemon không đầu. //dag.wiee.rs/home-made/unoconv/
Hoạt động rất độc đáo cho DOC, DOCX, PPT, PPTX, XLS, XLSX. Rất hữu ích nếu bạn cần chuyển đổi tài liệu hoặc lưu/chuyển đổi sang các định dạng nhất định trên máy chủ
Đã trả lời ngày 15 tháng 10 năm 2014 lúc 22:15Oct 15, 2014 at 22:15
LXXLXXlxx
1.30621 Huy hiệu bạc 30 Huy hiệu Đồng21 silver badges30 bronze badges
3
Thay thế cho chức năng Saveas, bạn cũng có thể sử dụng ExportAsFixedFormat, cho phép bạn truy cập vào hộp thoại Tùy chọn PDF mà bạn thường thấy trong Word. Với điều này, bạn có thể chỉ định dấu trang và các thuộc tính tài liệu khác.
doc.ExportAsFixedFormat[OutputFileName=pdf_file,
ExportFormat=17, #17 = PDF output, 18=XPS output
OpenAfterExport=False,
OptimizeFor=0, #0=Print [higher res], 1=Screen [lower res]
CreateBookmarks=1, #0=No bookmarks, 1=Heading bookmarks only, 2=bookmarks match word bookmarks
DocStructureTags=True
];
Danh sách đầy đủ các đối số chức năng là: 'OutputFileName', 'ExportFormat', 'OpenAfterExport', 'Tối ưu hóa', 'phạm vi', 'từ', 'đến', 'mục', 'bao gồm các "
Đã trả lời ngày 24 tháng 5 năm 2018 lúc 19:06May 24, 2018 at 19:06
Patrickpatrickpatrick
711 Huy hiệu bạc1 Huy hiệu đồng1 silver badge1 bronze badge
Tôi đã sửa đổi nó cho hỗ trợ PPT là tốt. Giải pháp của tôi hỗ trợ tất cả các tiện ích mở rộng được chỉ định dưới đây.
word_extensions = [".doc", ".odt", ".rtf", ".docx", ".dotm", ".docm"]
ppt_extensions = [".ppt", ".pptx"]
Giải pháp của tôi: Liên kết GitHub
Tôi đã sửa đổi mã từ docx2pdf
Đã trả lời ngày 19 tháng 2 năm 2021 lúc 18:35Feb 19, 2021 at 18:35
Nếu bạn không ngại sử dụng PowerShell, hãy xem anh chàng kịch bản này! bài báo. Mã được trình bày có thể được thông qua để sử dụng giá trị liệt kê
import win32com.client
5 là import win32com.client
6 [xem tại đây]. Bài viết blog này trình bày một triển khai khác nhau của cùng một ý tưởng.Đã trả lời ngày 15 tháng 5 năm 2011 lúc 20:53May 15, 2011 at 20:53
Bas Bossinkbas BossinkBas Bossink
9.1104 Huy hiệu vàng39 Huy hiệu bạc52 Huy hiệu Đồng4 gold badges39 silver badges52 bronze badges
1
Tôi đã thử câu trả lời được chấp nhận nhưng không đặc biệt quan tâm đến từ PDFS cồng kềnh đang tạo ra, thường là một thứ tự lớn hơn mức lớn hơn dự kiến. Sau khi tìm cách vô hiệu hóa các hộp thoại khi sử dụng máy in PDF ảo, tôi đã bắt gặp máy in Bullzip PDF và tôi đã khá ấn tượng với các tính năng của nó. Bây giờ nó đã thay thế các máy in ảo khác mà tôi đã sử dụng trước đây. Bạn sẽ tìm thấy một "phiên bản cộng đồng miễn phí" trên trang tải xuống của họ.
API COM có thể được tìm thấy ở đây và một danh sách các cài đặt có thể sử dụng có thể được tìm thấy ở đây. Các cài đặt được ghi vào tệp "Runonce" chỉ được sử dụng cho một công việc in và sau đó được xóa tự động. Khi in nhiều tệp PDF, chúng tôi cần đảm bảo một công việc in hoàn thành trước khi bắt đầu một công việc khác để đảm bảo cài đặt được sử dụng chính xác cho mỗi tệp.
import win32com.client
0Đã trả lời ngày 1 tháng 7 năm 2017 lúc 12:37Jul 1, 2017 at 12:37
Tôi đã làm việc với giải pháp này nhưng tôi cần tìm kiếm tất cả .docx, .dotm, .docm, .odt, .doc hoặc .rtf và sau đó chuyển tất cả thành .pdf [Python 3.7.5]. Hy vọng nó hoạt động...
import win32com.client
1Việc thử và ngoại trừ là cho những tài liệu tôi không thể đọc và sẽ không thoát mã cho đến khi tài liệu cuối cùng.
Đã trả lời ngày 17 tháng 2 năm 2020 lúc 18:28Feb 17, 2020 at 18:28
1
Bạn nên bắt đầu từ việc điều tra các trình điều khiển in PDF ảo. Ngay khi bạn sẽ tìm thấy một bản, bạn sẽ có thể viết tệp hàng loạt in các tệp tài liệu của bạn vào các tệp PDF. Bạn cũng có thể thực hiện điều này trong Python [đầu ra trình điều khiển máy in thiết lập và lệnh phát hành/lệnh in trong msword, sau đó có thể được thực hiện bằng cách sử dụng dòng lệnh AFAIR].
Đã trả lời ngày 15 tháng 5 năm 2011 lúc 20:54May 15, 2011 at 20:54
c-smilec-smilec-smile
26.1k7 Huy hiệu vàng57 Huy hiệu bạc83 Huy hiệu đồng7 gold badges57 silver badges83 bronze badges
import win32com.client
2Mã nguồn, xem tại đây:
//neculaifantanaru.com/en/python-full-code-how-to-convert-doc-and-docx-files-to-pdf-from-the-folder.html
Đã trả lời ngày 21 tháng 3 lúc 9:24Mar 21 at 9:24
Chỉ cần mejust tôiJust Me
6732 Huy hiệu vàng14 Huy hiệu bạc27 Huy hiệu đồng2 gold badges14 silver badges27 bronze badges
1
Tôi sẽ đề nghị bỏ qua người giám sát của bạn và sử dụng OpenOffice có API Python. OpenOffice đã được xây dựng để hỗ trợ cho Python và ai đó đã tạo một thư viện cụ thể cho mục đích này [PyodConverter].
Nếu anh ấy không hài lòng với đầu ra, hãy nói với anh ấy rằng bạn có thể mất nhiều tuần để làm điều đó với Word.
Đã trả lời ngày 15 tháng 5 năm 2011 lúc 20:53May 15, 2011 at 20:53
Mikerobimikerobimikerobi
20.1k5 Huy hiệu vàng45 Huy hiệu bạc42 Huy hiệu đồng5 gold badges45 silver badges42 bronze badges