태그가 지정된 PDF에서 테이블 작업하기
태그가 지정된 PDF에서 테이블 생성하기
Aspose.PDF for Java는 태그가 지정된 PDF 문서에서 테이블을 생성할 수 있습니다. 테이블 작업을 위해 API는 TableElement 클래스를 제공합니다. 테이블을 생성하려면 ITaggedContent 인터페이스의 createTableElement() 메서드를 사용할 수 있습니다. 또한, 테이블 헤드, 테이블 본문 및 테이블 풋을 각각 생성하기 위해 TableElement 클래스의 createTHead(), createTBody() 및 createTFoot() 메서드를 사용할 수 있습니다. 테이블 행을 생성하려면 TableRowCollectionElement 클래스의 createTR() 메서드를 사용할 수 있습니다. 다음 코드 스니펫은 태그가 지정된 PDF 문서에서 테이블을 생성하는 방법을 보여줍니다:
// 완전한 예제 및 데이터 파일은 https://github.com/aspose-pdf/Aspose.PDF-for-Java를 참조하십시오.
// 문서 디렉토리의 경로입니다.
String path = Utils.getDataDir() + "TaggedPDFs\\";
// 문서 생성
Document document = new Document();
ITaggedContent taggedContent = document.getTaggedContent();
taggedContent.setTitle("Example table");
taggedContent.setLanguage("en-US");
// 루트 구조 요소 가져오기
StructureElement rootElement = taggedContent.getRootElement();
TableElement tableElement = taggedContent.createTableElement();
rootElement.appendChild(tableElement);
tableElement.setBorder(new BorderInfo(BorderSide.All, 1.2F, Color.getDarkBlue()));
TableTHeadElement tableTHeadElement = tableElement.createTHead();
TableTBodyElement tableTBodyElement = tableElement.createTBody();
TableTFootElement tableTFootElement = tableElement.createTFoot();
int rowCount = 50;
int colCount = 4;
int rowIndex;
int colIndex;
TableTRElement headTrElement = tableTHeadElement.createTR();
headTrElement.setAlternativeText("Head Row");
headTrElement.setBackgroundColor(Color.getLightGray());
for (colIndex = 0; colIndex < colCount; colIndex++)
{
TableTHElement thElement = headTrElement.createTH();
thElement.setText(String.format("Head %s", colIndex));
thElement.setBackgroundColor(Color.getGreenYellow());
thElement.setBorder(new BorderInfo(BorderSide.All, 4.0F, Color.getLightGray()));
thElement.setMargin(new MarginInfo(16.0, 2.0, 8.0, 2.0));
thElement.setAlignment(HorizontalAlignment.Right);
}
for (rowIndex = 0; rowIndex < rowCount; rowIndex++)
{
TableTRElement trElement = tableTBodyElement.createTR();
trElement.setAlternativeText(String.format("Row %s", rowIndex));
for (colIndex = 0; colIndex < colCount; colIndex++)
{
int colSpan = 1;
int rowSpan = 1;
if (colIndex == 1 && rowIndex == 1)
{
colSpan = 2;
rowSpan = 2;
}
else if (colIndex == 2 && (rowIndex == 1 || rowIndex == 2))
{
continue;
}
else if (rowIndex == 2 && (colIndex == 1 || colIndex == 2))
{
continue;
}
TableTDElement tdElement = trElement.createTD();
tdElement.setText(String.format("Cell [%s, %s]", rowIndex, colIndex));
tdElement.setBackgroundColor(Color.getYellow());
tdElement.setBorder(new BorderInfo(BorderSide.All, 4.0F, Color.getGray()));
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.isWordWrapped();
tdElement.setVerticalAlignment(VerticalAlignment.Center);
tdElement.setColSpan(colSpan);
tdElement.setRowSpan(rowSpan);
}
}
TableTRElement footTrElement = tableTFootElement.createTR();
footTrElement.setAlternativeText("Foot Row");
footTrElement.setBackgroundColor(Color.getLightSeaGreen());
for (colIndex = 0; colIndex < colCount; colIndex++)
{
TableTDElement tdElement = footTrElement.createTD();
tdElement.setText(String.format("Foot %s", colIndex));
tdElement.setAlignment(HorizontalAlignment.Center);
tdElement.getStructureTextState().setFontSize(7F);
tdElement.getStructureTextState().setFontStyle(FontStyles.Bold);
}
StructureAttributes tableAttributes = tableElement.getAttributes().getAttributes(AttributeOwnerStandard.Table);
StructureAttribute summaryAttribute = new StructureAttribute(AttributeKey.Summary);
summaryAttribute.setStringValue("The summary text for table");
tableAttributes.setAttribute(summaryAttribute);
// 태그가 지정된 PDF 문서 저장
document.save(path + "CreateTableElement.pdf");
스타일 테이블 요소
Aspose.PDF for Java는 태그가 지정된 PDF 문서에서 테이블의 스타일을 지정할 수 있습니다. 테이블의 스타일을 지정하기 위해서는 ITaggedContent 인터페이스의 createTableElement() 메소드를 사용하여 테이블을 생성할 수 있습니다. 그리고 TableElement 클래스의 속성을 사용하여 테이블 스타일을 설정할 수 있습니다. 테이블 스타일을 지정할 때 사용할 수 있는 속성 목록은 다음과 같습니다:
- BackgroundColor
- Border
- Alignment
- CornerStyle
- Broken
- ColumnAdjustment
- ColumnWidths
- DefaultCellBorder
- DefaultCellPadding
- DefaultCellTextState
- DefaultColumnWidth
- IsBroken
- IsBordersIncluded
- Left
- Top
다음 코드 스니펫은 태그가 지정된 PDF 문서에서 테이블 스타일을 지정하는 방법을 보여줍니다:
// 완전한 예제와 데이터 파일은 https://github.com/aspose-pdf/Aspose.PDF-for-Java 를 참조하세요
// 문서 디렉토리 경로
String path = Utils.getDataDir() + "TaggedPDFs\\";
// 문서 생성
Document document = new Document();
ITaggedContent taggedContent = document.getTaggedContent();
taggedContent.setTitle("예제 테이블 스타일");
taggedContent.setLanguage("en-US");
// 루트 구조 요소 가져오기
StructureElement rootElement = taggedContent.getRootElement();
// 테이블 구조 요소 생성
TableElement tableElement = taggedContent.createTableElement();
rootElement.appendChild(tableElement);
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(8F);
tableElement.setDefaultColumnWidth("70");
tableElement.setBroken(false);
tableElement.setBordersIncluded(true);
tableElement.setLeft(0F);
tableElement.setTop(40F);
tableElement.setRepeatingColumnsCount(2);
tableElement.setRepeatingRowsCount(3);
TextState rowStyle = new TextState();
rowStyle.setBackgroundColor(Color.getLightCoral());
tableElement.setRepeatingRowsStyle(rowStyle);
TableTHeadElement tableTHeadElement = tableElement.createTHead();
TableTBodyElement tableTBodyElement = tableElement.createTBody();
TableTFootElement tableTFootElement = tableElement.createTFoot();
int rowCount = 10;
int colCount = 5;
int rowIndex;
int colIndex;
TableTRElement headTrElement = tableTHeadElement.createTR();
headTrElement.setAlternativeText("헤드 행");
for (colIndex = 0; colIndex < colCount; colIndex++)
{
TableTHElement thElement = headTrElement.createTH();
thElement.setText(String.format("헤드 %s", colIndex));
}
for (rowIndex = 0; rowIndex < rowCount; rowIndex++)
{
TableTRElement trElement = tableTBodyElement.createTR();
trElement.setAlternativeText(String.format("행 %s", rowIndex));
for (colIndex = 0; colIndex < colCount; colIndex++)
{
TableTDElement tdElement = trElement.createTD();
tdElement.setText(String.format("셀 [%s, %s]", rowIndex, colIndex));
}
}
TableTRElement footTrElement = tableTFootElement.createTR();
footTrElement.setAlternativeText("풋 행");
for (colIndex = 0; colIndex < colCount; colIndex++)
{
TableTDElement tdElement = footTrElement.createTD();
tdElement.setText(String.format("풋 %s", colIndex));
}
// 태그가 지정된 PDF 문서 저장
document.save(path + "StyleTableElement.pdf");
스타일 테이블 행
Aspose.PDF for Java는 Tagged PDF 문서에서 테이블 행을 스타일링할 수 있도록 합니다. 테이블 행을 스타일링하기 위해 TableTRElement 클래스의 속성을 사용할 수 있습니다. 테이블 행을 스타일링하는 데 사용할 수 있는 속성 목록은 다음과 같습니다:
- BackgroundColor
- Border
- DefaultCellBorder
- MinRowHeight
- FixedRowHeight
- IsInNewPage
- IsRowBroken
- DefaultCellTextState
- DefaultCellPadding
- VerticalAlignment
다음 코드 스니펫은 Tagged PDF 문서에서 테이블 행을 스타일링하는 방법을 보여줍니다:
// 완전한 예시와 데이터 파일은 https://github.com/aspose-pdf/Aspose.PDF-for-Java를 참조하세요.
// 문서 디렉토리의 경로입니다.
String path = Utils.getDataDir() + "TaggedPDFs\\";
// 문서 생성
Document document = new Document();
ITaggedContent taggedContent = document.getTaggedContent();
taggedContent.setTitle("예제 테이블 행 스타일");
taggedContent.setLanguage("en-US");
// 루트 구조 요소 가져오기
StructureElement rootElement = taggedContent.getRootElement();
// 테이블 구조 요소 생성
TableElement tableElement = taggedContent.createTableElement();
rootElement.appendChild(tableElement);
TableTHeadElement tableTHeadElement = tableElement.createTHead();
TableTBodyElement tableTBodyElement = tableElement.createTBody();
TableTFootElement tableTFootElement = tableElement.createTFoot();
int rowCount = 7;
int colCount = 3;
int rowIndex;
int colIndex;
TableTRElement headTrElement = tableTHeadElement.createTR();
headTrElement.setAlternativeText("헤드 행");
for (colIndex = 0; colIndex < colCount; colIndex++)
{
TableTHElement thElement = headTrElement.createTH();
thElement.setText(String.format("헤드 %s", colIndex));
}
for (rowIndex = 0; rowIndex < rowCount; rowIndex++)
{
TableTRElement trElement = tableTBodyElement.createTR();
trElement.setAlternativeText(String.format("행 %s", rowIndex));
trElement.setBackgroundColor(Color.getLightSeaGreen());
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.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 (colIndex = 0; colIndex < colCount; colIndex++)
{
TableTDElement tdElement = trElement.createTD();
tdElement.setText(String.format("셀 [{0}, {1}]", rowIndex, colIndex));
}
}
TableTRElement footTrElement = tableTFootElement.createTR();
footTrElement.setAlternativeText("풋 행");
for (colIndex = 0; colIndex < colCount; colIndex++)
{
TableTDElement tdElement = footTrElement.createTD();
tdElement.setText(String.format("풋 %s", colIndex));
}
// Tagged Pdf 문서 저장
document.save(path + "StyleTableRow.pdf");
스타일 테이블 셀
Aspose.PDF for Java는 태그된 PDF 문서에서 테이블 셀을 스타일링할 수 있게 해줍니다. 테이블 셀을 스타일링하기 위해서는 TableCellElement 클래스의 속성을 사용할 수 있습니다. 다음은 테이블 셀을 스타일링하기 위해 사용할 수 있는 속성 목록입니다:
- BackgroundColor
- Border
- IsNoBorder
- Margin
- Alignment
- DefaultCellTextState
- IsWordWrapped
- VerticalAlignment
- ColSpan
- RowSpan
다음 코드 스니펫은 태그된 PDF 문서에서 테이블 셀을 스타일링하는 방법을 보여줍니다. 생성된 문서의 PDF/UA 준수 여부를 확인할 수도 있습니다. 아래 코드 스니펫은 이 기능을 사용하는 방법을 보여줍니다.
// 전체 예제 및 데이터 파일은 https://github.com/aspose-pdf/Aspose.PDF-for-Java를 참조하세요.
// 문서 디렉토리 경로.
String path = Utils.getDataDir() + "TaggedPDFs\\";
// 문서 생성
Document document = new Document();
ITaggedContent taggedContent = document.getTaggedContent();
taggedContent.setTitle("예제 테이블 셀 스타일");
taggedContent.setLanguage("en-US");
// 루트 구조 요소 가져오기
StructureElement rootElement = taggedContent.getRootElement();
// 테이블 구조 요소 생성
TableElement tableElement = taggedContent.createTableElement();
rootElement.appendChild(tableElement);
TableTHeadElement tableTHeadElement = tableElement.createTHead();
TableTBodyElement tableTBodyElement = tableElement.createTBody();
TableTFootElement tableTFootElement = tableElement.createTFoot();
int rowCount = 4;
int colCount = 4;
int rowIndex;
int colIndex;
TableTRElement headTrElement = tableTHeadElement.createTR();
headTrElement.setAlternativeText("헤드 행");
for (colIndex = 0; colIndex < colCount; colIndex++)
{
TableTHElement thElement = headTrElement.createTH();
thElement.setText(String.format("헤드 %s", colIndex));
thElement.setBackgroundColor(Color.getGreenYellow());
thElement.setBorder(new BorderInfo(BorderSide.All, 4.0F, Color.getGray()));
thElement.setNoBorder(false);
thElement.setMargin(new MarginInfo(16.0, 2.0, 8.0, 2.0));
thElement.setAlignment(HorizontalAlignment.Right);
}
for (rowIndex = 0; rowIndex < rowCount; rowIndex++)
{
TableTRElement trElement = tableTBodyElement.createTR();
trElement.setAlternativeText(String.format("행 %s", rowIndex));
for (colIndex = 0; colIndex < colCount; colIndex++)
{
int colSpan = 1;
int rowSpan = 1;
if (colIndex == 1 && rowIndex == 1)
{
colSpan = 2;
rowSpan = 2;
}
else if (colIndex == 2 && (rowIndex == 1 || rowIndex == 2))
{
continue;
}
else if (rowIndex == 2 && (colIndex == 1 || colIndex == 2))
{
continue;
}
TableTDElement tdElement = trElement.createTD();
tdElement.setText(String.format("셀 [%s, %s]", rowIndex, colIndex));
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(false);
tdElement.setVerticalAlignment(VerticalAlignment.Center);
tdElement.setColSpan(colSpan);
tdElement.setRowSpan(rowSpan);
}
}
TableTRElement footTrElement = tableTFootElement.createTR();
footTrElement.setAlternativeText("풋 행");
for (colIndex = 0; colIndex < colCount; colIndex++)
{
TableTDElement tdElement = footTrElement.createTD();
tdElement.setText(String.format("풋 %s", colIndex));
}
// 태그된 PDF 문서 저장
document.save(path + "StyleTableCell.pdf");