Bekerja dengan tabel dalam Tagged PDFs di Java
API tabel bertag memungkinkan Anda membuat struktur tabel yang dapat diakses dengan header eksplisit, baris isi, footer, dan semantik per-sel.
Membuat tabel ber‑tag
Gunakan contoh ini saat Anda membutuhkan tabel aksesibel dasar dengan header, body, footer, dan metadata ringkasan tabel.
- Buat PDF ber-tag baru
Documentdan tambahkan sebuahTableElement. - Konfigurasikan batas tabel dan isi kontennya dengan metode pembantu bersama.
- Atur atribut ringkasan tabel dan simpan dokumen.
public static void createTable(Path outputFile) {
try (Document document = new Document()) {
ITaggedContent taggedContent = document.getTaggedContent();
taggedContent.setTitle("Example table");
taggedContent.setLanguage("en-US");
TableElement tableElement = taggedContent.createTableElement();
taggedContent.getRootElement().appendChild(tableElement, true);
tableElement.setBorder(new BorderInfo(BorderSide.All, 1.2f, Color.getDarkBlue()));
fillTable(tableElement, 50, 4, true);
StructureAttributes tableAttributes = tableElement.getAttributes().getAttributes(AttributeOwnerStandard.Table);
StructureAttribute summaryAttribute = new StructureAttribute(AttributeKey.Summary);
summaryAttribute.setStringValue("The summary text for table");
tableAttributes.setAttribute(summaryAttribute);
document.save(outputFile.toString());
}
}
Gaya tabel bertanda
Contoh ini menerapkan format tingkat tabel seperti warna, batas, ukuran kolom, baris yang berulang, dan perataan.
- Buat PDF ber-tag baru
Documentdan tambahkan elemen tabel. - Konfigurasikan pengaturan visual dan tata letak tingkat tabel.
- Isi tabel dan simpan dokumen.
public static void styleTable(Path outputFile) {
try (Document document = new Document()) {
ITaggedContent taggedContent = document.getTaggedContent();
taggedContent.setTitle("Example table style");
taggedContent.setLanguage("en-US");
TableElement tableElement = taggedContent.createTableElement();
taggedContent.getRootElement().appendChild(tableElement, true);
tableElement.setBackgroundColor(Color.getBeige());
tableElement.setBorder(new BorderInfo(BorderSide.All, 0.80f, Color.getGray()));
tableElement.setAlignment(HorizontalAlignment.Center);
tableElement.setBroken(TableBroken.Vertical);
tableElement.setColumnAdjustment(ColumnAdjustment.AutoFitToWindow);
tableElement.setColumnWidths("80 80 80 80 80");
tableElement.setDefaultCellBorder(new BorderInfo(BorderSide.All, 0.50f, Color.getDarkBlue()));
tableElement.setDefaultCellPadding(new MarginInfo(16.0, 2.0, 8.0, 2.0));
tableElement.getDefaultCellTextState().setForegroundColor(Color.getDarkCyan());
tableElement.getDefaultCellTextState().setFontSize(8.0f);
tableElement.setDefaultColumnWidth("70");
tableElement.setBordersIncluded(true);
tableElement.setLeft(0.0f);
tableElement.setTop(40.0f);
tableElement.setRepeatingColumnsCount(2);
tableElement.setRepeatingRowsCount(3);
TextState rowStyle = new TextState();
rowStyle.setBackgroundColor(Color.getLightCoral());
tableElement.setRepeatingRowsStyle(rowStyle);
fillTable(tableElement, 10, 5, false);
document.save(outputFile.toString());
}
}
Gaya baris tabel yang ditandai
Gunakan contoh ini ketika setiap baris harus memiliki metadata, batas, pengaturan tinggi, dan nilai default sel masing‑masing.
- Buat PDF ber-tag baru
Documentdan tambahkan bagian tabel untuk header, body, dan footer. - Buat baris dan konfigurasikan pengaturan tingkat baris seperti border, padding, tinggi, dan perilaku halaman.
- Isi baris dengan sel dan simpan dokumen.
public static void styleTableRow(Path outputFile) {
try (Document document = new Document()) {
ITaggedContent taggedContent = document.getTaggedContent();
taggedContent.setTitle("Example table style");
taggedContent.setLanguage("en-US");
TableElement tableElement = taggedContent.createTableElement();
taggedContent.getRootElement().appendChild(tableElement, true);
TableTHeadElement tableTHeadElement = tableElement.createTHead();
TableTBodyElement tableTBodyElement = tableElement.createTBody();
TableTFootElement tableTFootElement = tableElement.createTFoot();
TableTRElement headTrElement = tableTHeadElement.createTR();
headTrElement.setAlternativeText("Head Row");
for (int colIndex = 0; colIndex < 3; colIndex++) {
headTrElement.createTH().setText("Head " + colIndex);
}
for (int rowIndex = 0; rowIndex < 7; rowIndex++) {
TableTRElement trElement = tableTBodyElement.createTR();
trElement.setAlternativeText("Row " + rowIndex);
trElement.setBackgroundColor(Color.getLightGoldenrodYellow());
trElement.setBorder(new BorderInfo(BorderSide.All, 0.75f, Color.getDarkGray()));
trElement.setDefaultCellBorder(new BorderInfo(BorderSide.All, 0.50f, Color.getBlue()));
trElement.setMinRowHeight(100.0);
trElement.setFixedRowHeight(120.0);
trElement.setInNewPage(rowIndex % 3 == 1);
trElement.setRowBroken(true);
TextState cellTextState = new TextState();
cellTextState.setForegroundColor(Color.getRed());
trElement.setDefaultCellTextState(cellTextState);
trElement.setDefaultCellPadding(new MarginInfo(16.0, 2.0, 8.0, 2.0));
trElement.setVerticalAlignment(VerticalAlignment.Bottom);
for (int colIndex = 0; colIndex < 3; colIndex++) {
trElement.createTD().setText("Cell [" + rowIndex + ", " + colIndex + "]");
}
}
TableTRElement footTrElement = tableTFootElement.createTR();
footTrElement.setAlternativeText("Foot Row");
for (int colIndex = 0; colIndex < 3; colIndex++) {
footTrElement.createTD().setText("Foot " + colIndex);
}
document.save(outputFile.toString());
}
}
Gaya sel tabel yang ditandai
Contoh ini menggunakan metode bantu bersama untuk membuat tabel dengan pemformatan pada tingkat sel dan sel yang digabungkan.
- Buat PDF ber-tag baru
Document. - Tambahkan elemen tabel dan isi melalui metode pembantu dengan gaya sel diaktifkan.
- Simpan dokumen.
public static void styleTableCell(Path outputFile) {
try (Document document = new Document()) {
ITaggedContent taggedContent = document.getTaggedContent();
taggedContent.setTitle("Example table cell style");
taggedContent.setLanguage("en-US");
TableElement tableElement = taggedContent.createTableElement();
taggedContent.getRootElement().appendChild(tableElement, true);
fillTable(tableElement, 4, 4, true);
document.save(outputFile.toString());
}
}
Menyesuaikan posisi tabel bertanda
Gunakan contoh ini ketika tabel ber-tag harus diposisikan secara eksplisit di halaman.
- Buat PDF ber-tag baru
Documentdan tambahkan elemen tabel. - Konfigurasikan
PositionSettingsuntuk tabel. - Terapkan pengaturan posisi, isi tabel, dan simpan dokumen.
public static void adjustTablePosition(Path outputFile) {
try (Document document = new Document()) {
ITaggedContent taggedContent = document.getTaggedContent();
taggedContent.setTitle("Example table position");
taggedContent.setLanguage("en-US");
TableElement tableElement = taggedContent.createTableElement();
taggedContent.getRootElement().appendChild(tableElement, true);
PositionSettings positionSettings = new PositionSettings();
positionSettings.setHorizontalAlignment(HorizontalAlignment.None);
positionSettings.setMargin(new MarginInfo(20, 0, 0, 0));
positionSettings.setVerticalAlignment(VerticalAlignment.None);
positionSettings.setFirstParagraphInColumn(false);
positionSettings.setKeptWithNext(false);
positionSettings.setInNewPage(false);
positionSettings.setInLineParagraph(false);
tableElement.adjustPosition(positionSettings);
fillTable(tableElement, 4, 4, true);
document.save(outputFile.toString());
}
}
Mengisi tabel ber‑tag dengan konten terstruktur
Metode pembantu ini membuat baris header, badan, dan footer untuk sebuah tabel, dan secara opsional menerapkan gaya sel serta rentang.
- Buat bagian kepala, isi, dan kaki tabel.
- Isi baris header, badan, dan footer dengan elemen sel yang dapat diakses.
- Secara opsional konfigurasikan sel yang bergaya, sel yang digabung, dan nilai status teks.
private static void fillTable(TableElement tableElement, int rowCount, int colCount, boolean styleCells) {
TableTHeadElement tableTHeadElement = tableElement.createTHead();
TableTBodyElement tableTBodyElement = tableElement.createTBody();
TableTFootElement tableTFootElement = tableElement.createTFoot();
TableTRElement headTrElement = tableTHeadElement.createTR();
headTrElement.setAlternativeText("Head Row");
headTrElement.setBackgroundColor(Color.getLightGray());
for (int columnIndex = 0; columnIndex < colCount; columnIndex++) {
TableTHElement thElement = headTrElement.createTH();
thElement.setText("Head " + columnIndex);
thElement.setBackgroundColor(Color.getGreenYellow());
thElement.setBorder(new BorderInfo(BorderSide.All, 4.0f, Color.getGray()));
thElement.setNoBorder(true);
thElement.setMargin(new MarginInfo(16.0, 2.0, 8.0, 2.0));
thElement.setAlignment(HorizontalAlignment.Right);
}
for (int rowIndex = 0; rowIndex < rowCount; rowIndex++) {
TableTRElement trElement = tableTBodyElement.createTR();
trElement.setAlternativeText("Row " + rowIndex);
for (int columnIndex = 0; columnIndex < colCount; columnIndex++) {
int colSpan = 1;
int rowSpan = 1;
if (styleCells && columnIndex == 1 && rowIndex == 1) {
colSpan = 2;
rowSpan = 2;
} else if (styleCells && ((rowIndex == 1 && columnIndex == 2)
|| (rowIndex == 2 && (columnIndex == 1 || columnIndex == 2)))) {
continue;
}
TableTDElement tdElement = trElement.createTD();
tdElement.setText("Cell [" + rowIndex + ", " + columnIndex + "]");
tdElement.setBackgroundColor(Color.getYellow());
tdElement.setBorder(new BorderInfo(BorderSide.All, 4.0f, Color.getGray()));
tdElement.setNoBorder(false);
tdElement.setMargin(new MarginInfo(8.0, 2.0, 8.0, 2.0));
tdElement.setAlignment(HorizontalAlignment.Center);
TextState cellTextState = new TextState();
cellTextState.setForegroundColor(Color.getDarkBlue());
cellTextState.setFontSize(7.5f);
cellTextState.setFontStyle(FontStyles.Bold);
cellTextState.setFont(FontRepository.findFont("Arial"));
tdElement.setDefaultCellTextState(cellTextState);
tdElement.setWordWrapped(true);
tdElement.setVerticalAlignment(VerticalAlignment.Center);
tdElement.setColSpan(colSpan);
tdElement.setRowSpan(rowSpan);
}
}
TableTRElement footTrElement = tableTFootElement.createTR();
footTrElement.setAlternativeText("Foot Row");
footTrElement.setBackgroundColor(Color.getLightSeaGreen());
for (int columnIndex = 0; columnIndex < colCount; columnIndex++) {
TableTDElement tdElement = footTrElement.createTD();
tdElement.setText("Foot " + columnIndex);
tdElement.setAlignment(HorizontalAlignment.Center);
tdElement.getStructureTextState().setFontSize(com.aspose.pdf.Nullable.of(7.0f));
tdElement.getStructureTextState().setFontStyle(com.aspose.pdf.Nullable.of(FontStyles.Bold));
}
}