참고 문서
http://www.hancom.com/menual.menualView.do?menuFlag=1&board_seqno=76
■ html 에 object 태그 기술
<object id="TASTE" classid="clsid:7DBB2674-1EA3-4BB3-A868-48C312083D2"
codebase="./TestOcx.cab#version=1,0,0,1" ...>
<OBJECT id=HwpCtrl style="LEFT: 0px; TOP: 0px" height=600 width=700 align=center
classid=CLSID:BD9C32DE-3155-4691-8972-097D53B10052>
codebase 값은 해당 url 의 cab파일을 가리키고 있네.
한컴사이트의 예제 HTML을 보니 codebase가 없어서 헷갈렸는데 내 정리 겸 추측은 이렇다.
"한글컨트롤의 배포의 경우에는 cab파일이 필요없는거 같다.
아래아한글 프로그램 설치시 해당 activeX 컨트롤이 이미 레지스트리에 등록이 되는 것 같다.
html 에서의 해당 object id 가 IE 단에 매핑이 되지 않았을 경우
activeX 허용하겠냐고 뜨고, 허용한다고 하면 IE에 매핑이 되게 된다.
즉 새로 배포하는 개념이 아니라 이미 있는 것을 IE에 매핑시키는 과정만 있는 것이 된다.
그러니까... 한글프로그램을 설치하지 않는다면 해당 컨트롤은 사용할 수 없는것이다.
CAB 파일을 따로 한컴에서 배포한다면 몰라도 한컴사이트에 올라와 있는것은 보이지 않았다.
ocx를 이용해 CAB파일을 만드는 방안도 있겠으나... 내용을 아는 한컴직원이라면 잘 만들수 있겠지만
모르는 사람이 제대로 만들기는 어렵지 않을까 생각이 된다."
한글컨트롤의 경우 C:HNCHwp70 와 같은 위치에 있음.
HwpCtrl 의 속성을 확인해보니 버젼이 7.5.2.8 이네
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<script language="javascript">
function keypressed() {
var key=event.keyCode;
if(key>=112 || key<=123) { alert('특수키는 사용불가합니다.'); return false; }
if(key==18) { alert('특수키는 사용불가합니다.'); return false; }
if(key==17) { alert('특수키는 사용불가합니다.'); return false; }
document.onmousedown=click;
document.onkeydown=keypressed;
//:::::::::: 불필요한 key 사용 방지 종료 :::::::::::::::::::
</script>
<script language="JavaScript" type="text/JavaScript">
//hwpctrl를 이용하기 위해서는 한글 2002이상이 사용자 컴퓨터에 깔려 있어야 한다.
//active X처럼 특별히 웹상에서 설치해야 할 파일은 없다.
var MinVersion = 0x0505010C;
var data;
var pHwpCtrl;
//페이지 로드시 맨 처음 실행될 함수.
function OnStart()
{
pHwpCtrl = document.HwpCtrl;
_VerifyVersion();
document.HwpCtrl.SetClientName("DEBUG");
URLOpen();
}
function _VerifyVersion()
{
// 설치확인
if(pHwpCtrl.getAttribute("Version") == null)
{
alert(!"한글 2002 컨트롤이 설치되지 않았습니다.");
return;
}
//버젼 확인
CurVersion = pHwpCtrl.Version;
if(CurVersion < MinVersion)
{
alert(!"HwpCtrl의 버젼이 낮아서 정상적으로 동작하지 않을 수 있습니다.n"+"최신 버젼으로 업데이트하기를 권장합니다.nn"
+ "현재 버젼: 0x"
+ CurVersion.toString(16)
+ "n"
+ "권장 버젼: 0x"
+ MinVersion.toString(16) + " 이상");
}
}
//한글파일 문서 열기
function URLOpen()
{
var bRes = document.HwpCtrl.RegisterModule("FilePathCheckDLL", "FilePathChecker");
document.HwpCtrl.Clear(1); //문서 내용 지움
//document.HwpCtrl.Open("c:/주말교통상황(12.10).hwp", "", "code:acp;url:true")
document.HwpCtrl.Open("한글파일경로", "", "code:acp;url:true")
document.HwpCtrl.EditMode=1;
document.HwpCtrl.MovePos(2); //캐럿을 문서 처음으로 이동
}
//한글 컨트롤 오브젝트를 html에 심는 함수
function WriteEmbedHanPop(){
document.write("<OBJECT id='HwpCtrl' style='overflow-x:hidden; LEFT: 0px; TOP: 0px;' height='650' width='840' align='center' classid='CLSID:BD9C32DE-3155-4691-8972-097D53B10052'>");
document.write("<PARAM NAME='TOOLBAR_MENU' VALUE='FALSE'>");
document.write("<PARAM NAME='TOOLBAR_STANDARD' VALUE='FALSE'>");
document.write("<PARAM NAME='TOOLBAR_FORMAT' VALUE='FALSE'>");
document.write("<PARAM NAME='TOOLBAR_DRAW' VALUE='FALSE'>");
document.write("<PARAM NAME='TOOLBAR_TABLE' VALUE='FALSE'>");
document.write("<PARAM NAME='TOOLBAR_IMAGE' VALUE='FALSE'>");
document.write("<PARAM NAME='TOOLBAR_HEADERFOOTER' VALUE='FALSE'>");
document.write("<PARAM NAME='SHOW_TOOLBAR' VALUE='FALSE'>");
document.write("</OBJECT>");
}
</script>
</head>
<body onLoad="OnStart()">
<table cellpadding="0" border=0 cellspacing="0" class="fr01" align="center">
<tr>
<td valign="top">
<!-- 보고서 뷰어 -->
<div style="width:100%;height:100%;">
<!-- 한글 파일 미리 보기 보여줄 장소에 오브젝트 엠베디드 하는 스크립트 적용 -->
<script language="javascript">WriteEmbedHanPop()</script>
</div>
</td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>우리은행 IT인력관리 시스템</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<script src="/../common/js/common.js" type="text/javascript"></script>
<link href="../common/css/style.css" rel="stylesheet" type="text/css">
<script language="JavaScript" type="text/JavaScript">
//hwpctrl를 이용하기 위해서는 한글 2002이상이 사용자 컴퓨터에 깔려 있어야 한다.
//active X처럼 특별히 웹상에서 설치해야 할 파일은 없다.
var MinVersion = 0x0505010C;
var data;
var pHwpCtrl;
//페이지 로드시 맨 처음 실행될 함수.
function onStart()
{
pHwpCtrl = formView_frm.HwpCtrl;
_VerifyVersion();
formView_frm.HwpCtrl.SetClientName("DEBUG");
URLOpen();
}
function _VerifyVersion()
{
// 설치확인
if(pHwpCtrl.getAttribute("Version") == null)
{
alert("한글 2002 컨트롤이 설치되지 않았습니다.");
return;
}
//버젼 확인
CurVersion = pHwpCtrl.Version;
if(CurVersion < MinVersion)
{
alert("HwpCtrl의 버젼이 낮아서 정상적으로 동작하지 않을 수 있습니다.n"+
"최신 버젼으로 업데이트하기를 권장합니다.nn"+
"현재 버젼: 0x" + CurVersion.toString(16) + "n"+
"권장 버젼: 0x" + MinVersion.toString(16) + " 이상"
);
}
}
//한글파일 문서 열기
function URLOpen()
{
//c:/test.hwp 부분이 열 한글의 파일의 경로를 적어주는 부분인데 절대 경로여야 한듯.
if(!formView_frm.HwpCtrl.Open("c:/test.hwp", "", "code:acp;url:true"))
{
alert("문서 열기 실패");
}
formView_frm.HwpCtrl.EditMode = 1;
}
//한글 컨트롤 오브젝트를 html에 심는 함수
function WriteEmbedHanPop(){
document.write("<OBJECT id=HwpCtrl style='LEFT: 0px; TOP: 0px;' height=768 width=1024 align=center classid=CLSID:BD9C32DE-3155-4691-8972-097D53B10052>");
document.write("<PARAM NAME='TOOLBAR_MENU' VALUE='FALSE'>");
document.write("<PARAM NAME='TOOLBAR_STANDARD' VALUE='FALSE'>");
document.write("<PARAM NAME='TOOLBAR_FORMAT' VALUE='FALSE'>");
document.write("<PARAM NAME='TOOLBAR_DRAW' VALUE='FALSE'>");
document.write("<PARAM NAME='TOOLBAR_TABLE' VALUE='FALSE'>");
document.write("<PARAM NAME='TOOLBAR_IMAGE' VALUE='FALSE'>");
document.write("<PARAM NAME='TOOLBAR_HEADERFOOTER' VALUE='FALSE'>");
document.write("<PARAM NAME='SHOW_TOOLBAR' VALUE='FALSE'>");
document.write("</OBJECT>");
}
</script>
</head>
<body onload="OnStart()">
<form name=formView_frm>
<table cellpadding="0" border=0 cellspacing="0" class="fr01">
<tr>
<td valign="top">
<!-- 보고서 정보 -->
<table width=770 border="0" cellspacing="2" cellpadding="1">
<tr>
<td width="80" align="right">이슈항목 : </td>
<td >이슈항목1</td>
</tr>
<tr>
<td width="80" valign="top" align="right">보고서 :</td>
<td >
<select size="3" style="width:600px">
<option value="1">이슈항목1-1</option>
<option value="2">이슈항목1-2</option>
<option value="3">이슈항목1-3</option>
<option value="4">이슈항목1-4</option>
<option value="5">이슈항목1-5</option>
</select>
</td>
</tr>
</table>
<!-- 보고서 뷰어 -->
<div style="width:1024px;height:768px; overflow-y:scroll;">
<!-- 한글 파일 미리 보기 보여줄 장소에 오브젝트 엠베디드 하는 스크립트 적용 -->
<script language="javascript">WriteEmbedHanPop()</script>
</div>
</td>
</tr>
</table>
</form>
</body>
</html>
<html>
<head>
<title>제목 없음</title>
<meta name="generator" content=" 6.0.0.63">
<META content="text/html; charset=ks_c_5601-1987" http-equiv=Content-Type>
</head>
<SCRIPT language="JavaScript">
<!--
//_GetBasePath()가 작동하지 않으면, OnStart()함수의 BasePath=_GetBasePath();를 지우고, 이 예제 파일이 있는 곳을 지정해 준다.
var MinVersion = 0x05050111;
var vHwpCtrl;
var BasePath;
var HWP_UNIT = 283.465;
function window.onload()
{
BasePath = _GetBasePath();
vHwpCtrl = HwpControl.HwpCtrl;
if(!_VerifyVersion())
return;
InitToolBarJS();
vHwpCtrl.Open(BasePath+"toolbar.hwp", "HWP", "template:true");
}
function _VerifyVersion()
{
//설치 확인
if(vHwpCtrl.getAttribute("Version") == null)
{
alert("한글 2002 컨트롤이 설치되지 않았습니다.");
return false;
}
//버젼 확인
CurVersion = vHwpCtrl.Version;
if(CurVersion < MinVersion)
{
alert("HwpCtrl의 버젼이 낮아서 정상적으로 동작하지 않을 수 있습니다.n"+
"최신 버젼으로 업데이트하기를 권장합니다.nn"+
"현재 버젼:" + CurVersion + "n"+
"권장 버젼:" + MinVersion + " 이상"
);
return false;
}
return true;
}
function _GetBasePath()
{
//BasePath를 구한다.
var loc = unescape(document.location.href);
var lowercase = loc.toLowerCase(loc);
if (lowercase.indexOf("http://") == 0) // Internet
{
return loc.substr(0,loc.lastIndexOf("/") + 1);//BasePath 생성
}
else // local
{
var path;
path = loc.replace(/.{2,}:/{2,}/, ""); // file:/// 를 지워버린다.
return path.substr(0,path.lastIndexOf("/") + 1);//BasePath 생성
}
}
function InitToolBarJS() // 툴바 보여주기
{
HwpControl.HwpCtrl.SetToolBar(-1, "TOOLBAR_MENU");
HwpControl.HwpCtrl.SetToolBar(0, "DrawObjCreatorFreeDrawing, DrawObjCreatorTextBox, ViewZoomRibon, FilePreview, Print, Separator, Undo, Redo, Separator, Cut, Copy, Paste,"
+"Separator, ParaNumberBullet, MultiColumn, SpellingCheck, HwpDic, Separator, PictureInsertDialog, MacroPlay1");
HwpControl.HwpCtrl.SetToolBar(1, "DrawObjCreatorLine, DrawObjCreatorRectangle, DrawObjCreatorEllipse,"
+"DrawObjCreatorArc, DrawObjCreatorPolygon, DrawObjCreatorCurve, DrawObjCreator, DrawObjTemplateLoad,"
+"Separator, ShapeObjSelect, ShapeObjGroup, ShapeObjUngroup, Separator, ShapeObjBringToFront,"
+"ShapeObjSendToBack, ShapeObjDialog, ShapeObjAttrDialog");
HwpControl.HwpCtrl.SetToolBar(2, "StyleCombo, CharShapeLanguage, CharShapeTypeFace, CharShapeHeight,"
+"CharShapeBold, CharShapeItalic, CharShapeUnderline, ParagraphShapeAlignJustify, ParagraphShapeAlignLeft,"
+"ParagraphShapeAlignCenter, ParagraphShapeAlignRight, Separator, ParaShapeLineSpacing,"
+"ParagraphShapeDecreaseLeftMargin, ParagraphShapeIncreaseLeftMargin");
HwpControl.HwpCtrl.ReplaceAction("FileNew", "HwpCtrlFileNew");
HwpControl.HwpCtrl.ReplaceAction("FileSave", "HwpCtrlFileSave");
HwpControl.HwpCtrl.ReplaceAction("FileSaveAs", "HwpCtrlFileSaveAs");
HwpControl.HwpCtrl.ReplaceAction("FileOpen", "HwpCtrlFileOpen");
HwpControl.HwpCtrl.SetToolBar(3, "FileNew, FileSave, FileSaveAs, FileOpen");
HwpControl.HwpCtrl.ShowToolBar(true);
}
function OnShowNewToolBar()
{
HwpControl.HwpCtrl.SetToolBar(3, 1);
}
function OnHideNewToolBar()
{
HwpControl.HwpCtrl.SetToolBar(3, 2);
}
</SCRIPT>
<BODY>
<FORM name = "HwpControl">
<INPUT type='button' value='저장하기,불러오기 단추 보이기' onclick='OnShowNewToolBar();'>
<INPUT type='button' value='저장하기,불러오기 단추 감추기' onclick='OnHideNewToolBar();'>
<BR><BR>
<OBJECT id=HwpCtrl style="LEFT: 0px; TOP: 0px" height=800 width=800 align=center classid=CLSID:BD9C32DE-3155-4691-8972-097D53B10052>
</OBJECT>
</FORM>
<form name="form2" method="post">
<textarea name="content102" style="display:none;"></textarea>
</form>
</BODY>
</html>
<html>
<head>
<script language="javascript">
var vHwpCtrl;
function PDF_Print()
{
var app = new ActiveXObject("AcroExch.App");
var doc = new ActiveXObject("AcroExch.PDDoc");
doc.open("c:Docs 1TestPdf.pdf");
var jso = doc.GetJSObject(); // retun javascript object (only used by javascript)
jso.addWatermarkFromText("aa");
var avDoc = doc.OpenAVDoc("print"); //print pdf file
avDoc.PrintPages(0, 1, 2, 0, 0);
}
function WORD_TO_PDF()
{
var wdExportFormatPDF= 17;
var wordApp = new ActiveXObject("Word.Application");
var wordDocs = wordApp.Documents;
var wordDoc = wordDocs.Open("d:testTestDoc.doc");
wordDoc.ExportAsFixedFormat("d:testTestDoc.pdf", wdExportFormatPDF);
}
function EXCEL_TO_PDF()
{
var xlTypePDF = 0;
var excelApp = new ActiveXObject("Excel.Application");
var excelWorkBooks = excelApp.WorkBooks;
var excelWorkBook = excelWorkBooks.Open("d:testTestXls.xls");
excelWorkBook.ExportAsFixedFormat(xlTypePDF, "d:testTestXls.pdf");;;
}
function PPT_TO_PDF()
{
var ppFixedFormatTypePDF = 2;
var ppFixedFormatIntentPrint = 2;
var ppSaveAsPDF = 32;
var ppSaveAsPNG = 18;
var pptApp = new ActiveXObject("PowerPoint.Application");
var pptPresentations = pptApp.Presentations;
var pptPresentation = pptPresentations.Open("d:testTestPpt.ppt");
pptPresentation.SaveAs("d:testTestPpt.pdf", ppSaveAsPDF ); //convert pdf
pptPresentation.SaveAs("d:testTestPpt.png", ppSaveAsPNG ); //convert image
//pptPresentation.ExportAsFixedFormat("d:testTestPpt.pdf", ppFixedFormatTypePDF, ppFixedFormatIntentPrint ); // not working, not find the cause.
}
function HWP_PRINT()
{
hwpCtrl.Open("d:testTestHwp.hwp");
var vPrintAct = hwpCtrl.CreateAction("Print");
var vPrintSet = vPrintAct.CreateSet();
var vWaterMarkSet = vPrintSet.CreateItemSet("PrintWatermark", "PrintWatermark");
vPrintAct.GetDefault(vPrintSet);
vPrintSet.SetItem("Device", 0);
vWaterMarkSet.SetItem("String" , "bdc");
vPrintAct.Execute(vPrintSet);
}
</script>
</head>
<body onload >
<form name = "HwpControl">
<input type="button" value='PDF' name="job" onclick='PDF_Print()' >
<input type="button" value='WORD' name="job" onclick='WORD_TO_PDF()' >
<input type="button" value='EXCEL' name="job" onclick='EXCEL_TO_PDF()' >
<input type="button" value='PPT' name="job" onclick='PPT_TO_PDF()' >
<input type="button" value='HWP' name="job" onclick='HWP_PRINT()' >
</form>
<object id=hwpCtrl style="left: 0px; top: 0px" height=80% width=80% align=center classid='CLSID:BD9C32DE-3155-4691-8972-097D53B10052' / >
</body>
</html>