Membuat PDF yang kompleks
Contents
[
Hide
]
The Halo Dunia contoh mencakup jalur pembuatan PDF paling sederhana. contoh ini membangun di atas alur kerja itu dan membuat dokumen yang lebih kaya yang menggabungkan grafik, teks, dan konten tabel.
Untuk membuat dokumen PDF yang lebih kompleks di Java:
- Buat sebuah
Documentdan tambahkan sebuahPage. - Tambahkan gambar ke
Pagedenganpage.addImage(...)dan sebuahRectangletarget. - Buat header
TextFragmentdan atur font, ukuran, perataan, danPosition. - Buat yang kedua
TextFragmentuntuk paragraf deskripsi. - Buat sebuah
Tabledengan batas, padding, dan gaya header. - Tambahkan baris jadwal yang dihasilkan ke
Table. - Tambahkan
TablekePageparagraf. - Simpan PDF keluaran
Document.
Kode Java berikut didasarkan pada 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());
}
}
Contoh yang sama menggunakan metode pembantu untuk menyiapkan tabel jadwal dengan pemformatan header dan waktu keberangkatan yang dihasilkan:
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;
}