python에서 오피스 파일을 PDF로 변환하는 방법

5762 단어 pythonofficePDF
평상시 업무에서 업무 중에 겪는 문제를 해결하기 위해 작은 Tip이 필요합니다. 오늘의 글은 여러분에게 편리하고 빠른 팁을 제공하여 Office(doc/docx/ppt/pptx/xls/xlsx) 파일을 대량으로 만들거나 단일 파일을 PDF 파일로 변환합니다.그러나 구체적인 조작을 하기 전에 PC에 Office를 설치하고 Python의 win32com 패키지를 이용하여 Office 파일의 변환 조작을 실현해야 한다.
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로 변환하는지에 대한 자료는 저희 다른 관련 글을 주목해 주십시오!

좋은 웹페이지 즐겨찾기