복붙노트

PHP로 MS Word 파일 읽기 / 쓰기

PHP

PHP로 MS Word 파일 읽기 / 쓰기

COM 객체를 사용하지 않고 PHP로 Word (2003 및 2007) 파일을 읽고 쓸 수 있습니까? 나는 내가 할 수있는 것을 안다.

$file = fopen('c:\file.doc', 'w+');
fwrite($file, $text);
fclose();

그러나 Word는 기본 .doc 파일이 아닌 HTML 파일로 읽습니다.

해결법

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

    1.이진 Word 문서를 읽는 것은 DOC 형식에 대해 게시 된 파일 형식 사양에 따라 파서를 만드는 작업이 포함됩니다. 나는 이것이 실제로 실현 가능한 해결책이 아니라고 생각한다.

    이진 Word 문서를 읽는 것은 DOC 형식에 대해 게시 된 파일 형식 사양에 따라 파서를 만드는 작업이 포함됩니다. 나는 이것이 실제로 실현 가능한 해결책이 아니라고 생각한다.

    Word 파일을 읽고 쓰는 데 Microsoft Office XML 형식을 사용할 수 있습니다.이 형식은 2003 및 2007 버전의 Word와 호환됩니다. 읽기를 위해서는 Word 문서가 올바른 형식으로 저장되어 있는지 확인해야합니다. Word 2003에서는 Word 2003 XML 문서라고합니다. 글을 쓰려면 공개적으로 사용 가능한 XML 스키마를 따라야합니다. 필자는 PHP에서 Office 문서를 작성하는 데이 형식을 사용해 본 적이 없지만 Excel 워크 시트 (자연스럽게 XML-Spreadsheet 2003로 저장 됨)에서 읽고 웹 페이지에 데이터를 표시하는 데이 형식을 사용하고 있습니다. 파일은 분명히 XML 데이터이므로 내부에서 탐색하고 필요한 데이터를 추출하는 방법을 파악하는 데 아무런 문제가 없습니다.

    다른 옵션 - Word 2007 전용 옵션 (OpenXML 파일 형식이 Word 2003에 설치되지 않은 경우) - OpenXML로 리졸 브하는 것입니다. databys가 지적한 것처럼 DOCX 파일 형식은 XML 파일이 포함 된 ZIP 아카이브 일뿐입니다. MSDN에는 OpenXML 파일 형식과 관련된 많은 리소스가 있으므로 원하는 데이터를 읽는 방법을 파악할 수 있어야합니다. 글쓰기는 생각보다 훨씬 복잡 할 것입니다. 단지 얼마만큼의 시간을 투자 할 것인가에 달려 있습니다.

    아마도 ExcelExcel 파일을 Excel 2007 파일에 쓰고 OpenXML 표준을 사용하여 Excel 2007 파일에서 읽을 수있는 라이브러리 인 PHPExcel을 살펴볼 수 있습니다. OpenXML Word 문서를 읽고 쓰려고 할 때 관련된 작업에 대한 아이디어를 얻을 수 있습니다.

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

    2.이 작품은 2007 년과 2007 년을 비교하려고하는 순수 COM PHP는 없다.

    이 작품은 2007 년과 2007 년을 비교하려고하는 순수 COM PHP는 없다.

    <?php
    
    
    
    /*****************************************************************
    This approach uses detection of NUL (chr(00)) and end line (chr(13))
    to decide where the text is:
    - divide the file contents up by chr(13)
    - reject any slices containing a NUL
    - stitch the rest together again
    - clean up with a regular expression
    *****************************************************************/
    
    function parseWord($userDoc) 
    {
        $fileHandle = fopen($userDoc, "r");
        $line = @fread($fileHandle, filesize($userDoc));   
        $lines = explode(chr(0x0D),$line);
        $outtext = "";
        foreach($lines as $thisline)
          {
            $pos = strpos($thisline, chr(0x00));
            if (($pos !== FALSE)||(strlen($thisline)==0))
              {
              } else {
                $outtext .= $thisline." ";
              }
          }
         $outtext = preg_replace("/[^a-zA-Z0-9\s\,\.\-\n\r\t@\/\_\(\)]/","",$outtext);
        return $outtext;
    } 
    
    $userDoc = "cv.doc";
    
    $text = parseWord($userDoc);
    echo $text;
    
    
    ?>
    
  3. ==============================

    3.당신은 안티 워드를 사용할 수 있습니다, 그것은 리눅스와 가장 인기있는 OS를위한 무료 MS 워드 리더입니다.

    당신은 안티 워드를 사용할 수 있습니다, 그것은 리눅스와 가장 인기있는 OS를위한 무료 MS 워드 리더입니다.

    $document_file = 'c:\file.doc';
    $text_from_doc = shell_exec('/usr/local/bin/antiword '.$document_file);
    
  4. ==============================

    4.코드 업데이트하기

    코드 업데이트하기

    <?php
    
    /*****************************************************************
    This approach uses detection of NUL (chr(00)) and end line (chr(13))
    to decide where the text is:
    - divide the file contents up by chr(13)
    - reject any slices containing a NUL
    - stitch the rest together again
    - clean up with a regular expression
    *****************************************************************/
    
    function parseWord($userDoc) 
    {
        $fileHandle = fopen($userDoc, "r");
        $word_text = @fread($fileHandle, filesize($userDoc));
        $line = "";
        $tam = filesize($userDoc);
        $nulos = 0;
        $caracteres = 0;
        for($i=1536; $i<$tam; $i++)
        {
            $line .= $word_text[$i];
    
            if( $word_text[$i] == 0)
            {
                $nulos++;
            }
            else
            {
                $nulos=0;
                $caracteres++;
            }
    
            if( $nulos>1996)
            {   
                break;  
            }
        }
    
        //echo $caracteres;
    
        $lines = explode(chr(0x0D),$line);
        //$outtext = "<pre>";
    
        $outtext = "";
        foreach($lines as $thisline)
        {
            $tam = strlen($thisline);
            if( !$tam )
            {
                continue;
            }
    
            $new_line = ""; 
            for($i=0; $i<$tam; $i++)
            {
                $onechar = $thisline[$i];
                if( $onechar > chr(240) )
                {
                    continue;
                }
    
                if( $onechar >= chr(0x20) )
                {
                    $caracteres++;
                    $new_line .= $onechar;
                }
    
                if( $onechar == chr(0x14) )
                {
                    $new_line .= "</a>";
                }
    
                if( $onechar == chr(0x07) )
                {
                    $new_line .= "\t";
                    if( isset($thisline[$i+1]) )
                    {
                        if( $thisline[$i+1] == chr(0x07) )
                        {
                            $new_line .= "\n";
                        }
                    }
                }
            }
            //troca por hiperlink
            $new_line = str_replace("HYPERLINK" ,"<a href=",$new_line); 
            $new_line = str_replace("\o" ,">",$new_line); 
            $new_line .= "\n";
    
            //link de imagens
            $new_line = str_replace("INCLUDEPICTURE" ,"<br><img src=",$new_line); 
            $new_line = str_replace("\*" ,"><br>",$new_line); 
            $new_line = str_replace("MERGEFORMATINET" ,"",$new_line); 
    
    
            $outtext .= nl2br($new_line);
        }
    
     return $outtext;
    } 
    
    $userDoc = "custo.doc";
    $userDoc = "Cultura.doc";
    $text = parseWord($userDoc);
    
    echo $text;
    
    
    ?>
    
  5. ==============================

    5.PHP로 네이티브 Word 문서를 읽는 것에 대해서는 잘 모르겠지만 PHP로 Word 문서를 작성하려면 WordprocessingML (일명 WordML)이 좋은 해결책 일 수 있습니다. XML 문서를 올바른 형식으로 작성하면됩니다. Word 2003과 2007 모두 WordML을 지원한다고 생각합니다.

    PHP로 네이티브 Word 문서를 읽는 것에 대해서는 잘 모르겠지만 PHP로 Word 문서를 작성하려면 WordprocessingML (일명 WordML)이 좋은 해결책 일 수 있습니다. XML 문서를 올바른 형식으로 작성하면됩니다. Word 2003과 2007 모두 WordML을 지원한다고 생각합니다.

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

    6.아마 당신은 COM없이 Word 문서를 읽을 수 없을 것입니다.

    아마 당신은 COM없이 Word 문서를 읽을 수 없을 것입니다.

    이 주제에서 글쓰기가 다루어졌습니다.

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

    7.www.phplivedocx.org는 파일을 테스트하기 위해 항상 온라인 상태 여야 함을 의미하는 SOAP 기반 서비스입니다. 또한 파일 사용에 대한 예제가 충분하지 않습니다. 이상하게도 SOAP 기반 프로그램 (저주 받았다 !!!) ... 다운로드가 끝나고 2 일만이 경과 한 것을 발견했습니다. COM이 없으면 Linux 서버에서 사용할 수 없으며 유일한 아이디어는 다음과 같습니다. PHP가 파싱 할 수있는 다른 사용 가능한 파일에서 doc 파일을 변경하십시오 ...

    www.phplivedocx.org는 파일을 테스트하기 위해 항상 온라인 상태 여야 함을 의미하는 SOAP 기반 서비스입니다. 또한 파일 사용에 대한 예제가 충분하지 않습니다. 이상하게도 SOAP 기반 프로그램 (저주 받았다 !!!) ... 다운로드가 끝나고 2 일만이 경과 한 것을 발견했습니다. COM이 없으면 Linux 서버에서 사용할 수 없으며 유일한 아이디어는 다음과 같습니다. PHP가 파싱 할 수있는 다른 사용 가능한 파일에서 doc 파일을 변경하십시오 ...

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

    8.2007 년은 약간 복잡 할 수도 있습니다.

    2007 년은 약간 복잡 할 수도 있습니다.

    .docx 형식은 형식 지정 및 기타 작업을 위해 다른 파일이 들어있는 폴더가 몇 개인 zip 파일입니다.

    .docx 파일의 이름을 .zip으로 변경하면 의미를 알 수 있습니다.

    따라서 PHP에서 zip 파일로 작업 할 수 있다면 올바른 경로에 있어야합니다.

  9. ==============================

    9.phpLiveDocx는 Zend Framework 구성 요소이며 Linux, Windows 및 Mac에서 PHP로 DOC 및 DOCX 파일을 읽고 쓸 수 있습니다.

    phpLiveDocx는 Zend Framework 구성 요소이며 Linux, Windows 및 Mac에서 PHP로 DOC 및 DOCX 파일을 읽고 쓸 수 있습니다.

    프로젝트 웹 사이트 :

    http://www.phplivedocx.org

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

    10.PHP로 Word 파일을 조작하는 한 가지 방법은 PHPDocX를 사용하는 것입니다. 온라인 자습서를 보면서 어떻게 작동하는지 확인할 수 있습니다. 콘텐츠를 삽입하거나 추출하거나 여러 Word 파일을 병합하여 병합 할 수도 있습니다.

    PHP로 Word 파일을 조작하는 한 가지 방법은 PHPDocX를 사용하는 것입니다. 온라인 자습서를 보면서 어떻게 작동하는지 확인할 수 있습니다. 콘텐츠를 삽입하거나 추출하거나 여러 Word 파일을 병합하여 병합 할 수도 있습니다.

  11. ==============================

    11.Office 2007 .docx는 XML 표준이므로 가능해야합니다. Word 2003은 현재 MS에서 발행 한 표준을 사용하는 경우에도 COM이 읽을 수 있어야합니다. 왜냐하면 이러한 표준은 크기가 크기 때문입니다. 나는 아직 그들과 어울리는 많은 도서관을 보지 못했다.

    Office 2007 .docx는 XML 표준이므로 가능해야합니다. Word 2003은 현재 MS에서 발행 한 표준을 사용하는 경우에도 COM이 읽을 수 있어야합니다. 왜냐하면 이러한 표준은 크기가 크기 때문입니다. 나는 아직 그들과 어울리는 많은 도서관을 보지 못했다.

  12. ==============================

    12.나는 당신이 그것을 위해 무엇을 사용할 것인지 모르지만 검색 인덱싱을 위해 .doc 지원이 필요합니다. 내가 한 일은 "catdoc"이라는 작은 명령 행 도구를 사용하는 것이 었습니다. 이렇게하면 색인을 생성 할 수 있도록 Word 문서의 내용이 일반 텍스트로 전송됩니다. 서식을 유지하고 물건을 채워야하는 경우이 방법이 귀하의 도구가 아닙니다.

    나는 당신이 그것을 위해 무엇을 사용할 것인지 모르지만 검색 인덱싱을 위해 .doc 지원이 필요합니다. 내가 한 일은 "catdoc"이라는 작은 명령 행 도구를 사용하는 것이 었습니다. 이렇게하면 색인을 생성 할 수 있도록 Word 문서의 내용이 일반 텍스트로 전송됩니다. 서식을 유지하고 물건을 채워야하는 경우이 방법이 귀하의 도구가 아닙니다.

  13. ==============================

    13..rtf 형식이 귀하의 목적에 부합합니까? .rtf는 .doc 형식으로 쉽게 변환 할 수 있지만 일반 텍스트로 작성됩니다 (제어 명령이 포함 된 상태로). 이것이 내 응용 프로그램을 Word 문서와 통합하려는 방법입니다.

    .rtf 형식이 귀하의 목적에 부합합니까? .rtf는 .doc 형식으로 쉽게 변환 할 수 있지만 일반 텍스트로 작성됩니다 (제어 명령이 포함 된 상태로). 이것이 내 응용 프로그램을 Word 문서와 통합하려는 방법입니다.

  14. ==============================

    14.심지어 나는 같은 종류의 프로젝트 [온라인 워드 프로세서]에서 일하고있다! 하지만 난 C # .net과 ASP.net을 선택했다. 그러나 설문 조사를 통해 나는 그랬다. 나는 그걸 알아야 해.

    심지어 나는 같은 종류의 프로젝트 [온라인 워드 프로세서]에서 일하고있다! 하지만 난 C # .net과 ASP.net을 선택했다. 그러나 설문 조사를 통해 나는 그랬다. 나는 그걸 알아야 해.

    우리는 단어 파일을 사용하여 쉽게 작업 할 수 있으며 .odt, .pdf, .docx 등과 같은 여러 형식으로 내부적으로 변환 할 수도 있습니다.

    하지만 PHP에서 ur 프로젝트를하고 싶다면 Visual Studio와 .net에서 PHP를 사용할 수 있습니다. PHP는 .net 호환 언어 중 하나이기도합니다!

  15. ==============================

    15.나도 같은 사건이있어. PHP 서버에서 내 파일을 변환 할 때 무료 도메인으로 호스팅하는 저렴한 50 메가 Windows 기반의 호스팅을 사용하려고합니다. 그리고 그들을 연결하는 것은 쉽습니다. 게시물을 통해 doc 파일을 수신하고 HTTP를 통해 응답하는 ASP.NET 페이지를 작성하기 만하면됩니다. 그래서 간단한 CURL이 그것을 할 것입니다.

    나도 같은 사건이있어. PHP 서버에서 내 파일을 변환 할 때 무료 도메인으로 호스팅하는 저렴한 50 메가 Windows 기반의 호스팅을 사용하려고합니다. 그리고 그들을 연결하는 것은 쉽습니다. 게시물을 통해 doc 파일을 수신하고 HTTP를 통해 응답하는 ASP.NET 페이지를 작성하기 만하면됩니다. 그래서 간단한 CURL이 그것을 할 것입니다.

  16. from https://stackoverflow.com/questions/188452/reading-writing-a-ms-word-file-in-php by cc-by-sa and MIT license