PDF 문서는 상당히 강력한 기능을 제공하지만, 많은 내용이 담긴 문서의 경우에는 그 용량 또한 무지하지 못할 정도로 커지게 되므로, 웹 상에서 배포할 할 때는 파일이 클라이언트로 모두 다운로드될 때 까지 대기 해야만 합니다.
구글도서나 YES24와 같은 사이트에는 즉시 응답성을 위해서 이미지 포맷을 이용하여 미리보기를 제공하여 즉시 응답성을 높이고 있는데요. 그래서 PDF 문서를 이미지로 변환하여 웹 상에서 제공할 수 있지 않을까 하고 생각해 보았습니다.
이미지로 변환하는 기능은 Acrobat에서 제공하고 있으므로, C#에서도 Acrobat의 기능을 이용하여 PDF를 이미지로 변경하는 것이 가능합니다.
이미지로 변환하기 위해서는 우선 Adobe Acrobat이 설치되어 있어야 합니다.
애석하게도 Acrobat Reader는 Acrobat관련 인터페이스를 인스턴스화 할 수 있는 COM 인터페이스를 노출하지 않으므로, 사용할 수 가 없습니다.
이미지 변환을 위해서 우선 프로젝트에 Acrobat Type Library를 COM 항목에서 참조로 추가합니다.
아래와 같이 Acrobat 또는 Adobe Acrobat Type Library를 참조로 추가하여 주세요.
그리고, 변환을 하는 코드는 아래와 같습니다.
// 아크로벳 문서 객체를 생성하고, 지정한 파일명의 PDF 문서를 읽어들입니다.
Acrobat.AcroPDDoc pdfDoc = new Acrobat.AcroPDDoc();
Visual Studio 2010 Beta 2 에서는 UnitTest에 대한 Code Coverage 활성화하는 설정방법이 변경되었습니다.
Visual Studio 2008에서의 Test Setting 과 Visual Studio 2010에서의 Test Setting이 달라서 한동안 애를 먹었는데요.
Visual Studio 2010 Beta 2에서 Code Coverage 를 사용하기 위한 방법은 아래와 같습니다.
테스트 프로젝트가 포함된 솔루션에서 Solution Items 폴더 아래에 존재하는 Local.testsettings 파일을 더블 클릭하여 엽니다.
Data and Diagnostics 항목을 선택합니다.
Code Coverage 항목의 Enabled 를 체크합니다.
Configure 버튼을 클릭하면, Code Coverage Detail 창이 뜹니다.
Code Coverage 대상이 될 어셈블리를 선택합니다.
유닛테스트 실행 후 Code Coverage Results 창을 통해 Code Coverage 정보를 확인 할 수 있습니다.
집에 있는 데스크톱 컴퓨터에 문제가 생겨서 포맷을 하고 재설치중입니다. 운영체제 및 업데이트는 대충 다 이뤄진듯 하고 이제 Visual Studio를 설치하고 개발환경을 셋팅하고 있는데요. 그동안은 집에서는 영문버전 Visual Studio를 사용했었는데 이번에는 아무리 찾아도 영문판 Visual Studio 설치DVD가 보이질 않아서 어쩔수 없이 한글판 Visual Studio를 설치하였습니다. 얼마 전 Visual Studio 2008 SP1의 경우에는 이미 한글판이 출시되어 있어서 설치를 했습니다. 하지만, 이번 SP1의 경우에는 ASP.NET MVC 는 포함되지 않아서 아직 ASP.NET MVC의 경우에는 아직 한글판이 존재하지 않습니다. 물론, 현재 배포버전인 MVC Preview 3이후에 Preview 4가 나올 듯 하니 아직까지 정식버전 및 한글지원 버전은 좀 더 기다려야 할 듯 합니다.
하지만, 저같은 경우에는 이전에 MVC로 진행하던 것도 있고 해서 ASP.NET MVC Preview 3를 설치하였습니다. 설치시에는 문제가 없었지만, Visual Studio 실행시 새 프로젝트에서 "ASP.NET MVC Web Application" 프로젝트가 보이질 않았습니다. 설치는 정상적으로 이뤄졌는데, 프로젝트 템플릿이 제대로 로드가 되지 않는듯 하여, 인터넷을 뒤지기 시작했습니다.
역시, 제가 생각하는 것은 이미 다른 누군가가 고맙게도 해결책을 내놓아 두었더군요. 이번의 경우에는 taeyo.net에서 찾았습니다.
다음을 위해서 여기에 정리해 두자면, 설치후 프로젝트 템플릿이 로드 되지 않는 이유는 영문판과 한글판의 경우 프로젝트 템플릿이 저장되는 경로(버전)이 다르기 때문이며, 영문 버전(1033)폴더에 등록되어 있는 프로젝트 템플릿파일(zip파일)을 한글 버전(1042)폴더로 복사해 넣고, 등록과정을 거치면 사용이 가능합니다. 유의할 점은 ASP.NET MVC의 경우 WEB 프로젝트 외에 Test 프로젝트 템플릿도 함께 등록해줘야 합니다. ASP.NET MVC는 MVC용 테스트 프로젝트가 따로 존재하기 때문입니다. 그리고, 프로젝트에서 추가할 수 있는 Controller 클래스등의 아이템 템플릿들도 등록해야 합니다.
ASP.NET MVC 프로젝트 템플릿 복사 C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates\CSharp\Web\1033 폴더(VS 영문판용 폴더)에 존재하는 MvcWebApplicationProjectTemplateP3.cs.zip 파일을 C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates\CSharp\Web\1042 폴더(VS 한글판용 폴더)로 복사한다.
ASP.NET MVC용 테스트 프로젝트 템플릿 복사 C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates\CSharp\Test\1033 폴더(VS 영문판용 폴더)에 존재하는 MvcWebApplicationTestProjectTemplateP3.cs 파일을 C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates\CSharp\Test\1042 폴더(VS 한글판용 폴더)로 복사한다.
MVC용 아이템 템플릿을 생성 MVC용 아이템 템플릿은 영문판용 폴더만 존재하고 한글판용 폴더는 존재하지 않습니다. C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC\1033 폴더에 포함된 파일들을 C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC\1042 폴더를 새로 생성하여 추가합니다.
Visual Studio 2008 명령 프롬프트에서 devenv.exe /installvstemplates devenv.exe /setup 명령을 실행한다.
Visual Studio의 재시작시에 CopySourceAsHtml에서 오류가 발생하는 문제의 해결방법을 첨부합니다. (2007.10.18)
블로그나 게시판등에 Visual Studio에서 개발하던 소스를 추가하기 위해서 복사&붙여넣기를 하면 탭간격이나 글꼴등의 문제로 인해서 직접 다듬어야 하는 경우가 자주 발생합니다. 개발자라면 누구나 느끼는 문제일텐데요.
Visual Studio를 이용하고 계시는 분이라면 이러한 불편함을 말끔하게 해소해 주는 Visual Studio Addin을 유경상님께서 블로그에 소개시켜주시고 있습니다.
CopySourceAsHtml 이라는 Addin인데요. 원본파일은 한글문제와 여러가지 문제가 존재하여 감사하게도 유경상님께서 따로 한글환경에서도 문제없이 돌아가는 버전까지 공개해주시고 계시죠.
좀더 자세한 내용을 알고 싶으시거나 자료를 다운로드 받고자 하시는 분은 유경상님 블로그로 방문해보세요.
(저 같은 경우에는 유경상님 블로그에서 받은 파일로 Visual Studio 2008에 등록시에 최초에는 잘 실행이 되었지만, 재 시작시에 CopySourceAsHtml에서 오류가 발생하였습니다. 이 부분의 수정과 적용에 관해서는 글 하단에서 다루도록 하겠습니다. 2007.10.18)
문제는 이 CopySourceAsHtml이 Visual Studio 2005용 Addin이라는 거죠. 물론 원본 배포사이트에는 2003버전용도 존재합니다만, 아직 Visual Studio 2008용은 배포를 하고 있지 않죠.
Visual Studio 2008이 아직 beta이긴 하지만, 이전 .NET Framework버전에 대한 프로그래밍이 가능하므로 많은 분이 사용하고 계실텐데요. 2005용 Addin을 Addins폴더로 복사만 해넣어서는 제대로 동작하질 않죠. 하지만 유용하게 하던 기능이 없으면 엄청 불편하죠..^^;
이리 저리 궁리하던차에 CopySourceAsHtml을 Visual Studio 2008에 등록시키는데 성공하여 공유차원에서 포스팅을 합니다.
우선 CopySourceAsHtml을 이용하고 계시다면 %문서%\Visual Studio 2005\Addins\ 폴더에 존재하는 CopySourceAsHtml.AddIn, CopySourceAsHtml.dll, CopySourceAsHtml.dll.config 3개 파일을 %문서%\Visual Studio 2008\Addins\ 또는 %문서%\Visual Studio Codename Orcas\Addins\ 폴더로 복사해 줍니다.(Addins 폴더가 존재하지 않는다면 만들어주면 됩니다.)
복사 되었으면 CopySourceAsHtml.AddIn 파일을 편집기로 엽니다. XML형식이므로 원하는 텍스트 편집기를 이용하시면 됩니다. 열어보시면 <HostApplication> 이라는 태그 하위태그로 <Version>이라는 태그들의 내용을 8.0 에서 9.0으로 변경해주세요.
<Description>Adds support to Microsoft Visual Studio 2005 for copying source code, syntax highlighting, and line numbers as HTML. (Modified by Loner, SimpleIsBest.NET)</Description>
저장하신후 Visual Studio 2008을 실행하시고, Tools - Add-in Manager(도구 - 추가기능관리자)를 실행하고 활성화 시켜 줍니다.
이제 Visual Studio 2008에서도 CopySourceAsHtml을 사용하실 수 있습니다.
VisualStudio 시작시 오류해결방법 (2007.10.18 추가)
한번 Visual Studio를 실행하면 퇴근할때까지는 잘 종료를 안하다 보니 오늘에서야 Visual Studio를 재시작시에 CopySourceAsHtml 에서 오류가 발생한다는 것을 알게되었습니다. 확실히 점검하지 않고 글을 등록한점 정말 죄송합니다. ( _ _ ) 저는 Vista환경에 Visual Studio 2008은 beta2 영문판이 설치되어 있으며, Visual Studio 2005는 한글판이 설치되어 있는데, 2005, 2008 모두에서 문제가 발생하더군요. 또한 프로젝트 속성 클릭시에서 오류가 발생하고 있었습니다.
우선 발생하는 문제들을 해결하는 방법은 유경상님의 포스트 하단 댓글로 작성된 "하늘로사랑한신발" 박길선님의 홈페이지 잘 소개되어 있습니다. (박길선님께 감사드립니다)
우선 원본 배포사이트에서 "CopySourceAsHtml 2.0.0 Source (91 KB)" 를 다운로드 받습니다.
박길선님 홈페이지로 들어가셔서 "Copy Source As Html" rev 0.2 게시물에 적혀 있는데로 코드를 수정합니다.
그런데, 박길선님 홈페이지 등록된 수정방법대로 수정후에 반영시키면 한글을 제대로 인식하지 못하는 문제가 발생합니다. 유경상님 소스를 역컴파일하여 수정하시어 소스는 역시 공개하지 않으셨네요. 하지만 문제만 해결한다고 해서 한글이 지원되지 않으면 아무런 필요가 없죠.. -_-;
한글 문제를 해결하기 위해서는 RtfParser.cs를 추가로 아래와 같이 수정하셔야 합니다. 우선은 아래와 같이 수정하시면 한글을 지원합니다. 유경상님 님께서 동일하게 수정하셨는지는 몰라도 역컴파일하지 않았으니 상관없겠죠? 66 - 69 라인을 추가해주시면 됩니다.
그동안 Atlas라고 알려졌고, 정식명칭이 ASP.NET AJAX가 된 Microsoft ASP.NET AJAX가 긴 beta, RC 과정을 마치고 1.0 정식버전을 출시 했군요..
Ajax라는 현재 가장 주목받고 있는 WEB관련 기술을 ASP.NET에서 좀 더 쉽고 빠르게 개발하기 위한 ASP.NET AJAX는 ASP.NET에 그치지 않고, PHP및 기타 다른 플랫폼 언어에 까지 그 발을 넓히고 있습니다.
그 이유는 ASP.NET AJAX가 서버컴포넌트로만 이루어진 것이 아니라, 클라이언트 사이드의 크로스 브라우저 라이브러리를 포함하기 때문인데요..
Atlas 시절에 본바로는 JavaScript의 라이브러리를 제공함으로 JavaScript를 마치 OOP적으로 이용이 가능하며, 자주 쓰이는 함수 및 용법에 대한 캡슐화가 잘 되어 있었습니다.
하지만, 그 클라이언트코드들이 그동안 개발을 해오던 개발자들에게 받아들여질지는 약간 의문스럽더군요.. 이미 익숙해질 대로 익숙해진 JavaScript를 사용하면 좀 불편하기는 하겠지만, 그동안의 사용으로 불편함을 그다지 느끼지 않는 개발자가 많을 테고, ASP.NET AJAX에서 제공하는 클라이언트 라이브러리를 사용하기 위해서는 또 다른 공부가 필요하기 때문이죠..
하지만, ASP.NET AJAX를 이용하면 클라이언트 라이브러리 자체에서 크로스브라우저(플랫폼)을 지원하기 때문에 IE, FF등의 브라우저 환경에 신경쓸 필요가 없어지는 부분에서는 상당히 작업량이 줄어들걸로 예상이 되네요...
서버사이드 코드또한 ASP.NET에서 XmlHttp객체를 이용하기 위해서 클라이언트 스크립트 코드와 새로 작성된 서버로직 페이지를 생성하는 방법이 아닌, 기존 ASP.NET 코드에 ScriptManager라는 서버 컨트롤과 UpdatePanel 서버 컨트롤을 이용하면 되므로 기 작성된 페이지들에 대한 Ajax적용이 간편해졌습니다.
또, ASP.NET AJAX Control Toolkit을 제공함으로서 그동안 좀더 사용자 친화적인 UI를 위하여 JavaScript와의 전쟁을 치러서 만들어내야 만 했던것들을 제공하므로 이부분은 개발자 뿐만이 아니라 디자이너분들께도 많은 도움이 될 수 있을 듯합니다.
설치를 해보고 좀 더 테스트를 해봐야 하겠지만, 현재 트랜드에 맞는 웹페이지를 개발하기 위한 유용한 플랫폼이 될 것은 자명할 것같네요.
마치 VB에서 컨트롤을 올려놓고 사용하듯이 Postback을 이용한 이벤트 기반의 프로그래밍이 가능해지기 때문입니다.
하지만, 이벤트 발생시 마다, 서버로와의 라운드트립이 발생하여 네트워크의 이용량이 증가하므로, 꼭 필요한 경우를 제외하고는 서버컨트롤을 사용하는 것을 권장하지 않고 있습니다.
그리고, 또 하나 서버컨트롤을 사용하여 프로그래밍을 하였을 경우 서버에서 클라이언트로 보내지는 HTML코드를 프로그래머가 직접 핸들링할 수가 없습니다.
서버컨트롤이 만들어질때 지정한 규칙에 의해 HTML을 생성하고 클라이언트로 내려보내기 때문입니다. 요즘같이 웹표준 및 CSS기반의 디자인이 각광받고 있는 시점에서 서버컨트롤에서 생성해내는 HTML코드는 웹표준 및 CSS기반의 디자인과는 거리가 있으며, table기반의 레이아웃으로 구성된 컨틀롤들이 많습니다.
서버컨트롤을 사용한 페이지가 XHTML Validate에 통과하는 것 자체가 상당히 힘듭니다.
이번에, 위 문제를 해결하기 위해서 ASP.NET 2.0 CSS Friendly Control Adapters 1.0 이라는 것이 나왔습니다.
새로운 서버 컨트롤이 아니라 기존 서버컨트롤이 생성해내는 HTML코드를 div 및 CSS기반 형태로 바꿔주는 Adapter입니다.