프로그래밍/C#

C# Multi tiff Image Convert to PDF

bluecandyg 2014. 3. 31. 17:59

기존에 포스트에 등록했던 BitMiracle.Tiff2Pdf 라이브러리를 이용한 변환 중 심각한 문제 발견

 

Multi Image 중 한건만 유독 사이즈가 크다던가할 경우 파일은 정상적으로 생성되는것처럼 보이지만

 

열어보면 메모리 오류를 발생 시킴.

 

오류를 위해 구글링하던 중 아래로직 발견.

 

아래 로직은 iTextSharp 라이브러리를 이용한 변환 작업.

 

 

public static void AddTiff(Document pdfDocument, Rectangle pdfPageSize, String tiffPath)
{
   
RandomAccessFileOrArray ra = new RandomAccessFileOrArray(tiffPath);
   
int pageCount = TiffImage.GetNumberOfPages(ra);

   
for (int i = 1; i <= pageCount; i++)
   
{
       
Image img = TiffImage.GetTiffImage(ra, i);

       
if (img.ScaledWidth > pdfPageSize.Width || img.ScaledHeight > pdfPageSize.Height)
       
{
           
if (img.DpiX != 0 && img.DpiY != 0 && img.DpiX != img.DpiY)
           
{
                img
.ScalePercent(100f);
               
float percentX = (pdfPageSize.Width * 100) / img.ScaledWidth;
               
float percentY = (pdfPageSize.Height * 100) / img.ScaledHeight;

                img
.ScalePercent(percentX, percentY);
                img
.WidthPercentage = 0;
           
}
           
else
           
{
                img
.ScaleToFit(pdfPageSize.Width, pdfPageSize.Height);
           
}
       
}

       
Rectangle pageRect = new Rectangle(0, 0, img.ScaledWidth, img.ScaledHeight);

        pdfDocument
.SetPageSize(pageRect);
        pdfDocument
.SetMargins(0, 0, 0, 0);
        pdfDocument
.NewPage();
        pdfDocument
.Add(img);
   
}
}