![C#에서 데이터베이스의 데이터를 PDF로 추가](images/Create-Tables-in-PDF.jpg#center)
데이터베이스는 데이터를 저장하고 관리하기 위해 거의 모든 곳에 있습니다. 데이터베이스에서 데이터를 검색하고 응용 프로그램에 로드하는 것은 프로그래머의 일반적인 관행입니다. 프로그래밍 방식으로 PDF 파일을 생성할 때 데이터베이스의 데이터로 문서를 채워야 할 수도 있습니다. .NET 응용 프로그램에서 이를 수행하기 위해 이 문서에서는 데이터베이스의 데이터를 C#의 PDF 파일에 추가하는 방법을 보여줍니다.
데이터베이스에서 PDF로 데이터를 추가하는 C# .NET API
Aspose.PDF for .NET를 사용하여 데이터베이스에서 PDF 파일로 데이터를 추가합니다. 간단하고 복잡한 레이아웃의 PDF 파일을 원활하게 생성할 수 있는 인기 있는 PDF 생성 및 조작 API입니다. API의 바이너리를 다운로드하거나 NuGet을 사용하여 설치할 수 있습니다.
PM> Install-Package Aspose.PDF
C#에서 데이터베이스의 데이터를 PDF로 추가
대부분의 경우 데이터는 데이터베이스 테이블에서 DataTable 또는 DataView로 가져옵니다. 따라서 데모를 위해 DataTable을 사용하여 PDF 파일에 데이터를 추가합니다. 일을 더 단순하게 유지하기 위해 데이터베이스를 사용하지 않고 프로그래밍 방식으로 DataTable을 만들고 채웁니다. 다음은 C#의 데이터베이스에서 PDF 파일에 데이터를 추가하는 단계입니다.
- 데이터베이스에서 DataTable로 데이터를 로드합니다.
- Document 클래스를 사용하여 새 PDF를 만들거나 기존 PDF를 로드합니다.
- Table 클래스의 인스턴스를 만들고 해당 속성(예: 열 너비, 테두리 등)을 설정합니다.
- Table.ImportDataTable() 메서드를 사용하여 데이터베이스에서 PDF 테이블로 데이터를 가져옵니다.
- Document.Pages[index].Paragraphs.Add(Table) 메서드를 사용하여 페이지에 테이블을 추가합니다.
- Document.Save(string) 메서드를 사용하여 PDF 파일을 저장합니다.
다음 코드 샘플은 C#의 데이터베이스에서 PDF로 데이터를 가져오는 방법을 보여줍니다.
// 데이터베이스에서 DataTable로 데이터 가져오기
DataTable dt = new DataTable("Employee");
dt.Columns.Add("Employee_ID", typeof(Int32));
dt.Columns.Add("Employee_Name", typeof(string));
dt.Columns.Add("Gender", typeof(string));
// 프로그래밍 방식으로 DataTable 개체에 2개의 행 추가
DataRow dr = dt.NewRow();
dr[0] = 1;
dr[1] = "John Smith";
dr[2] = "Male";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 2;
dr[1] = "Mary Miller";
dr[2] = "Female";
dt.Rows.Add(dr);
// 문서 인스턴스 만들기
Document doc = new Document();
doc.Pages.Add();
// 테이블의 새 인스턴스를 초기화합니다.
Aspose.Pdf.Table table = new Aspose.Pdf.Table();
// 테이블의 열 너비 설정
table.ColumnWidths = "40 100 100 100";
// 테이블 테두리 색상을 LightGray로 설정
table.Border = new Aspose.Pdf.BorderInfo(Aspose.Pdf.BorderSide.All, .5f, Aspose.Pdf.Color.FromRgb(System.Drawing.Color.LightGray));
// 표 셀의 테두리 설정
table.DefaultCellBorder = new Aspose.Pdf.BorderInfo(Aspose.Pdf.BorderSide.All, .5f, Aspose.Pdf.Color.FromRgb(System.Drawing.Color.LightGray));
// 데이터 가져오기
table.ImportDataTable(dt, true, 0, 1, 3, 3);
// 입력 문서의 첫 페이지에 테이블 개체 추가
doc.Pages[1].Paragraphs.Add(table);
// 테이블 개체가 포함된 업데이트된 문서 저장
doc.Save("output.pdf");
다음은 위 코드 샘플의 출력입니다.
![C#에서 데이터베이스의 데이터를 PDF로 추가](images/Import-Data-from-Database-to-PDF.png#center)
Entity Framework에서 데이터베이스의 데이터를 PDF로 추가
요즘 개발자들은 Entity Framework(EF)를 많이 사용하고 있습니다. 따라서 Table 클래스를 확장하여 EF의 목록 또는 그룹화된 데이터로 PDF 문서를 채우는 것이 편리할 것입니다. 다음은 목록 및 그룹화된 데이터를 사용하여 PDF 테이블을 채우는 방법의 구현입니다. 두 메서드 모두에서 테이블과 데이터는 메서드의 인수로 전달됩니다.
public static class PdfHelper
{
public static void ImportEntityList<TSource>(this Pdf.Table table, IList<TSource> data)
{
var headRow = table.Rows.Add();
var props = typeof(TSource).GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (var prop in props)
{
headRow.Cells.Add(prop.GetCustomAttribute(typeof(DisplayAttribute)) is DisplayAttribute dd ? dd.Name : prop.Name);
}
foreach (var item in data)
{
// 테이블에 행 추가
var row = table.Rows.Add();
// 표 셀 추가
foreach (var t in props)
{
var dataItem = t.GetValue(item, null);
if (t.GetCustomAttribute(typeof(DataTypeAttribute)) is DataTypeAttribute dataType)
switch (dataType.DataType)
{
case DataType.Currency:
row.Cells.Add(string.Format("{0:C}", dataItem));
break;
case DataType.Date:
var dateTime = (DateTime)dataItem;
if (t.GetCustomAttribute(typeof(DisplayFormatAttribute)) is DisplayFormatAttribute df)
{
row.Cells.Add(string.IsNullOrEmpty(df.DataFormatString)
? dateTime.ToShortDateString()
: string.Format(df.DataFormatString, dateTime));
}
break;
default:
row.Cells.Add(dataItem.ToString());
break;
}
else
{
row.Cells.Add(dataItem.ToString());
}
}
}
}
public static void ImportGroupedData<TKey,TValue>(this Pdf.Table table, IEnumerable<Models.GroupViewModel<TKey, TValue>> groupedData)
{
var headRow = table.Rows.Add();
var props = typeof(TValue).GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (var prop in props)
{
headRow.Cells.Add(prop.GetCustomAttribute(typeof(DisplayAttribute)) is DisplayAttribute dd ? dd.Name : prop.Name);
}
foreach (var group in groupedData)
{
// 테이블에 그룹 행 추가
var row = table.Rows.Add();
var cell = row.Cells.Add(group.Key.ToString());
cell.ColSpan = props.Length;
cell.BackgroundColor = Pdf.Color.DarkGray;
cell.DefaultCellTextState.ForegroundColor = Pdf.Color.White;
foreach (var item in group.Values)
{
// 테이블에 데이터 행 추가
var dataRow = table.Rows.Add();
// 셀 추가
foreach (var t in props)
{
var dataItem = t.GetValue(item, null);
if (t.GetCustomAttribute(typeof(DataTypeAttribute)) is DataTypeAttribute dataType)
switch (dataType.DataType)
{
case DataType.Currency:
dataRow.Cells.Add(string.Format("{0:C}", dataItem));
break;
case DataType.Date:
var dateTime = (DateTime)dataItem;
if (t.GetCustomAttribute(typeof(DisplayFormatAttribute)) is DisplayFormatAttribute df)
{
dataRow.Cells.Add(string.IsNullOrEmpty(df.DataFormatString)
? dateTime.ToShortDateString()
: string.Format(df.DataFormatString, dateTime));
}
break;
default:
dataRow.Cells.Add(dataItem.ToString());
break;
}
else
{
dataRow.Cells.Add(dataItem.ToString());
}
}
}
}
}
}
public class GroupViewModel<K,T>
{
public K Key;
public IEnumerable<T> Values;
}
무료 라이선스 받기
평가 제한 없이 Aspose.PDF for .NET을 사용하려면 무료 임시 라이센스를 얻으십시오.
결론
이 기사에서는 데이터베이스의 데이터를 C#의 PDF 파일에 추가하는 방법을 배웠습니다. DataTable에서 PDF 파일의 테이블로 데이터를 가져오는 방법을 살펴보았습니다. 또한 Entity Framework를 사용하여 데이터를 PDF로 가져오는 구현을 다루었습니다. 또한 문서를 사용하여 C# PDF API에 대해 자세히 알아볼 수 있습니다. 질문이나 질문이 있는 경우 포럼을 통해 문의할 수 있습니다.