Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C# 绘制PDF嵌套表格

C# 绘制PDF嵌套表格

原创
作者头像
Iceblue
修改于 2018-10-23 10:01:09
修改于 2018-10-23 10:01:09
1.1K0
举报
文章被收录于专栏:.Net /C#.Net /C#

嵌套表格,即在一张表格中的特定单元格中再插入一个或者多个表格,使用嵌套表格的优点在于能够让内容的布局更加合理,同时也方便程序套用。下面的示例中,将介绍如何通过C#编程来演示如何插入嵌套表格到PDF文档。

要点概括:

1. 插入嵌套表格

2. 插入文字到嵌套表格

3. 插入图片到嵌套表格

使用工具

注:

1.这里使用的版本为4.9.7,经测试,对于代码中涉及的PdfGridCellContentList类和PdfGridCellContent类仅在使用该版本或者以上版本可用。使用时,请注意版本信息。

2.下载安装后,在编辑代码时,请注意添加引用Spire.Pdf.dll(dll文件可在安装路径下的Bin文件夹下获取)

Spire.Pdf.dll引用
Spire.Pdf.dll引用

示例代码(供参考)

代码语言:c#
AI代码解释
复制
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)
        {
            //实例化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);

            //创建一个PDF表格,并添加两行
            PdfGrid grid = new PdfGrid(); 
            PdfGridRow row1 = grid.Rows.Add();
            PdfGridRow row2 = grid.Rows.Add();

            //设置表格的单元格内容和边框之间的上、下边距
            grid.Style.CellPadding.Top = 5f;
            grid.Style.CellPadding.Bottom = 5f;

            //添加三列,并设置列宽
            grid.Columns.Add(3);
            grid.Columns[0].Width = 120f;
            grid.Columns[1].Width = 150f;
            grid.Columns[2].Width = 120f; 

            //创建一个一行两列的嵌套表格
            PdfGrid embedGrid1 = new PdfGrid();
            PdfGridRow newRow = embedGrid1.Rows.Add();
            embedGrid1.Columns.Add(2);

            //设置嵌套表格的列宽
            embedGrid1.Columns[0].Width = 50f;
            embedGrid1.Columns[1].Width = 60f;

            //初始化SizeF类,设置图片大小
            SizeF imageSize = new SizeF(45, 35);
            //实例化PdfGridCellContentList、PdfGridCellContent类,加载添加到嵌套表格的图片
            PdfGridCellContentList contentList = new PdfGridCellContentList();
            PdfGridCellContent content = new PdfGridCellContent();
            content.Image = PdfImage.FromFile("1.png");
            content.ImageSize = imageSize;
            contentList.List.Add(content);
            //实例化PdfStringFormat、PdfTrueTypeFont类,设置单元格文字对齐方式、字体、字号等
            PdfStringFormat stringFormat = new PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle);         

            //设置嵌套表格的单元格的值,并应用格式
            newRow.Cells[0].Value = "Norway";
            newRow.Cells[0].StringFormat = stringFormat;
            newRow.Cells[1].Value = contentList; //将图片添加到嵌套表格的第二个单元格
            newRow.Cells[1].StringFormat = stringFormat;           

            //设置第一个表格的单元格的值和格式
            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; //将嵌套表格添加到第一个表格的第二行第二个单元格
            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");
        }
    }
}

代码完成后,调试程序,生成文档,嵌套表格绘制效果如下:

PDF中嵌套表格效果图
PDF中嵌套表格效果图

以上是本次C#绘制PDF嵌套表格的全部内容。

(本文完)

转载请注明出处。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java 在PDF中添加表格
本文将介绍通过Java编程在PDF文档中添加表格的方法。添加表格时,可设置表格边框、单元格对齐方式、单元格背景色、单元格合并、插入图片、设置行高、列宽、字体、字号等。 通过maven导入 地址 代码如下:
崔笑颜
2020/06/08
5.9K0
使用Spire.Office for .NET(Word、Excel、PPT、PDF等)的初步感受
  本文大部分内容来自http://www.codeproject.com/Articles/710747/First-thoughts-on-Spire-Doc-for-NET。
