“Not implemented” Exception when using pywin32 to control Adobe Acrobat

前端 未结 2 1567
陌清茗
陌清茗 2020-12-30 08:26

I have written a script in python using pywin32 to save pdf files to text that up until recently was working fine. I use similar methods in Excel. The code is below:

2条回答
  •  灰色年华
    2020-12-30 09:05

    makepy.py is a script that comes with the win32com python package.

    Running it for your installation "wires" python into the COM/OLE object in Windows. The following is an excerpt of some code I used to talk to Excel and do some stuff in it. This example gets the name of sheet 1 in the current workbook. It automatically runs makepy if it has an exception:

    import win32com;
    import win32com.client;
    from win32com.client import selecttlb;
    
    def attachExcelCOM():
       makepyExe = r'python C:\Python25\Lib\site-packages\win32com\client\makepy.py';
       typeList = selecttlb.EnumTlbs();
       for tl in typeList:
          if (re.match('^Microsoft.*Excel.*', tl.desc, re.IGNORECASE)):
              makepyCmd = "%s -d \"%s\"" % (makepyExe, tl.desc);
              os.system(makepyCmd);
          # end if
       # end for
    # end def
    
    def getSheetName(sheetNum):
       try:
          xl = win32com.client.Dispatch("Excel.Application");
          wb = xl.Workbooks.Item(sheetNum);
       except Exception, detail:
          print 'There was a problem attaching to Excel, refreshing connect config...';
          print Exception, str(detail);
          attachExcelCOM();
          try:
             xl = win32com.client.Dispatch("Excel.Application");
             wb = xl.Workbooks.Item(sheetNum);
          except:
             print 'Could not attach to Excel...';
             sys.exit(-1);
          # end try/except
       # end try/except
    
       wsName = wb.Name;
       if (wsName == 'PERSONAL.XLS'):
          return( None );
       # end if
       print 'The target worksheet is:';
       print '      ', wsName;
       print 'Is this correct? [Y/N]',;
       answer = string.strip( sys.stdin.readline() );
       answer = answer.upper();
       if (answer != 'Y'):
          print 'Sheet not identified correctly.';
          return(None);
       # end if
       return( (wb, wsName) );
    # end def
    
    # -- Main --
    sheetInfo = getSheetName(sheetNum);
    if (sheetInfo == None):
       print 'Sheet not found';
       sys.exit(-1);
    else:
       (wb, wsName) = sheetInfo;
    # end if
    

提交回复
热议问题