2012-10-15 4 views
2

Windows 서버에서 PHP를 사용하여 .docx 파일을 pdf로 변환하려고합니다. 나는 phpdocx (어떤 형식을 유지하지 않는 매우 열악한 변환을한다)와 php의 Com 객체를 포함한 다른 게시물에서 몇 가지 솔루션을 시도했다. 나는 Office 2003 만 가지고 있으므로 Com을 사용할 수있는 PDF 변환기는 없습니다.Windows 문서 파일 Windows 서버의 PDF 파일

OpenOffice/LibreOffice를 사용하여 생각했지만 Windows 서버에 Com을 설치하고 사용하는 데 필요한 정보를 찾지 못했습니다 (설치가 가능하지만 Com을 설정하는 방법을 알 수 없습니다). 그것을 위해).

웹 서비스를 사용하는 것은 양식의 데이터로 인해 옵션이 아닙니다.이 양식은 Google 서버에 남아 있어야합니다. 이것은 Zend Framework를 사용할 수 없다는 것을 의미합니다.

Open Office와 함께 Com을 사용하는 데 도움이되는 정보 또는 정보가 필요합니다.

+0

몇 달 전에 PowerShell을 사용하여이 작업을 수행했습니다. 기본적으로 누군가 PDF로 저장하는 것을 시뮬레이트하는 배치 스크립트입니다. 들여다 볼 가치가 있습니다. – BIOSTALL

+0

Com을 사용하려는 이유가 있습니까? –

+0

@Jowierun 필자는 자신의 시스템에 새로운 스크립팅 언어 (예 : Python)를 도입 할 수 없기 때문에 Com을 사용하고 있습니다. 이것은 내가 명령 줄 도구의 일종없이 PHP 외부의 응용 프로그램과 상호 작용할 수있는 유일한 방법입니다. – Mike

답변

2

나는이 작업을 마침내 얻을 수있었습니다. OUr 문제는 Word 2003에 PDF 변환기가 없다는 것입니다. 우리는 지금 Office 2010의 평가판을 사용하여 종료했습니다 (모든 것이 올바르게 작동한다고 가정하면 정식 버전을 구입할 예정입니다). Word 2007도 효과가있었습니다. 아래 코드는이 코드를 사용하여 작동합니다.

   //Word Doc to PDF using Com 
      ini_set("com.allow_dcom","true"); 

      try{ 
       $word = new com('word.application') or die('MS Word could not be loaded'); 
      } 
      catch (com_exception $e) 
      { 
        $nl = "<br />"; 
        echo $e->getMessage() . $nl; 
        echo $e->getCode() . $nl; 
        echo $e->getTraceAsString(); 
        echo $e->getFile() . " LINE: " . $e->getLine(); 
        $word->Quit(); 
        $word = null; 
        die; 

      } 

      $word->Visible = 0; 
      $word->DisplayAlerts = 0; 





      try{ 
      $doc = $word->Documents->Open(DOC_LOCATION. 'test_image.docx'); 
      } 
      catch (com_exception $e) 
      { 
       $nl = "<br />"; 
       echo $e->getMessage() . $nl; 
       echo $e->getCode() . $nl; 
       echo $e->getFile() . " LINE: " . $e->getLine(); 
       $word->Quit(); 
       $word = null; 
       die; 
      } 
      echo "doc opened"; 
      try{ 
       $doc->ExportAsFixedFormat(DOC_LOCATION . "test_image.pdf", 17, false, 0, 0, 0, 0, 7, true, true, 2, true, true, false); 

      } 
      catch (com_exception $e) 
      { 
       $nl = "<br />"; 
       echo $e->getMessage() . $nl; 
       echo $e->getCode() . $nl; 
       echo $e->getTraceAsString(); 
       echo $e->getFile() . " LINE: " . $e->getLine(); 
       $word->Quit(); 
       $word = null; 
       die; 
      } 

      echo "created pdf"; 
      $word->Quit(); 
      $word = null;