2011-10-24 2 views
2

누구든지 docx 템플릿을 편집하는 경험이 있었습니까? 내 PHP 관리 영역 docx 템플릿을 수정하는 기능이 필요합니다,이 기능은 많이 사용되므로 메모리가 중요합니다.php docx 템플릿 수정

나는 사람이 사용하고 나에게 어떤 피드백을 줄 수있는 베타 버전입니다 phpword, 그것은 작동하지만 100 %

나는 인터넷 검색 및 phpdocx을 발견 한을 발견했다?

내가 필요한 모든 솔루션은 텍스트를 변경하거나 docx 템플릿 내 이미지 일 수 있습니다.

나는 서비스를 제공 하겠지만 대중은 지불 할 준비가되지 않을 것이며 면허증을위한 일회성 수수료가 선호 될 것이다.

답변

9

OpenTBS을 시도해야합니다.

템플릿 기술로 DOCX를 빌드하는 오픈 소스 PHP 라이브러리입니다.

임시 디렉토리가 없으므로 추가 exe는 필요하지 않습니다. 먼저 Ms Office와 함께 DOCX, XLSX, PPTX를 만듭니다 (ODT, ODS, ODP도 지원됩니다, OpenOffice 파일입니다). 그런 다음 OpenTBS를 사용하여 템플릿을로드하고 템플릿 엔진을 사용하여 내용을 변경합니다 (손쉬운 데모 참조). 마지막에는 필요한 곳에 결과를 저장합니다. 새로운 파일, 다운로드 플로우, PHP 바이너리 스트링이 될 수 있습니다.

OpenTBS도 사진 및 문서의차트를 변경할 수 있습니다.

+0

나는 내가 무엇 d를이 발견 말 돌아올 막습니다 오 너희들 생각해. 이 사이트는 문서를 더 쉽게 읽을 수 있도록 재 설계로 할 수 있었지만 마침내 내가 무엇을 찾았는지, 감사하다고 생각합니다. –

+1

OpenTbs는 내가 필요로하는 것이지만 걸림돌을 맞았는데 어떻게 특정 이름을 가진 템플릿의 이미지를 대체 할 수 있을까요? picture1.jpg, picture2.jpg 각 태그 다음에 [] 태그를 삽입하지 않아도됩니다. 나는이 게시물을 검색했지만 이에 대한 해결책은 오픈 오피스 문서 유형에서만 발견됩니다. http://stackoverflow.com/questions/1780130/generate-odt-documents-with-dynamic-images-in-php –

+0

안녕하세요, 문서의 [] 태그를 사용하면 기술적 인 고려없이 이미지를 변경할 수 있습니다. Ms Office를 사용하면 그림에 이름이 없거나 보이는 ID가 없습니다. OpenTBS를 사용하면 Docx에서 내부 파일을 직접 추가하거나 삭제할 수 있습니다. 그러나 기존 내부 파일을 변경하기위한 것은 아닙니다. – Skrol29

0

Phpdocx는 귀하의 필요에 부합합니다. docx 문서에서 $ variable $에 기반한 매우 쉬운 템플릿 형식을 사용하면 라이브러리와 함께 사용하기가 매우 쉽습니다. 나는 몇 달 동안을 사용하고 있으며 나를 위해 좋은 도구입니다.

1
<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Employee Details</title> 
    </head> 
    <body> 
    <form method="post" action="#"> 
     <input type="text" name="e_name" />   
     <input type="text" name="e_email" /> 
     <input type="submit" name="e_submit" /> 
    </form> 
    </body> 
    <?php 
    if(isset($_POST["e_submit"])) 
    { 
     $name=(string) $_POST["e_name"]; 
     $email=(string) $_POST["e_email"]; 

     $source='template1.docx'; 
     $destination='template_'.$name.'.docx'; 
     $temp='template_'.$name.'.docx'; 

     copy($source,$temp); 

     $zip=new ZipArchive; 

     $fileXml='word/document.xml'; 
     if($zip->open($temp) === TRUE) 
     { 
      $old=$zip->getFromName($fileXml); 

      $new=str_replace('{{Name}}',$name,$old); 
      $new=str_replace('{{Email}}',$email,$new); 

      $zip->deleteName($fileXml); 
      $zip->addFromString($fileXml,$new); 
      $zip->close(); 

      header("Content-Type: application/force-download"); 
      header('Content-Type: application/msword'); 
      header('Content-Disposition: attachment; filename="'.$destination.'"'); 

      readfile($destination); 
      unlink($destination); 
      exit(); 
     } 
    } 
    ?> 
</html> 
+0

답을 설명해주십시오. – zuluk