복붙노트

리눅스에서 PHP를 사용하여 Word 문서 만들기 [닫기]

PHP

리눅스에서 PHP를 사용하여 Word 문서 만들기 [닫기]

리눅스 환경에서 워드 문서를 만들기 위해 PHP에서 사용 가능한 솔루션은 무엇입니까?

해결법

  1. ==============================

    1."진짜"Word 문서를 생성해야하는 경우 Windows 기반 웹 서버와 COM 자동화가 필요합니다. 이 주제에 대한 Joel의 기사를 강력히 추천합니다.

    "진짜"Word 문서를 생성해야하는 경우 Windows 기반 웹 서버와 COM 자동화가 필요합니다. 이 주제에 대한 Joel의 기사를 강력히 추천합니다.

    다소 일반적인 (그러나 신뢰할 수없는) 대안은 다음과 같습니다.

    header("Content-type: application/vnd.ms-word");
    header("Content-Disposition: attachment; filename=document_name.doc");
    
    echo "<html>";
    echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Windows-1252\">";
    echo "<body>";
    echo "<b>Fake word document</b>";
    echo "</body>";
    echo "</html>"
    

    외부 스타일 시트를 사용하지 마십시오. 모든 것이 같은 파일에 있어야합니다.

    참고로 실제 Word 문서는 보내지지 않습니다. 브라우저를 다운로드하여 제공하고 .doc 파일 확장명을 기본값으로 사용하도록 트릭합니다. 이전 버전의 Word에서는 경고 / 보안 메시지없이이 파일을 열 때 원시 HTML을 Word로 가져올 수 있습니다. PHP가 오해의 소지가있는 Content-Type 헤더를 보내는 것은 실제 파일 형식 변환을 구성하지 않습니다.

  2. ==============================

    2.PHPWord는 docx 형식의 Word 문서를 생성 할 수 있습니다. 또한 기존 .docx 파일을 템플릿으로 사용할 수 있습니다. 템플릿 변수는 $ {varname} 형식으로 문서에 추가 할 수 있습니다.

    PHPWord는 docx 형식의 Word 문서를 생성 할 수 있습니다. 또한 기존 .docx 파일을 템플릿으로 사용할 수 있습니다. 템플릿 변수는 $ {varname} 형식으로 문서에 추가 할 수 있습니다.

    LGPL 라이센스가 있으며 코드와 함께 제공된 예제는 나를 위해 잘 작동했습니다.

  3. ==============================

    3.OpenOffice 템플릿 + OOo 명령 행 인터페이스.

    OpenOffice 템플릿 + OOo 명령 행 인터페이스.

    각 단계를 쉽게 수행 할 수있는 도구와 라이브러리가 있습니다.

    도움이 될지도 모른다.

  4. ==============================

    4.PHP를 사용하여 Linux에서 DOC 파일을 만드는 가장 쉬운 방법은 Zend Framework 구성 요소 인 phpLiveDocx를 사용하는 것입니다.

    PHP를 사용하여 Linux에서 DOC 파일을 만드는 가장 쉬운 방법은 Zend Framework 구성 요소 인 phpLiveDocx를 사용하는 것입니다.

    프로젝트 웹 사이트에서 :

    "phpLiveDocx는 개발자가 PHP의 구조화 된 데이터를 워드 프로세서에서 생성 된 템플릿과 결합하여 문서를 생성 할 수있게하여 결과 문서를 PDF, DOCX, DOC 또는 RTF 파일로 저장할 수 있으며 메일 병합과 동일합니다 . "

  5. ==============================

    5.OpenTBS는 템플릿 기법을 사용하여 PHP로 DOCX 동적 문서를 생성 할 수 있습니다.

    OpenTBS는 템플릿 기법을 사용하여 PHP로 DOCX 동적 문서를 생성 할 수 있습니다.

    PHP에서는 임시 파일이 필요없고 명령 행도 필요 없습니다.

    사진을 추가하거나 삭제할 수 있습니다. 생성 된 문서는 HTML 다운로드, 서버에 저장된 파일 또는 PHP의 바이너리 컨텐츠로 생성 할 수 있습니다.

    또한 OpenDocument 파일 (ODT, ODS, ODF, ...)을 병합 할 수 있습니다.

    http://www.tinybutstrong.com/opentbs.php

  6. ==============================

    6.Ivan Krechetov의 답변에 따르면, 여기에는 추가 라이브러리가 필요없이 docx와 odt에 대한 편지 병합 (사실 단순한 텍스트 대체) 기능이 있습니다.

    Ivan Krechetov의 답변에 따르면, 여기에는 추가 라이브러리가 필요없이 docx와 odt에 대한 편지 병합 (사실 단순한 텍스트 대체) 기능이 있습니다.

    function mailMerge($templateFile, $newFile, $row)
    {
      if (!copy($templateFile, $newFile))  // make a duplicate so we dont overwrite the template
        return false; // could not duplicate template
      $zip = new ZipArchive();
      if ($zip->open($newFile, ZIPARCHIVE::CHECKCONS) !== TRUE)
        return false; // probably not a docx file
      $file = substr($templateFile, -4) == '.odt' ? 'content.xml' : 'word/document.xml';
      $data = $zip->getFromName($file);
      foreach ($row as $key => $value)
        $data = str_replace($key, $value, $data);
      $zip->deleteName($file);
      $zip->addFromString($file, $data);
      $zip->close();
      return true;
    }
    

    이것은 대체 할 것이다. [사람 이름] with Mina Mooo : [Person 성]

    $replacements = array('[Person Name]' => 'Mina', '[Person Last Name]' => 'Mooo');
    $newFile = tempnam_sfx(sys_get_temp_dir(), '.dat');
    $templateName = 'personinfo.docx';
    if (mailMerge($templateName, $newFile, $replacements))
    {
      header('Content-type: application/msword');
      header('Content-Disposition: attachment; filename=' . $templateName);
      header('Accept-Ranges: bytes');
      header('Content-Length: '. filesize($file));
      readfile($newFile);
      unlink($newFile);
    }
    

    바꿀 문자열이 너무 일반적인 경우이 함수가 문서를 손상시킬 수 있음에 유의하십시오. [사람 이름]과 같은 자세한 대체 문자열을 사용해보십시오.

  7. ==============================

    7.Apache 프로젝트에는 POI라는 라이브러리가 있으며 MS Office 파일을 생성하는 데 사용할 수 있습니다. Java 라이브러리이지만 장점은 Linux에서 아무런 문제없이 실행할 수 있다는 것입니다. 이 라이브러리는 제한이 있지만 작업을 수행 할 수 있으며 Word를 실행하는 것보다 사용하기가 더 쉽습니다.

    Apache 프로젝트에는 POI라는 라이브러리가 있으며 MS Office 파일을 생성하는 데 사용할 수 있습니다. Java 라이브러리이지만 장점은 Linux에서 아무런 문제없이 실행할 수 있다는 것입니다. 이 라이브러리는 제한이 있지만 작업을 수행 할 수 있으며 Word를 실행하는 것보다 사용하기가 더 쉽습니다.

    또 다른 옵션은 OpenOffice이지만 결코 사용한 적이 없기 때문에 나는 그것을 추천 할 수 없다.

  8. ==============================

    8.

    <?php
    function fWriteFile($sFileName,$sFileContent="No Data",$ROOT)
        {
            $word = new COM("word.application") or die("Unable to instantiate Word");
            //bring it to front
            $word->Visible = 1;
            //open an empty document
            $word->Documents->Add();
            //do some weird stuff
            $word->Selection->TypeText($sFileContent);
            $word->Documents[1]->SaveAs($ROOT."/".$sFileName.".doc");
            //closing word
            $word->Quit();
            //free the object
            $word = null;
            return $sFileName;
        }
    ?>
    
    
    
    <?php
    $PATH_ROOT=dirname(__FILE__);
    $Return ="<table>";
    $Return .="<tr><td>Row[0]</td></tr>";
     $Return .="<tr><td>Row[1]</td></tr>";
    $sReturn .="</table>";
    fWriteFile("test",$Return,$PATH_ROOT);
    ?> 
    
  9. ==============================

    9.양질의 단어 문서를 작성하는 데는 두 가지 옵션이 있습니다. COM을 사용하여 단어와 의사 소통을합니다 (이 경우 Windows PHP 서버가 있어야합니다). OpenOffice와 API를 사용하여 문서를 워드 형식으로 작성하고 저장하십시오.

    양질의 단어 문서를 작성하는 데는 두 가지 옵션이 있습니다. COM을 사용하여 단어와 의사 소통을합니다 (이 경우 Windows PHP 서버가 있어야합니다). OpenOffice와 API를 사용하여 문서를 워드 형식으로 작성하고 저장하십시오.

  10. ==============================

    10.PHP COM 문서를 살펴보십시오 (의견이 도움이됩니다) http://us3.php.net/com

    PHP COM 문서를 살펴보십시오 (의견이 도움이됩니다) http://us3.php.net/com

  11. from https://stackoverflow.com/questions/124959/create-word-document-using-php-in-linux by cc-by-sa and MIT license