낭만 프로그래머
C# 에서 PDF를 Split하기 본문
c#에서 원본 PDF를 1장씩 잘라서 저장하는 기능을 확인 해 보자
라이브러리가 필요한데 무료이면서 한글을 잘 지원하는 것을 선택하다 보니 Pdfbox가 적합하였다.
사실 pdfbox는 java 계열의 Apache 라이브러리다. 이것을 .net으로 변경한 것으로 보인다.
1. PDF 라이브러리 설치
2. 사용법
using org.apache.pdfbox.pdmodel;
using org.apache.pdfbox.util;
using System;
using System.Text;
namespace PDFUtil
{
public class PDFUtil
{
/// <summary>
/// 숫자 자리수에 맞추어 0을 채우기
/// </summary>
/// <param name="source"></param>
/// <param name="length"></param>
/// <returns></returns>
private static String fitZero(int source, int length)
{
StringBuilder sb = new StringBuilder();
int sourceLength = (int)(Math.Log10(source) + 1);
int count = length - sourceLength;
for (int i=0; i<count; i++)
{
sb.Append("0");
}
sb.Append(source);
return sb.ToString();
}
/// <summary>
/// Split해서 1장씩 PDF로 만들기
/// </summary>
/// <param name="filePath">원본 파일 경로</param>
/// <param name="outputFolderPath">출력할 폴더 경로</param>
public static void split(String filePath, String outputFolderPath)
{
PDDocument doc = null;
try
{
String fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(filePath);
doc = PDDocument.load(filePath);
Splitter splitter = new Splitter();
java.util.List pages = splitter.split(doc);
for(int i=0; i< pages.size(); i++)
{
PDDocument document = (PDDocument)pages.get(i);
document.save(outputFolderPath + "/" + fileNameWithoutExtension + "_" +fitZero(i+1, 4) + ".pdf");
document.close();
}
}
finally
{
if (doc != null)
{
doc.close();
}
}
}
}
}
using org.apache.pdfbox.pdmodel;
using org.apache.pdfbox.util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PDFUtil
{
class Program
{
static void Main(string[] args)
{
String sourceFilePath = @"C:\스마트공장구축제안서.pdf";
String outoutFolderPath = @"c:\temp2";
PDFUtil.split(sourceFilePath, outoutFolderPath);
}
}
}
'Windows > Common' 카테고리의 다른 글
Windows 10 라이센스 종류 및 확인 방법 (0) | 2022.05.04 |
---|---|
Windows에서 날짜가 지난 오래된 파일 삭제 명령 (0) | 2021.03.08 |
IP 대역대가 달라서 VPN 으로 원격데스크톱이 연결되지 않을 때 (0) | 2020.11.03 |
Windows IE 호환성 보기 레지스트리로 추가 (0) | 2020.04.22 |
Windows 에서 콘솔에서 명령어로 SSH 인증서 등록하기 (0) | 2020.04.22 |