개발 꿀팁/PHP

PhpWord의 간단한 용법

Jammie 2022. 7. 11. 12:12
반응형

최근 프로젝트가 워드프로세서 생성 기능을 필요로 하기 때문에 뒤척이기 시작하여 PHP로 word를 생성할 수 있는 클래스 라이브러리인 PhoWord를 찾기 시작하였고, PhpWord는 composer로 설치하면 사용할 수 있습니다.
  한참 동안 일을 한 끝에 워드 문서가 생성되었으니, 지금 몇 가지 용법을 기록해서 모두가 참고할 수 있도록 하자

PhpWord 문서
  좀 더 많은 기능을 하고 싶은학우는 문서를 자세히 참고할 수 있다.
  https://phpword.readthedocs.io/en/ latest/intro.html

사용 환경
  현재 ThinkPHP5.0.21에서 사용되고 있는 PhpWord로 다른 사용환경 도입방식이 조금 다를 수 있습니다.
  composer를 이용하여 설치하고, 바로 아래 코드를 이용하여 관련 클래스 라이브러리를 도입한다

설치하다.
  1. 명령줄을 열고 프로젝트 루트로 들어가 다음 명령을 실행합니다.
  2,composer require phpoffice/phpword

사용 모드
  1、코드로 직접 word 문서 작성
  2、기존 word 템플릿을 읽고 관련 변수

템플릿 생성워드
  사용 시나리오: 적합고정된 틀이 있는 한 가지, 단지 몇 가지 중요한 부분만 바꿔야 한다.
  사용방법:다음코드 몇 줄을 소개하면 워드 전체를 교체할 수 있을 만큼 많은 기능이 문서를 참조할 필요가 있다

	//템플릿의 경로, word 버전은 docx가 좋습니다. 그렇지 않으면 읽지 못할 수 있습니다. 자신의 템플릿 위치에 따라 조정하십시오
	$path = 'public/letters/templates/word/letter1.docx';

	//word 경로 생성, 자체 디렉터리에 맞게 조정
	$filePath= 'public/letters/word/letter1.docx';

	//템플릿 개체 선언, 템플릿 읽기
	$templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor($path);

	//word에 해당하는 템플릿의 변수 바꾸기 ${test}
	$test ="이것은 교체된 내용입니다";
	$templateProcessor->setValue('test',$test);//팩스

	//새로운 생성word
	$templateProcessor->saveAs($filePath);

코드 워드
  사용 시나리오: 필요보다 유연한 워드 생성
  문법 소개: 소개일부 상용하고 필요한 기능은 불필요한 것도 소개하지 않는다.좀 더 직관적인 것이 중요합니다. 더 많은 기능이 문서를 참조해야 합니

	//phpword 개체 선언
	$phpWord = new \PhpOffice\PhpWord\PhpWord();

	//페이지의 내용을 저장하는 페이지를 선언합니다. 컨테이너에 해당합니다
	$section = $phpWord->addSection();

	//단락 텍스트 추가
	$section->addText('This is text');
	
	//선언 일반 문자, 다른 단락 문자, 뒤에 추가 문자를 사용할 수 있습니다
	$textrun = $section->addTextRun();

	//텍스트 추가
	$textrun->addText('This ');

	//위에 내용 뒤에 글자를 추가한다
	$textrun->addText('is');

	//글자가 줄을 바꾸면, 파라미터는 줄을 바꾼 줄의 수를 제어할 수 있다
	$textrun->addTextBreak(1);

	//段글자가 줄을 바꾸면, 인수는 줄을 바꾸거나 단락을 바꾸거나, 인수는 줄을 바꾸거나 바꾸거나 하는 수를 제어할 수 있다
	$section->addTextBreak(1);

	//텍스트 스타일, 문서 글꼴 스타일을 참조할 수 있는 여러 가지 스타일을 지정할 수 있습니다
	$textrun->addText('테스트',array('size'=>18,'bold'=>true,'name'=>'송체'));

	//하나의 배열을 정의해서 전달할 수 있는데, 본질은 모두 하나의 배열이다
	$fontStyle['size']=12;
	$fontStyle['bold']=true;
	$textrun->addText('测试',$fontStyle);

	
	

	//워드 문서 생성
	$filePath= 'public/letters/word/letter1.docx';
	$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
	$objWriter->save($filePath);

PS:
  1.Phpword는 코드로 word를 생성할 수 있지만, 일부 텍스트 이미지의 위치 결정은 매우 번거롭고 제어가 불가능하다.

  2. 가능한 한 템플릿을 사용합니다. 템플릿을 직접 변경하는 것이 더 편리합니다. 키워드만 바꾸면 됩니다.

  3、템플릿을 사용할 때 word 포맷이 docx라면 doc를 사용하면 오류를 보고할 수 있다는 점에 유의해야 한다.

결어
  이상 자신이 요 며칠 동안 Phpword를 사용할 때 조심해서 사용하였습니다. 여러분께서 시행착오를 덜 하시길 바랍니다. 또한 자신이 나중에 다시 사용할 때 복습할 수 있습니다. 만약 틀린 점이 있다면 지적해 주시기 바랍니다.

반응형