Java 프로그램을 통해 처음부터 PDF 문서 만들기
프로그래밍 언어를 통해 PDF 파일을 생성하면 수동으로 생성하는 것보다 많은 이점이 있습니다. 첫째, 문서 생성을 자동화할 수 있어 많은 시간을 절약할 수 있습니다. 둘째, 문서의 정확성을 보장하고 입력 오류를 방지할 수 있습니다. 또한 이 방법은 단기간에 많은 양의 문서를 빠르게 생성할 수 있어 업무의 효율성도 향상되었습니다. 다음은 Java 프로그램을 사용하여 처음부터 PDF를 생성하는 방법에 대해 설명합니다.
필요한 도구
IntelliJ IDEA 2018 (jdk 1.8.0)
Free Spire.PDF for Java는 PDF 문서 생성, 편집 및 변환을 지원하는 무료 Java 라이브러리입니다. 단, 이용시 일부 페이지 제한이 있을 수 있습니다.
또는 직접 상용 버전 체험판을 신청하세요.
상용 버전 Spire.PDF for Java
무료 시험판 Temporary License
준비 작업
다음 링크에서Free Spire.PDF for Java를 다운로드하고 압축을 푸세요.
IDEA에서 새 프로젝트를 만들고 열어주세요.
File>Project Structure>Modules>Dependencies을 차례로 클릭합니다.
"+"에서 JAR or Directories를 선택합니다.
압축 해제된 lib 폴더에서 Spire.Pdf.jar를 찾아 해당 파일을 프로젝트에 추가하세요.
코드 설명
먼저, PdfDocument 객체를 생성하고 페이지를 추가했습니다.
제목 텍스트와 단락 텍스트의 색상과 글꼴 스타일을 설정했습니다.
PdfStringFormat을 사용하여 제목 텍스트를 가운데 정렬로 설정하고, 제목 텍스트를 페이지에 그렸습니다.
.txt 파일에서 단락 텍스트를 읽어와서 PdfTextWidget 객체를 생성하여 해당 텍스트를 저장했습니다.
단락 텍스트의 위치를 지정하기 위해 사각형을 생성했습니다.
PdfLayoutType을 Paginate로 설정하여 내용이 자동으로 페이지별로 나뉘도록 했습니다.
마지막으로, 단락 텍스트를 페이지에 그리고 PDF 문서를 파일로 저장했습니다.
참조 코드
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.PdfPageSize;
import com.spire.pdf.graphics.*;
import java.awt.*;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.io.*;
public class CreatePDF {
public static void main(String[] args) throws IOException {
//PdfDocument 객체를 생성합니다
PdfDocument doc = new PdfDocument();
//페이지를 추가합니다
PdfPageBase page = doc.getPages().add(PdfPageSize.A4, new PdfMargins(35f));
//제목 텍스트를 지정합니다
String titleText = "Title";
//브러시 만들기
PdfSolidBrush titleBrush = new PdfSolidBrush(new PdfRGBColor(Color.RED));
PdfSolidBrush paraBrush = new PdfSolidBrush(new PdfRGBColor(Color.BLACK));
//TrueType 폰트를 생성합니다
PdfTrueTypeFont titleFont = new PdfTrueTypeFont(new Font("Arial",Font.BOLD,18));
PdfTrueTypeFont paraFont = new PdfTrueTypeFont(new Font("Arial",Font.PLAIN,12));
//PdfStringFormat 클래스를 사용하여 텍스트 정렬을 설정합니다
PdfStringFormat format = new PdfStringFormat();
format.setAlignment(PdfTextAlignment.Center);
//페이지에 제목을 그립니다
page.getCanvas().drawString(titleText, titleFont, titleBrush, new Point2D.Float((float)page.getClientSize().getWidth()/2, 20),format);
//.txt 파일에서 단락 텍스트 가져오기
String paraText = readFileToString("C:\\Users\\Administrator\\Desktop\\text.txt");
//단락 내용을 보유할 PdfTextWidget 객체를 생성합니다
PdfTextWidget widget = new PdfTextWidget(paraText, paraFont, paraBrush);
//단락 내용이 배치될 사각형을 생성합니다
Rectangle2D.Float rect = new Rectangle2D.Float(0, 50, (float)page.getClientSize().getWidth(),(float)page.getClientSize().getHeight());
//콘텐츠가 자동으로 페이지 구분되도록 PdfLayoutType을 Paginate로 설정합니다
PdfTextLayout layout = new PdfTextLayout();
layout.setLayout(PdfLayoutType.Paginate);
//페이지에 단락 텍스트를 그립니다
widget.draw(page, rect, layout);
//파일로 저장합니다
doc.saveToFile("output/CreatePDF.pdf");
doc.dispose();
}
//.txt 파일을 문자열로 변환합니다.
private static String readFileToString(String filepath) throws FileNotFoundException, IOException {
StringBuilder sb = new StringBuilder();
String s ="";
BufferedReader br = new BufferedReader(new FileReader(filepath));
while( (s = br.readLine()) != null) {
sb.append(s + "\n");
}
br.close();
String str = sb.toString();
return str;
}
}