python에서 오피스 파일을 PDF로 변환하는 방법
win32com 설치
실전에 앞서 Python의 win32com을 설치해야 합니다. 자세한 설치 절차는 다음과 같습니다.
pip 명령을 사용하여 설치
pip install pywin32
설치 오류가 발생하면 python -m pip install Cupgrade pip를 통해 클라우드를 업데이트하는 방식으로 설치하면 됩니다.
python -m pip install --upgrade pip
오프라인 설치 패키지 설치 다운로드만약 pip 명령이 설치되지 않았다면 오프라인 패키지 설치를 다운로드할 수 있습니다. 방법의 절차는 다음과 같습니다. 우선 홈페이지에서 해당하는 Python 버전을 선택하여 오프라인 패키지를 다운로드합니다https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/ 다운로드 후 바보식으로 설치하면 됩니다.
파일 변환 논리
자세한 코드는 다음과 같습니다.
class PDFConverter:
def __init__(self, pathname, export='.'):
self._handle_postfix = ['doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx'] #
self._filename_list = list() #
self._export_folder = os.path.join(os.path.abspath('.'), 'file_server/pdfconver')
if not os.path.exists(self._export_folder):
os.mkdir(self._export_folder)
self._enumerate_filename(pathname)
def _enumerate_filename(self, pathname):
'''
'''
full_pathname = os.path.abspath(pathname)
if os.path.isfile(full_pathname):
if self._is_legal_postfix(full_pathname):
self._filename_list.append(full_pathname)
else:
raise TypeError(' {} ! :{}。'.format(pathname, '、'.join(self._handle_postfix)))
elif os.path.isdir(full_pathname):
for relpath, _, files in os.walk(full_pathname):
for name in files:
filename = os.path.join(full_pathname, relpath, name)
if self._is_legal_postfix(filename):
self._filename_list.append(os.path.join(filename))
else:
raise TypeError(' / {} !'.format(pathname))
def _is_legal_postfix(self, filename):
return filename.split('.')[-1].lower() in self._handle_postfix and not os.path.basename(filename).startswith(
'~')
def run_conver(self):
print(' :', len(self._filename_list))
for filename in self._filename_list:
postfix = filename.split('.')[-1].lower()
funcCall = getattr(self, postfix)
print(' :', filename)
funcCall(filename)
print(' !')
doc/docx에서 PDF로 변환doc/docx에서 PDF로 변환하는 부분 코드는 다음과 같습니다.
def doc(self, filename):
name = os.path.basename(filename).split('.')[0] + '.pdf'
exportfile = os.path.join(self._export_folder, name)
print(' PDF :', exportfile)
gencache.EnsureModule('{00020905-0000-0000-C000-000000000046}', 0, 8, 4)
pythoncom.CoInitialize()
w = Dispatch("Word.Application")
pythoncom.CoInitialize() # CoInitialize
doc = w.Documents.Open(filename)
doc.ExportAsFixedFormat(exportfile, constants.wdExportFormatPDF,
Item=constants.wdExportDocumentWithMarkup,
CreateBookmarks=constants.wdExportCreateHeadingBookmarks)
w.Quit(constants.wdDoNotSaveChanges)
def docx(self, filename):
self.doc(filename)
ppt/pptx에서 PDF로 변환ppt/pptx에서 PDF로 변환하는 부분 코드는 다음과 같습니다.
def ppt(self, filename):
name = os.path.basename(filename).split('.')[0] + '.pdf'
exportfile = os.path.join(self._export_folder, name)
gencache.EnsureModule('{00020905-0000-0000-C000-000000000046}', 0, 8, 4)
pythoncom.CoInitialize()
p = Dispatch("PowerPoint.Application")
pythoncom.CoInitialize()
ppt = p.Presentations.Open(filename, False, False, False)
ppt.ExportAsFixedFormat(exportfile, 2, PrintRange=None)
print(' PDF :', exportfile)
p.Quit()
def pptx(self, filename):
self.ppt(filename)
xls/xlsx에서 PDF로 변환
def xls(self, filename):
name = os.path.basename(filename).split('.')[0] + '.pdf'
exportfile = os.path.join(self._export_folder, name)
pythoncom.CoInitialize()
xlApp = DispatchEx("Excel.Application")
pythoncom.CoInitialize()
xlApp.Visible = False
xlApp.DisplayAlerts = 0
books = xlApp.Workbooks.Open(filename, False)
books.ExportAsFixedFormat(0, exportfile)
books.Close(False)
print(' PDF :', exportfile)
xlApp.Quit()
def xlsx(self, filename):
self.xls(filename)
논리적 변환 실행
if __name__ == "__main__":
#
#folder = 'tmp'
#pathname = os.path.join(os.path.abspath('.'), folder)
#
pathname = "G:/python_study/test.doc"
pdfConverter = PDFConverter(pathname)
pdfConverter.run_conver()
총결산오늘의 글은 주로 Python 실전의 작은 도구의 활용입니다. 여러분께 도움이 되었으면 합니다. 다음 호에서는 인터페이스를 통해 파일 서버를 통해 파일을 다운로드하고 변환하는 방법을 설명할 것입니다. 기대하세요...So 오늘 팁 잘 왔어요?
예제 코드
https://github.com/JustDoPython/python-examples/tree/master/chaoxi/FilesToPDF
이상은python이 어떻게 오피스 파일을 PDF로 변환하는지에 대한 상세한 내용입니다. 더 많은python Office 파일을 PDF로 변환하는지에 대한 자료는 저희 다른 관련 글을 주목해 주십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.