복잡한 PDF 만들기
Contents
[
Hide
]
Hello World 예제는 가장 간단한 PDF 생성 경로를 다룹니다. 이 예는 해당 워크플로를 기반으로 그래픽, 텍스트 및 표 형식의 콘텐츠를 결합하는 보다 풍부한 문서를 만듭니다.
Java로 더 복잡한 PDF 문서를 생성하려면:
Document를 생성하고Page를 추가하세요.page.addImage(...)및 대상Rectangle을 사용하여Page에 이미지를 추가하세요.- 헤더
TextFragment를 만들고 글꼴, 크기, 정렬 및Position을 설정하세요. - 설명 단락에 대한 두 번째
TextFragment를 만드세요. - 테두리, 패딩, 머리글 스타일을 적용하여
Table을 만드세요. - 생성된 일정 행을
Table에 추가하세요. Page단락에Table을 추가하세요.- 출력된 PDF
Document를 저장하세요.
다음 Java 코드는 GetStartedExamples.java를 기반으로 합니다.
public static void complexExample(Path imageFile, Path outputFile) {
try (Document document = new Document()) {
Page page = document.getPages().add();
page.addImage(imageFile.toString(), new Rectangle(20, 730, 120, 830, true));
TextFragment header = new TextFragment("New ferry routes in Fall 2029");
header.getTextState().setFont(FontRepository.findFont("Arial"));
header.getTextState().setFontSize(24);
header.setHorizontalAlignment(HorizontalAlignment.Center);
header.setPosition(new Position(130, 720));
page.getParagraphs().add(header);
String descriptionText = "Visitors must buy tickets online and tickets are limited to 5,000 per day. "
+ "Ferry service is operating at half capacity and on a reduced schedule. "
+ "Expect lineups.";
TextFragment description = new TextFragment(descriptionText);
description.getTextState().setFont(FontRepository.findFont("Times New Roman"));
description.getTextState().setFontSize(14);
description.setHorizontalAlignment(HorizontalAlignment.Left);
page.getParagraphs().add(description);
page.getParagraphs().add(createScheduleTable());
document.save(outputFile.toString());
}
}
동일한 예에서는 도우미 메서드를 사용하여 헤더 형식 및 생성된 출발 시간이 포함된 일정 테이블을 준비합니다.
private static Table createScheduleTable() {
Table table = new Table();
table.setColumnWidths("200 200");
table.setBorder(new BorderInfo(BorderSide.Box, 1.0f, Color.getDarkSlateGray()));
table.setDefaultCellBorder(new BorderInfo(BorderSide.Box, 0.5f, Color.getBlack()));
table.setDefaultCellPadding(new MarginInfo(4.5, 4.5, 4.5, 4.5));
table.getMargin().setBottom(10);
table.getDefaultCellTextState().setFont(FontRepository.findFont("Helvetica"));
Row headerRow = table.getRows().add();
Cell departsCityCell = headerRow.getCells().add("Departs City");
Cell departsIslandCell = headerRow.getCells().add("Departs Island");
styleHeaderCell(departsCityCell);
styleHeaderCell(departsIslandCell);
Duration time = Duration.ofHours(6);
Duration increment = Duration.ofMinutes(30);
for (int index = 0; index < 10; index++) {
Row dataRow = table.getRows().add();
dataRow.getCells().add(formatTime(time));
time = time.plus(increment);
dataRow.getCells().add(formatTime(time));
}
return table;
}