aehyok
2018/08/31
2.9K0
使用Spire.Office for .NET(Word、Excel、PPT、PDF等)的初步感受
C# 复制PDF页面到另一个PDF文档
有时候我们可能有这样一个需求,那就是把PDF页面从一个PDF文档复制到另一个PDF文档中。由于PDF文档并不像word文档那样好编辑,因此复制也相对没有那么容易。写这篇文章主要是分享一个简单而且比较容
逸鹏
2018/04/10
1.6K0
C# 复制PDF页面到另一个PDF文档
高效而稳定的企业级.NET Office 组件Spire(.NET组件介绍之二)
彭泽0902
2018/01/04
2.6K0
高效而稳定的企业级.NET Office 组件Spire(.NET组件介绍之二)
C#使用NPOI进行word的读写
如果不进行页面大小的设置,默认是纵向的A4大小。横向的A4的页面大小 ,如果要纵向,宽高两个值调换即可。
zls365
2021/03/16
7.8K1
【说站】C#在PDF中添加墨迹注释Ink Annotation的步骤详解
PDF中的墨迹注释(Ink Annotation),表现为徒手涂鸦式的形状;该类型的注释,可任意指定形状顶点的位置及个数,通过指定的顶点,程序将连接各点绘制成平滑的曲线。下面,通过C#程序代码介绍如何在PDF中添加该注释。
很酷的站长
2022/11/24
1.4K0
【说站】C#在PDF中添加墨迹注释Ink Annotation的步骤详解
请看完这个Java对Word的骚操作,太实用了
创建表格,包括添加数据、插入表格、合并单元格、设置表格样式、单元格居中、单元格背景色,单元格字体样式等设置,可参考这篇文章里的内容。
用户5224393
2020/03/12
2.8K0
请看完这个Java对Word的骚操作,太实用了
[306]python操作excel表格(xlrd/xlwt)
python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。可从这里下载https://pypi.python.org/pypi。下面分别记录python读和写excel.
周小董
2022/04/12
2.8K0
[306]python操作excel表格(xlrd/xlwt)
grid布局—让css变得更简单
通过将属性display的值设为grid,使 HTML 元素变为网格容器。在 CSS 网格中,父元素称为容器(container),它的子元素称为项(items)。
_kyle
2020/08/24
5.7K0
grid布局—让css变得更简单
Python读写Excel表格,就是这么
于是我到处查找资料,基本解决了日常所需,终于算是完成了任务,因此撰写此文就算是总结吧,主要记录使用过程的常见问题及解决。
py3study
2020/01/06
1K0
Python读写Excel表格,就是这么
C#实战:实现多页pdf转换为一张图片
在实际应用中,我们常常需要处理PDF文件的各种转换需求,其中之一便是将一个多页的PDF文档转换成一张连续的图片,这对于制作演示文稿、网页展示或者电子书预览等场景尤为实用。这里使用Free Spire.PDF for .NET类库来实现这个功能。
小明互联网技术分享社区
2024/05/04
7371
C#实战:实现多页pdf转换为一张图片
C# 打印PDF文档的10种方法
操作PDF文档时,打印是常见的需求之一。针对不同的打印需求,可分多种情况来进行,如设置静默打印、指定打印页码范围和打印纸张大小、双面打印、黑白打印等等。
郑子铭
2022/03/22
3.2K0
iText5实现Java生成PDF文件完整版
最近项目中使用到Java实现导出PDF文件,经过一番参考研究最终决定使用itextpdf来实现,当然也可以参考 PDF Java类库:Spire.PDF for Java(https://www.e-iceblue.cn/spirepdfjava/create-pdf-in-java.html)。本文是使用第一种来实现的。
全栈程序员站长
2022/07/02
6.9K1
iText5实现Java生成PDF文件完整版
JavaScript创建的可编辑表格
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <style type="text/css"> .divClass{height:250px;width:100%;overflow:auto;} td{height:22px;border-bottom:1px solid black;border-right:1px solid black;cursor:default;} th{height:20px;font-size:12px;font-weight:normal;border-bottom:2px solid black;border-right:1px solid black;background-color:#999999} table{border-top:1px solid black;border-left:1px solid black;font-size:13px;} input{border:1px solid black;} .TrOdd{font-family: "宋体";font-size: 12px;background-color: #FFFFFF;} .TrEven{font-family: "宋体";font-size: 12px;background-color: #CCCCCC;} </style> <script language="javascript"> /*****************************可以把下面这部分代码提到一个js文件中***************************/ /*********************************** powerTableEdit.js *********************************/ /****************************************************************************************  * created by yzh 2001.5.12  * 请大家引用时保留这段作者声明,此代码为开源代码;使用不受限制,欢迎大家采用本人所写JS动态拖动表格实现代码。  * JavaScript创建的可编辑表格  * 用法:  *    1,首先创建表格对象: var pt = new PowerTableEdit("table1");  *                          其中,"table1"为表格的id  *                           *    2,设置表格的编辑方式,调用pt对象的setCol方法,此方法有三个参数:  *     *                          setCol(colNum,colSty,sDa)  *                           *                          > colNum:为准备编辑的列编号,第一列编号为0  *                          > colSty:为准备编辑的方式,txt为文本编辑方式,sel为下拉编辑方式  *                          > sDa:如果选择的编辑方式为下拉编辑方式,则此参数有效,代表下拉框中的预置数据,是数组类型  *                   *    3, 在按钮中调用相应的方法(注意:上移行和下移行按钮的id必须为moveUp和moveDown):如:  *  *      <!--增加行-->  *      <input onclick=add_row(mainTab) type=button value=ins_row>  *      <!--删除行-->  *      <input onclick=del_row(mainTab) type=button value=Del_row>  *      <!--重置表格-->  *      <input onclick=res_tab() type=button value=Restore>  *       *      <!--上移行-->  *      <input id=moveUp onclick=Move_up(mainTab) type=button value=Up>  *      <!--下移行-->        *      <input id=moveDown onclick=Move_down(mainTab) type=button value=Down
jack.yang
2025/04/05
1650
利用python自动写docx报告
最近在做一些数据方面的东西。虽然处理 excel 很方便。有时候为了不写周报,可以用自动化来写。 比如可以从jira 里面捞数据。比如可以统计excel 里面数据,生成图表,生成doc, 自动发出来。
赵云龙龙
2020/08/10
2.7K0
前端复杂表格导出excel,一键导出 Antd Table 看这篇就够了(附源码)
前端导出 excel 的需求很多,但市面上好用的库并不多,讲明白复杂使用场景的文章更少。
solocoder
2022/03/31
12.5K1
前端复杂表格导出excel,一键导出 Antd Table 看这篇就够了(附源码)
C#进阶-用于Excel处理的程序集
在.NET开发中,处理Excel文件是一项常见的任务,而有一些优秀的Excel处理包可以帮助开发人员轻松地进行Excel文件的读写、操作和生成。本文介绍了NPOI、EPPlus和Spire.XLS这三个常用的.NET Excel处理包,分别详细介绍了它们的特点、示例代码以及使用方法。通过对这些程序集的比较和示例代码的演示,读者可以更好地理解如何在C#开发中利用这些工具进行Excel文件的读取、写入和操作。这些程序集提供了丰富的功能和灵活的API,能够满足不同场景下对Excel文件处理的需求,有助于提高开发效率和减少工作量。
Damon小智
2024/03/19
5140
C#进阶-用于Excel处理的程序集
掌握C#技能:PDF转图片轻松搞定
今天给大家分享一下如何通过C#实现pdf转图片的案例,有需要的朋友可以看一下,大家如果有问题可以互相交流学习!
小明互联网技术分享社区
2024/01/18
1.4K0
掌握C#技能:PDF转图片轻松搞定
最全总结 | 聊聊 Python 办公自动化之 Word(上)
默认情况下,使用文档对象的 add_paragraph(text,style) 方法来添加一个段落
AirPython
2020/11/11
1K0
最全总结 | 聊聊 Python 办公自动化之 Word(上)
100行Python代码控制excel表格,用代码办公不是梦
xlrd是python中一个第三方的用于读取excle表格的模块,很多企业在没有使用计算机管理前大多使用表格来管理数据,所以导入表格还是非常常用的!
用户6133654
2019/08/29
1.1K0
相关推荐
Java 在PDF中添加表格
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档