BitMiracle.Docotic.Pdf를 이용한 Tiff To Pdf 변환 예제입니다.
BitMiracle.Docotic.Pdf 는 유료입니다. , 31일 동안의 무료 라이선스를 받을 수 있더라구요 , 라이선스를 등록 하지 않으면
변환 시마다 왼쪽 상단에 메시지가 표시 됩니다.
출처 : https://bitmiracle.com/pdf-library/
// See https://aka.ms/new-console-template for more information
global using BitMiracle.Docotic.Pdf;
using System.Drawing;
using System.Drawing.Imaging;
using (Image image = Image.FromFile(@"D:\document\팩스이미지1.tif"))
using (MemoryStream ms = new MemoryStream())
{
int pageCount = image.GetFrameCount(FrameDimension.Page);
for(int i = 0; i < pageCount; i++)
{
image.SelectActiveFrame(FrameDimension.Page , i);
if(i == 0)
image.Save(ms, GetCodecForstring("TIFF"), GetFaxTifEncoderParamsForFirstpage());
else
image.SaveAdd(GetFaxTifEncoderParamsForAdditionalpage());
}
image.Dispose();
using (PdfDocument pdf = new PdfDocument())
{
PdfImageFrames frames = pdf.OpenImage(ms.ToArray());
int imagesAdded = 0;
frames.ToList().ForEach(a =>
{
if (imagesAdded != 0) pdf.AddPage();
PdfImage image = pdf.AddImage(a);
PdfPage pdfPage = pdf.Pages[pdf.PageCount - 1];
pdfPage.Height = image.Height;
pdfPage.Width = image.Width;
pdfPage.Canvas.DrawImage(image, 0, 0, pdfPage.Width, pdfPage.Height, 0);
imagesAdded++;
});
pdf.Save(@"D:\document\팩스이미지1.pdf");
}
}
ImageCodecInfo GetCodecForstring(string type)
{
ImageCodecInfo[] info = ImageCodecInfo.GetImageEncoders();
for (int i = 0; i < info.Length; i++)
{
string EnumName = type.ToString();
if (info[i].FormatDescription.Equals(EnumName))
{
return info[i];
}
}
return null;
}
EncoderParameters GetFaxTifEncoderParamsForFirstpage()
{
Encoder saveEncoder = Encoder.SaveFlag;
Encoder compressionEncoder = Encoder.Compression;
// Save the first page (frame).
EncoderParameter SaveEncodeParam = new EncoderParameter(saveEncoder, (long)EncoderValue.MultiFrame);
EncoderParameter CompressionEncodeParam = new EncoderParameter(compressionEncoder, (long)EncoderValue.CompressionCCITT4);
EncoderParameters EncoderParams = new EncoderParameters(2);
EncoderParams.Param[0] = CompressionEncodeParam;
EncoderParams.Param[1] = SaveEncodeParam;
return EncoderParams;
}
EncoderParameters GetFaxTifEncoderParamsForAdditionalpage()
{
Encoder saveEncoder = Encoder.SaveFlag;
Encoder compressionEncoder = Encoder.Compression;
EncoderParameter SaveEncodeParam = new EncoderParameter(saveEncoder, (long)EncoderValue.FrameDimensionPage);
EncoderParameter CompressionEncodeParam = new EncoderParameter(compressionEncoder, (long)EncoderValue.CompressionCCITT4);
EncoderParameters EncoderParams = new EncoderParameters(2);
EncoderParams.Param[0] = CompressionEncodeParam;
EncoderParams.Param[1] = SaveEncodeParam;
return EncoderParams;
}
PDF로 변환 한 결과 입니다.
'C#' 카테고리의 다른 글
[C#] Singletone Instance 생성을 이용한 Log File Write 처리 예제 입니다. (0) | 2024.08.05 |
---|---|
PdfSharp을 이용한 Tiff To Pdf 변환 예제 (0) | 2024.06.16 |
[C#] HttpClient.PostAsync 메서드 에는 HttpCompletionOption을 설정 할 수 없는 부분에 대한 대처 방안 (0) | 2024.02.04 |
[C#] HttpClient 에 CookieContainer 이용 JSESSIONID 설정 진행 예제 (0) | 2024.02.04 |
특정 위치에 파일 중복 여부 체크 하고 새로운 파일명 구하기 예제 (0) | 2023.08.23 |