기존에 포스트에 등록했던 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);
}
}
'프로그래밍 > C#' 카테고리의 다른 글
C# Country code (2자리) 인지 체크 하는 방법 (0) | 2014.05.29 |
---|---|
C# Regex (Regular Expression) Class (0) | 2014.05.14 |
C# Key 두개를 이벤트로 받고 싶을때 (ctrl+c등) (0) | 2013.09.27 |
C# gridview row를 이동 할 경우 이동한 row가 화면 중앙으로 되게 하기 (0) | 2013.09.27 |
C# Disable Buttons in a Button Column in the Windows Forms DataGridView Control (0) | 2013.09.27 |