C# 實(shí)現(xiàn)繪制PDF嵌套表格案例詳解
嵌套表格,即在一張表格中的特定單元格中再插入一個(gè)或者多個(gè)表格,使用嵌套表格的優(yōu)點(diǎn)在于能夠讓內(nèi)容的布局更加合理,同時(shí)也方便程序套用。下面的示例中,將介紹如何通過C#編程來演示如何插入嵌套表格到PDF文檔。
要點(diǎn)概括:
1. 插入嵌套表格
2. 插入文字到嵌套表格
3. 插入圖片到嵌套表格
使用工具
注:
1.這里使用的版本為4.9.7,經(jīng)測試,對于代碼中涉及的PdfGridCellContentList類和PdfGridCellContent類僅在使用該版本或者以上版本可用。使用時(shí),請注意版本信息。
2.下載安裝后,在編輯代碼時(shí),請注意添加引用Spire.Pdf.dll(dll文件可在安裝路徑下的Bin文件夾下獲取)
示例代碼(供參考)
步驟 1 :創(chuàng)建文檔
PdfDocument pdf = new PdfDocument(); PdfPageBase page = pdf.Pages.Add();
步驟 2 :添加字體、畫筆,寫入文本到PDF文檔?
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("行楷", 11f), true); PdfPen pen = new PdfPen(Color.Gray); string text = "2018 Pyeongchang Olympic Winter Games Medal Ranking"; page.Canvas.DrawString(text, font, pen, 100, 50);
步驟 3 :創(chuàng)建第一個(gè)表格
//創(chuàng)建一個(gè)PDF表格,并添加兩行 PdfGrid grid = new PdfGrid(); PdfGridRow row1 = grid.Rows.Add(); PdfGridRow row2 = grid.Rows.Add(); //設(shè)置表格的單元格內(nèi)容和邊框之間的上、下邊距 grid.Style.CellPadding.Top = 5f; grid.Style.CellPadding.Bottom = 5f; //添加三列,并設(shè)置列寬 grid.Columns.Add(3); grid.Columns[0].Width = 120f; grid.Columns[1].Width = 150f; grid.Columns[2].Width = 120f;
步驟 4 :創(chuàng)建一個(gè)嵌套表格
//創(chuàng)建一個(gè)一行兩列的嵌套表格 PdfGrid embedGrid1 = new PdfGrid(); PdfGridRow newRow = embedGrid1.Rows.Add(); embedGrid1.Columns.Add(2); //設(shè)置嵌套表格的列寬 embedGrid1.Columns[0].Width = 50f; embedGrid1.Columns[1].Width = 60f;
步驟 5 :添加文本、圖片到嵌套表格
//初始化SizeF類,設(shè)置圖片大小 SizeF imageSize = new SizeF(45, 35); //實(shí)例化PdfGridCellContentList、PdfGridCellContent類,加載需要添加到嵌套表格的圖片 PdfGridCellContentList contentList = new PdfGridCellContentList(); PdfGridCellContent content = new PdfGridCellContent(); content.Image = PdfImage.FromFile("1.png"); content.ImageSize = imageSize; contentList.List.Add(content); //實(shí)例化PdfStringFormat、PdfTrueTypeFont類,設(shè)置單元格文字對齊方式 PdfStringFormat stringFormat = new PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle); //添加文本內(nèi)容及圖片到嵌套表格 newRow.Cells[0].Value = "Norway"; newRow.Cells[0].StringFormat = stringFormat; newRow.Cells[1].Value = contentList; //將圖片添加到嵌套表格的第二個(gè)單元格 newRow.Cells[1].StringFormat = stringFormat;
步驟 6 :添加數(shù)據(jù)到第一個(gè)表格
//設(shè)置第一個(gè)表格的單元格的值和格式 row1.Cells[0].Value = "Rank"; row1.Cells[0].StringFormat = stringFormat; row1.Cells[0].Style.Font = font; row1.Cells[0].Style.BackgroundBrush = PdfBrushes.LightSalmon; row1.Cells[1].Value = "Country"; row1.Cells[1].StringFormat = stringFormat; row1.Cells[1].Style.Font = font; row1.Cells[1].Style.BackgroundBrush = PdfBrushes.LightSalmon; row1.Cells[2].Value = "Total"; row1.Cells[2].StringFormat = stringFormat; row1.Cells[2].Style.Font = font; row1.Cells[2].Style.BackgroundBrush = PdfBrushes.LightSalmon; row2.Cells[0].Value = "1"; row2.Cells[0].StringFormat = stringFormat; row2.Cells[0].Style.Font = font; row2.Cells[1].Value = embedGrid1; //將嵌套表格添加到第一個(gè)表格的第二行第二個(gè)單元格 row2.Cells[1].StringFormat = stringFormat; row2.Cells[2].Value = "39"; row2.Cells[2].StringFormat = stringFormat; row2.Cells[2].Style.Font = font;
步驟 7:將表格繪制到頁面指定位置
grid.Draw(page, new PointF(30f, 90f));
步驟 8 :保存文檔
pdf.SaveToFile("result.pdf");
完成代碼后,調(diào)試程序,生成文檔。繪制的表格如下:
全部代碼:
using Spire.Pdf; using Spire.Pdf.Graphics; using Spire.Pdf.Grid; using System.Drawing; using System.Windows.Forms; using System; namespace NestedTable_PDF { class Program { static void Main(string[] args) { //實(shí)例化PdfDocument類,并添加頁面到新建的文檔 PdfDocument pdf = new PdfDocument(); PdfPageBase page = pdf.Pages.Add(); //添加字體、畫筆,寫入文本到PDF文檔 PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("行楷", 11f), true); PdfPen pen = new PdfPen(Color.Gray); string text = "2018 Pyeongchang Olympic Winter Games Medal Ranking"; page.Canvas.DrawString(text, font, pen, 100, 50); //創(chuàng)建一個(gè)PDF表格,并添加兩行 PdfGrid grid = new PdfGrid(); PdfGridRow row1 = grid.Rows.Add(); PdfGridRow row2 = grid.Rows.Add(); //設(shè)置表格的單元格內(nèi)容和邊框之間的上、下邊距 grid.Style.CellPadding.Top = 5f; grid.Style.CellPadding.Bottom = 5f; //添加三列,并設(shè)置列寬 grid.Columns.Add(3); grid.Columns[0].Width = 120f; grid.Columns[1].Width = 150f; grid.Columns[2].Width = 120f; //創(chuàng)建一個(gè)一行兩列的嵌套表格 PdfGrid embedGrid1 = new PdfGrid(); PdfGridRow newRow = embedGrid1.Rows.Add(); embedGrid1.Columns.Add(2); //設(shè)置嵌套表格的列寬 embedGrid1.Columns[0].Width = 50f; embedGrid1.Columns[1].Width = 60f; //初始化SizeF類,設(shè)置圖片大小 SizeF imageSize = new SizeF(45, 35); //實(shí)例化PdfGridCellContentList、PdfGridCellContent類,加載需要添加到嵌套表格的圖片 PdfGridCellContentList contentList = new PdfGridCellContentList(); PdfGridCellContent content = new PdfGridCellContent(); content.Image = PdfImage.FromFile("1.png"); content.ImageSize = imageSize; contentList.List.Add(content); //實(shí)例化PdfStringFormat、PdfTrueTypeFont類,設(shè)置單元格文字對齊方式 PdfStringFormat stringFormat = new PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle); //添加文本內(nèi)容及圖片到嵌套表格 newRow.Cells[0].Value = "Norway"; newRow.Cells[0].StringFormat = stringFormat; newRow.Cells[1].Value = contentList; //將圖片添加到嵌套表格的第二個(gè)單元格 newRow.Cells[1].StringFormat = stringFormat; //設(shè)置第一個(gè)表格的單元格的值和格式 row1.Cells[0].Value = "Rank"; row1.Cells[0].StringFormat = stringFormat; row1.Cells[0].Style.Font = font; row1.Cells[0].Style.BackgroundBrush = PdfBrushes.LightSalmon; row1.Cells[1].Value = "Country"; row1.Cells[1].StringFormat = stringFormat; row1.Cells[1].Style.Font = font; row1.Cells[1].Style.BackgroundBrush = PdfBrushes.LightSalmon; row1.Cells[2].Value = "Total"; row1.Cells[2].StringFormat = stringFormat; row1.Cells[2].Style.Font = font; row1.Cells[2].Style.BackgroundBrush = PdfBrushes.LightSalmon; row2.Cells[0].Value = "1"; row2.Cells[0].StringFormat = stringFormat; row2.Cells[0].Style.Font = font; row2.Cells[1].Value = embedGrid1; //將嵌套表格添加到第一個(gè)表格的第二行第二個(gè)單元格 row2.Cells[1].StringFormat = stringFormat; row2.Cells[2].Value = "39"; row2.Cells[2].StringFormat = stringFormat; row2.Cells[2].Style.Font = font; //將表格繪制到頁面指定位置 grid.Draw(page, new PointF(30f, 90f)); //保存文檔并打開 pdf.SaveToFile("result.pdf"); System.Diagnostics.Process.Start("result.pdf"); } } }
?以上就是C# 實(shí)現(xiàn)繪制PDF嵌套表格案例詳解的詳細(xì)內(nèi)容,更多關(guān)于C# 的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C#實(shí)現(xiàn)多線程的Web代理服務(wù)器實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)多線程的Web代理服務(wù)器,涉及C#多線程代理服務(wù)器的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07C#實(shí)現(xiàn)的pdf生成圖片文字水印類實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)的pdf生成圖片文字水印類,結(jié)合完整實(shí)例形式分析了C#針對pdf文件的創(chuàng)建、添加文字、水印等相關(guān)操作技巧,需要的朋友可以參考下2017-09-09C#實(shí)現(xiàn)計(jì)算年齡的簡單方法匯總
本文給大家分享的是C#代碼實(shí)現(xiàn)的簡單實(shí)用的給出用戶的出生日期,計(jì)算出用戶的年齡的代碼,另外附上其他網(wǎng)友的方法,算是對計(jì)算年齡的一次小結(jié),希望大家能夠喜歡。2015-05-05C# 文件下載之?dāng)帱c(diǎn)續(xù)傳實(shí)現(xiàn)代碼
本篇文章主要介紹了C# 文件下載之?dāng)帱c(diǎn)續(xù)傳實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01