준비 먼저 Windows 시스템에 일반적인 WAMP 환경이 설치 및 구성되어 있는지 확인하세요. Interop은 순전히 Windows 기능이므로 Windows 플랫폼에서 Apache와 PHP를 빌드하겠습니다. 이 예에서는 설치 및 구성이 매우 쉬운 EasyPHP 14.1을 사용했습니다. 다음으로 Microsoft Office를 설치하겠습니다. 버전이 꼭 필요한 것은 아닙니다. Office 2013 Professional을 사용하고 있지만 2007 이후의 모든 Office 버전이 작동합니다. 그런 다음 Interop 애플리케이션 개발을 위한 라이브러리(PIA(Priority Interaction Components)라고도 함)가 설치되어 있는지 확인해야 합니다. 이를 확인하기 위해 탐색기를 열고 Microsoft.Office.Interop.Word 항목을 볼 수 있습니다(이 스크린샷에 밑줄이 그어져 있음). 이것이 이 예에서 사용할 PIA입니다. "이름", "버전" 및 "공개 키 토큰"에 특별한 주의를 기울이십시오. 우리는 PHP 스크립트에서 이를 사용할 것입니다. 이 디렉토리에서는 프로그래밍(PHP뿐만 아니라 VB.net, C# 등)에 사용되는 다른 PIA(전체 Office 제품군 포함)도 볼 수 있습니다. 이 목록에 Microsoft.Office.Interop의 전체 패키지가 포함되어 있지 않으면 Office를 다시 설치하고 설치에 PIA를 포함할 수도 있습니다. 이 패키지를 수동으로 다운로드하여 설치할 수도 있습니다. 자세한 설치 단계는 이 MSDN 페이지에서 확인할 수 있습니다. 참고: Microsoft Office 2010 PIA 재배포 가능 패키지만 별도로 다운로드하여 설치할 수 있습니다. 이 패키지의 PIA 버전은 14.0.0입니다. 버전 15는 Office를 설치해야만 사용할 수 있습니다. 마지막으로 php.ini 파일에서 PHP 확장 php_com_dotnet.dll을 활성화하고 서버를 다시 시작해야 합니다. 이제 프로그래밍을 시작할 수 있습니다. HTML 양식 이 데모는 주로 백그라운드 처리에 중점을 두기 때문에 프런트엔드 디스플레이에 간단한 HTML 형식을 사용합니다. "이름"을 입력하기 위한 텍스트 상자, "성별"에 대한 라디오 버튼 그룹, "나이"에 대한 필드 값 컨트롤 및 "메시지" 작성을 위한 텍스트 필드가 있습니다. 마지막으로 "제출" 버튼이 필요합니다. . 파일 이름을 "index.html"로 지정하고 URL을 통해 직접 파일에 액세스할 수 있도록 가상 호스트의 루트 디렉터리에 저장합니다(예: http://test/test/interop 백스테이지 백엔드 PHP 파일은 우리가 논의할 핵심 부분입니다. 아래 코드를 먼저 게시한 후 차근차근 설명해 드리겠습니다
양식에 전달된 값을 가져오는 데 사용되는 $inputs 변수를 설정한 후 인쇄 날짜를 저장하기 위한 더미 값을 만들어야 합니다. 이 변수가 필요한 이유는 나중에 논의하겠습니다. 이제 다음과 같은 4줄의 내용이 표시됩니다. 더 중요한 코드:
PHP에서 COM을 조작하려면 어셈블리에서 클래스 인스턴스를 요청해야 합니다. 우리의 경우 Word를 사용하여 작업하겠습니다. 이전 스크린샷에 표시된 코드를 고려하면 완전히 서명된 Word PIA를 구성할 수 있습니다.
다음 두 단계를 설정하여 단어 개체를 초기화할 수 있습니다. 먼저 visible 속성을 true로 설정하면 단어 개체를 배경에 저장하거나 전경에 표시할 수 있습니다. 그런 다음 처리할 문서를 열고 이를 $d 변수로 인스턴스화합니다. 문서 개체에 html 형식의 텍스트를 기반으로 문서 내용을 추가합니다. 여기서 일부 매개변수를 설정할 수 있습니다. 1 코드는 유연하지 않습니다. PHP 콘텐츠를 변경하려면 스크립트를 다시 수정해야 합니다.
PHP에서는 양식 제출에서 얻은 "이름" 값으로 간단히 대체합니다. 이 접근 방식은 첫 번째 옵션의 단점을 방지합니다. 올바른 구분 기호를 찾으면 됩니다. 이 예에서는 사용된 템플릿이 워드 문서라는 점을 제외하면 템플릿 렌더링을 수행하는 것과 더 유사합니다.
이 방법은 유연하고 빠르며 Word의 모범 사례를 따릅니다. 또한 파일의 전체 텍스트 검색을 방지하여 성능 향상에 도움이 됩니다. 이 옵션에도 단점이 있습니다. 간단히 말하면 Word는 출시 이후 명명된 인덱스 필드를 지원한 적이 없습니다. Word 문서에서 생성한 필드에 이름을 제공하지만 여전히 숫자 아래 첨자를 사용하여 각 필드에 액세스합니다. 이는 또한 필드 인덱스와 양식 필드 매뉴얼 이름 사이의 매핑을 수행하기 위해 전용 함수(setupfields)를 사용해야 하는 이유를 설명합니다
printdate 필드에는 해당 양식 필드가 없다는 점에 유의하세요. 이것이 우리가 $inputs 배열의 키로 가짜 printdate를 추가하는 이유입니다. 이 키가 없어도 스크립트는 계속 실행될 수 있지만 인덱스 printdate가 $inputs 배열에 존재하지 않는다는 메시지가 표시됩니다. 양식 데이터를 사용하여 필드 값을 업데이트한 후 다음 명령을 사용하여 문서를 인쇄합니다.
PrintOut 메소드에는 여러 가지 선택적 매개변수가 있습니다. 여기서는 가장 간단한 형식을 사용합니다. 그러면 Windows 시스템에 연결된 기본 프린터로 사본이 인쇄됩니다.
또한 인쇄 작업이 백그라운드를 완전히 종료하는 데 시간이 걸리기 때문에 워드 응용 프로그램을 종료하기 전에 잠시 기다려야 합니다. 지연 없이(3) $w->Quit이 즉시 실행되고 인쇄 작업이 즉시 종료됩니다. 마지막으로 $w->Quit(false)를 호출하여 PHP 스크립트 호출을 통해 단어 응용 프로그램을 닫도록 선택합니다. 여기에 제공된 유일한 매개변수는 종료하기 전에 변경 사항을 저장할지 여부를 나타내는 것입니다. 문서를 변경했지만 다른 사용자의 입력을 위한 깔끔한 템플릿을 원하기 때문에 변경 사항을 저장하고 싶지 않습니다. 코딩이 끝나면 양식 페이지를 로드하고 일부 내용을 입력한 후 양식을 제출할 수 있습니다. 아래 스크린샷은 Word 문서를 업데이트하는 동안 PHP 스크립트의 출력을 보여줍니다. 코딩 속도를 높이고 PIA에 대한 이해를 높입니다 PHP는 약한 유형의 언어입니다. COM 개체는 개체 유형입니다. PHP 코딩 프로세스에서는 개체에서 코드 자동 제안 및 완성 기능을 사용할 수 없습니다. Word 응용 프로그램, 문서 또는 필드에서도 마찬가지입니다. 우리는 그것이 어떤 기능을 가지고 있는지, 어떤 방법을 지원하는지 모릅니다.
C# 코드를 PHP로 마이그레이션하는 것은 전혀 무섭지 않습니다. 먼저 몇 가지 C# 코드를 보여드리겠습니다. C# 코드가 이전에 보여드린 PHP 코드 베이스와 정확히 동일하다는 것을 알 수 있습니다. C#은 강력한 형식의 언어이므로 일부 형식 변환 문을 볼 수 있으며 변수에 형식을 명시적으로 할당해야 합니다. 코드 유형을 사용하면 코드의 자동 프롬프트 및 자동 코드 완성 기능을 즐길 수 있으므로 개발 속도가 크게 향상됩니다.
가장 중요한 것은 Office PIA의 공식 Microsoft 문서, 특히 문서에 포함된 각 Office 애플리케이션의 네임스페이스가 항상 우리에게 필요한 가장 중요한 참고 자료가 된다는 것입니다. 가장 일반적으로 사용되는 세 가지 애플리케이션은 다음과 같습니다.
결론 이 기사에서는 PHP COM 라이브러리와 Microsoft Office Interop 기능을 사용하여 Word 문서를 섀도우하는 방법을 보여줍니다. Windows와 Office는 일상생활에서 널리 사용된다고 할 수 있습니다. Windows 플랫폼에서 PHP를 개발하는 프로그래머에게는 Office나 Windows 및 PHP의 강력한 기능을 알고 이해할 수 있는 능력이 매우 필요합니다. PHP의 COM 확장을 사용하면 이 조합을 마스터할 수 있는 문이 열립니다. 프로그래밍의 이 부분에 관심이 있으신 경우 의견을 남겨주시면 이 주제에 대한 추가 기사 작성을 고려해 보겠습니다. 저는 이 접근 방식을 사용하여 더욱 실제적인 애플리케이션 개발을 기대하고 있습니다. |