본문 바로가기

Programming/.Net

문서변환

BYOD (bring your own device) 시대가 되다보니 mobility security 는 꽤 이슈가 됩니다.

문서를 열람하는 경우, 보편적으로 그 content의 security level과는 무관하게 mobile로 제공하려는 요구하는 것 같습니다.

당최 secret 문서를 mobile로 제공하겠다는 발상 자체을 이해하고 싶지는 않지만...


그러다보니 모든 문서는 동일한 level의 보안 절차를 거쳐서 user에게 제공하는데, 일반적으로 office, hwp 등의 문서는 pdf내지는 image로 제공하고 이 또한 download 방식이 아닌 streaming 방식으로 제공 하는 것으로 알고 있습니다.


개발자들은 문서의 유출을 (옆에서 카메라 들고 촬영하면 그만인 것을...) 막기 위해서, file format convert를 해야 합니다.

워낙 다양한 문서 format이 존재하다 보니 보통 중간 형태의 format (ex, PDF)를 거쳐 image화 하는 것 같습니다. (추측!)


기능 요건

xls/xlsx, doc/docx 등의 office 파일을 PDF로 변환하기 위한 여러 방법을 검토해 봤습니다.

사실 지난 posting에서 언급했듯이 xls, doc는 굳이 지원해야 할 필요가 있을까 싶습니다만...


1. 빠르고 안정적인 convert

2. 다양한 format 지원

3. 풍부한 추가 지원 기능 (ex, water mark)


구현 방법

전통적으로 office file을 다루는 것은 ms.office.interop 어셈블리를 참조하는 것으로 가능합니다.

office 2007이후의 xml base format이라면 open XML SDK를 이용하는 것도 좋은 방법이구요.

별도의 library를 쓰는 것도 좋은 방법일 겁니다.


구분

Note

장점

단점

Office.interop

Office 제품의 dll을 참조하여 개발

추가 비용 없음

단독 사용을 상정한 것으로 Multi thread에 비적합

OpenXML SDK

XML base office 파일 표준 지원

(office 2007~) format 완벽 지원

자체적으로 Format convert 불가능, (~2003) 비지원

3rd party library

iText, Aspose

풍부한 기능, 손쉬운 converting

비용 (Aspose 기준 format $1,000 수준)


Aspose xlsx > pdf sample code, NuGet으로 설치 가능(유로)

아래와 같이 간단하게 PDF converting 가능합니다.


Conclusion

office 어셈블리는 당초 보편적인 converting 서비스를 위한 것이 아니므로 탈락.

openXML은 (현실적으로) 기존 format의 미지원과 자체적인 converting 기능이 없으므로 탈락.

Aspose는 유료답게 안정적이고 손쉬운 활용이 가능하므로 적합해 보입니다.

Excel, Word, PowerPoint 세 format을 지원한다면 $3,000 수준이므로 한 달 월급 투자하는 것 이상의 가치는 확실하게 뽑아 줄 것 같네요.

HWP는 어떡하지?


References

Offcie documents to PDF

http://stackoverflow.com/questions/7665062/office-documents-to-pdf

Aspose

http://www.aspose.com/

Aspose: comparison with other solutions

http://www.aspose.com/docs/display/cellsnet/Comparison+with+Other+Solutions

Aspose: why not open xml sdk

http://www.aspose.com/docs/display/cellsnet/Comparison+with+Other+Solutions


'Programming > .Net' 카테고리의 다른 글

Select object within min or max property value.  (0) 2015.01.20
ConfigurationSection을 이용한 App configuration  (0) 2015.01.15
Oracle Stored Procedure for .Net  (0) 2014.10.23
[NuGet] ImageResizer  (0) 2014.10.14
dynamic 형식의 활용  (0) 2014.09.04