Category :
ColdFusion
Comments :
댓글쓰기
Posted by
장창학
at
3:04 AM
Adobe ColdFusion 9부터는 OpenOffice의 여러 공개 개발도구 및 라이브러리를 이용해서 웹에서 동적으로 PPT를 생성하거나, PPT를 업로드 하여 PDF로 변환하는 등 다양한 오피스문서를 생성, 변환하는 기능을 제공합니다. 물론 이전부터 Apache POI 프로젝트를 이용하여 Java와 ColdFusion의 통합으로 충분히 개발이 가능했지만 상당한 복잡스런 코딩과 실제 결과물이 그리 좋지 않는 문제점이 있었습니다. Adobe ColdFusion 9에서 지원하는 오피스문서 포맷 및 상호변환의 가능여부는 제 블로그 "ColdFusion 9에서의 PDF, SWF 그리고 Office 파일"에서 확인해 주세요.
![]() |
![]() |
오늘은 간단하게 웹게시판 등에서 사용자가 작성한 HTML포맷을 동적으로 PPT로 생성하여 다운로드 할 수 있도록 해 보겠습니다. 예를 들어 사용자가 게시판이나 CMS에서 문서를 작성하면, DB에 저장이 되고 이 Data를 읽어 들여 PDF 또는 PPT, DOC로 생성이 가능합니다. 여기서는 간단히 PPT의 생성을 해 보겠습니다. 단, DB저장 방식이 아닌 단순히 폼으로 작성된 HTML을 내용을 PPT로 생성해 보겠습니다.
Source Code Download
index.cfm - PPT의 내용을 작성하는 폼
<cfprocessingdirective pageencoding="utf-8">
<cfcontent type="text/html; charset=utf-8">
<cfset setEncoding("URL", "utf-8")>
<cfset setEncoding("Form", "utf-8")>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Making Powerpoint - 웹 파워포인트 문서만들기</title>
</head>
<body>
<strong>Making Powerpoint - 웹 파워포인트 문서만들기<strong>
<br /><br />
<cfform name="pptForm" method="post" action="makeppt.cfm">
<cftextarea richtext="true"
name="content"
toolbar="Default"
fontNames="Gulim, Dotum, Malgun Gothic, Batang, Verdana, Tahoma, Arial, Courier New"
fontSizes="10px, 11px, 12px, 14px, 16px, 18px, 22px, 26px, 32px, 48px"
required="yes"
width="950"
height="650">
</cftextarea>
<br />
<input type="image" src="btn_send.jpg">
</cfform>
</body>
</html>
makeppt.cfm - index.cfm에서 넘어온 Form data를 PPT로 변환하여 서버에 저장하는 파일
<cfprocessingdirective pageencoding="utf-8">
<cfcontent type="text/html; charset=utf-8">
<cfset setEncoding("URL", "utf-8")>
<cfset setEncoding("Form", "utf-8")>
<cflock timeout="60">
<cfpresentation
title="my presentation"
format= "ppt"
destination="#ExpandPath('./tmp/sample.ppt')#"
backgroundColor = "white"
overwrite = "yes">
<cfpresentationslide src="#ExpandPath('./tmp/sample.ppt')#" slides="1">
<cfoutput>#FORM.content#</cfoutput>
</cfpresentationslide>
</cfpresentation>
</cflock>
<a href="./tmp/sample.ppt">PPT 다운로드</a>
<br />
<a href="index.cfm">뒤로</a>
index.cfm파일에서 쓰인 <cfform>태그는 일반적인 <html>에서의 <form>태그와 유사한 ColdFusion만의 고유 태그입니다. 여기서 이 태그를 쓴 이유는 웹에디터(FCKeditor)를 동적으로 생성하기 위함입니다. Adobe ColdFusion 8이상의 버전에서는 웹에디터를 일일히 개발자가 배포 사이트에서 다운로드하여 웹페이지내의 Form에 적용해 주지 않아도 cftextarea richtext="true" 와 같이 <cfform>태그내에서 <cfteaxtarea> 태그의 옵션 중 richtext="true"와 같이 옵션을 주기만 하면 알아서 자동으로 FCKEditor(지금의 CKEditor)를 생성하여 적용해 줍니다. <cfform>을 쓰지 않고 일반 HTML의 <form>을 쓰려면 <textarea>에 FCKeditor와 같은 웹에디터를 수동으로 적용해 주면 됩니다.
index.cfm파일에서 원하는 대로 Table 생성이나, Image 임포트 등 다양한 문서의 양식을 만들고 전송버튼을 누르게 되면 화면에 보이는 대로 거의 80~90%이상의 동일한 모양으로 ppt를 생성해 줍니다. 100% 동일한 화면을 구현하기 힘든 이유는 사실 OpenOffice와 MSOffice문서와의 관계라고 볼 수 있습니다. OpenOffice는 표준문서포맷인데 반해 MSOffice문서를 OpenOffice에서 열면 100%동일한 양식이 전부 표현되지 않습니다. 웹 역시 DHTML이라는 표준 문서양식포맷이 있지만 이를 오피스문서내에서 로드하면 약간의 모양에 있어 100%만족스런 결과를 얻기가 좀 어렵습니다.
하지만 간단하게 표현된 양식은 거의 동일하게 변환되므로 매우 유용한 기능임에는 분명합니다. 반대로 PPT파일을 HTML문서로 변환하는 것 역시 가능합니다. 이는 다음 Post에서 다뤄보겠습니다. 파워포인트에서 HTML문서를 생성하는 방법에는 Apache POI를 이용한 pptutils라는 ColdFusion Component가 공개되어 있습니다. 물론 이 pptutils는 ColdFusion 7이전의 버전과 Railo, OpenBD등에서 사용할 수 있습니다. (Railo와 pptutils의 예제는 다음 Post에서 다뤄보겠습니다.)
makeppt.cfm 파일에서는 넘겨받은 Form data를 <cfpresentation>와 <cfpresentationslide>태그를 이용하여 PPT를 생성하는 코드입니다. 이 두 태그는 Adobe ColdFusion 8이상에서 Flash 기반의 웹 Presentation을 생성하기 위한 태그이지만 ColdFusion 9부터 PPT의 생성등 몇가지 기능이 추가되었습니다. 웹프리젠테이션을 생성하는 예제는 "CFPRESENTATION 태그로 동적 웹프리젠테이션 생성하기, 그리고 Tip"에서 볼 수 있습니다.

|




ColdFusion (73)
Comments