You cannot see this page without javascript.

웹 한글 뷰어 소스

아래아 한글 조회 수 9501 추천 수 0 2014.06.11 12:10:06

참고 문서

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:Docs1TestPdf.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>

엮인글 :
List of Articles
번호 제목 글쓴이 날짜sort 조회 수
369 APM mariadb download origin address LynX 2019-06-19 1989
368 APM What one can and should optimize LynX 2019-06-03 1415
367 CentOS mariadb install LynX 2019-05-31 1179
366 CentOS init mode change LynX 2019-05-30 1288
365 APM ext zip install LynX 2019-02-19 1612
364 APM ext ImageMagick install LynX 2019-02-19 511
363 3D Printer Pronterface(PrintRun) install file LynX 2018-09-13 753
362 CentOS Grub UUID change LynX 2018-08-08 867
361 Linux letsencrypt wildcard LynX 2018-07-26 798
360 Printer cura usb connection LynX 2018-07-06 666
359 CentOS cli 무선랜 LynX 2018-06-07 446
358 APM 윈도우에 APM 페키지 설치 file LynX 2018-05-04 586
357 APM MySQLTuner 설치 LynX 2018-04-27 544
356 CentOS CentOS7 커널 업데이트 LynX 2018-04-23 699
355 HTML Tag CSS 여러가지 모양 만들기 LynX 2018-02-08 771
354 Linux wkhtmltopdf wkhtmltoimage install LynX 2018-01-31 602
353 APM LZ4_LIBS Not Found (CentOS7, MariaDB 10.1.29) LynX 2018-01-03 485
352 APM mysql ./configure LynX 2017-12-15 804
351 APM PHP-7.2.0 LynX 2017-12-12 3157
350 Linux libiconv LynX 2017-12-08 558

XE Login