canvas 从ondraw中获取_C# 在PDF中绘制多样风格的文本
通过对控件Spire.PDF的测试,我们可以创建PDF文件并向文档中绘制文本、图片、表格、图形等内容,其中,对于绘制文本这一部分,Spire.PDF提供了三种字体类型来绘制文本呢,即:
- Standard fonts
- TrueType fonts
- Chinese, Japanese and Korean (CJK) fonts
从以上类中我们可以发现,是可以支持中、日、韩、英等字体类的,这为我们在操作PDF文件上提供了更多可能。在接下来的文章中,将介绍如何运用Spire.PDF提供的字体类来绘制不同风格类型的文本。
使用工具:Spire.PDF for .NET
PS: 下载安装该类库后,注意在程序中添加引用Spire.PDF.dll(dll文件可在安装路径下的Bin文件夹中获取)
【示例1】绘制倾斜样式的文本
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;namespace DrawTextOfDifferentStyles_PDF
{class Program{static void Main(string[] args){PdfDocument doc = new PdfDocument(); //创建一个PDF文档PdfPageBase page = doc.Pages.Add(); //添加页 PdfGraphicsState state = page.Canvas.Save();//实例化字体,创建格式刷 PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 18f);PdfSolidBrush brush1 = new PdfSolidBrush(Color.DeepSkyBlue);PdfSolidBrush brush2 = new PdfSolidBrush(Color.CadetBlue);PdfSolidBrush brush3 = new PdfSolidBrush(Color.LightPink);page.Canvas.TranslateTransform(10, 100);//指定文本在画布上的坐标位置page.Canvas.ScaleTransform(1f, 0.6f);//指定文本的横向、纵向的拉伸度//绘制倾斜样式的文本类型page.Canvas.SkewTransform(-10, 0);page.Canvas.DrawString("THERE IS NO ROYAL ROAD TO LEARNING. ", font, brush1, 0, 0);page.Canvas.SkewTransform(10, 10);page.Canvas.DrawString("Books, like friends, should be few and well chosen. ", font, brush2, 10, 50);//绘制缩放类型的文本page.Canvas.ScaleTransform(1f, -1f);page.Canvas.DrawString("Books, like friends, should be few and well chosen.", font, brush3, 10, -2 * 50);//再次保存画布page.Canvas.Restore(state);//保存并打开文档doc.SaveToFile("DrawText.pdf");System.Diagnostics.Process.Start("DrawText.pdf");}}
}
测试效果:
【示例2】绘制中心旋转图形
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;namespace _3
{class Program{static void Main(string[] args){PdfDocument doc = new PdfDocument(); //创建一个PDF文档PdfPageBase page = doc.Pages.Add(); //添加页 PdfGraphicsState state = page.Canvas.Save();//实例化字体,创建格式刷 PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 10f);PdfSolidBrush brush = new PdfSolidBrush(Color.BlueViolet);//设定字符串布局格式,并指定文本在画布中的位置PdfStringFormat centerAlignment = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);float x = 400;float y = 600;//绘制文本并应用格式page.Canvas.TranslateTransform(x, y);//指定文本绘制数量for (int i = 0; i < 12; i++){//设置文本按顺时针方向旋转排列(文本偏移间隔30度)page.Canvas.RotateTransform(30);//绘制文本并应用格式 page.Canvas.DrawString("Every tide has its ebb.", font, brush, 10, 0, centerAlignment);}//再次保存画布page.Canvas.Restore(state);//保存并打开文档doc.SaveToFile("DrawText.pdf");System.Diagnostics.Process.Start("DrawText.pdf");}}
}
测试效果:
(这里做了几个不同样式的demo,可以对比看下效果)
(完)
canvas 从ondraw中获取_C# 在PDF中绘制多样风格的文本相关推荐
- jsp中获取不到servlet中的ArrayList
jsp中获取不到servlet中的ArrayList 错误原因: 因为servlet尽管将请求转发(重定向)到其他页面,但是仍会执行完请求转发后面的代码.jsp也是servlet所以也遵循这个原则! ...
- C# 获取图片,Pdf中的文字
识别图片中的文字 首先把下载好的tessdata放在自己项目的bin\Debug\tessdata文件夹中. 附一个tessdata的下载地址:https://github.com/tesseract ...
- java生成带书签的pdf,Java 添加、更新、获取、删除PDF中的书签
Spire.Cloud.SDK for Java WebAPI提供了pdfBookmarkApi接口可用于添加书签addBookmark().更新书签updateBookmark().获取书签信息ge ...
- java读取pdf多表格_在Java中使用tabula提取PDF中的表格数据
问题:如何将pdf文件中指定的表格数据提取出来? 尝试过的工具包有:pdfbox.tabula.最终选用tabula 两种工具的比较 pdfbox 其中,pdfbox能将pdf中的内容直接提取成Str ...
- VS2010中获取并调用CRM2011中的工作流
接触过CRM2011的同学们肯定考虑过这样的一个问题,就是我们CRM系统中的那些实体能否通过外部开发工具,比如VS2010来获取呢?更深一步的说,我们能否获取Workflow实体的所有数据,然后在VS ...
- java 拦截器响应中取所有参数,spring boot拦截器中获取request post请求中的参数
最近有一个需要从拦截器中获取post请求的参数的需求,这里记录一下处理过程中出现的问题. 首先想到的就是request.getParameter(String )方法,但是这个方法只能在get请求中取 ...
- android 6.0 log,android 6.0 logcat机制(二)logcat从logd中获取log保存到文件中
一.设置保存log文件的路径 在手机刚开机的时候,会有类似如下命令执行 /system/bin/logcat -r 5120 -v threadtime -v usec -v printable -n ...
- android 6.0 logcat机制(二)logcat从logd中获取log保存到文件中
这篇博客分析的是logcat是如何获取logd中的log,然后写入文件. 一.设置保存log文件的路径 在手机刚开机的时候,会有类似如下命令执行 /system/bin/logcat -r 5120 ...
- 在java中获取当前时间_JAVA中获取当前系统时间
一. 获取当前系统时间和日期并格式化输出: import java.util.Date; import java.text.SimpleDateFormat; public class NowStri ...
- 拦截器获取请求参数post_spring boot拦截器中获取request post请求中的参数
最近有一个需要从拦截器中获取post请求的参数的需求,这里记录一下处理过程中出现的问题. 首先想到的就是request.getParameter(String )方法,但是这个方法只能在get请求中取 ...
最新文章
- 设置按钮不可见_华为手机居然有【3种录屏方法】,很多人都不知道,真的太实用了...
- Go语言写的解析器(支持json,linq,sql,net,http等)
- 浅析jQuery的链式调用 之 each函数
- python上下文管理器
- 分布式文件系统—HDFS—核心设计
- MariaDB杂记(2)
- L型代码结构案例:Link访问权限(上)
- Qt学习之路(11): MainWindow
- 计算机网络之物理层:6、传输介质
- mysql主从备份功能配置与測试
- 锐捷校园网使用python登录
- 嵌入式Linux培训开发
- 图像处理之matlab中fspecial函数用法详解
- 在Linux下使用金山词霸2003(转)
- 光伏电站智慧运维辅助系统解决方案 助力光伏运维监控智能化
- 零售商店订单数据分析
- 走方格跳格子(dp,递归,排列组合三种方法)
- 手把手教你写保研简历|计算机保研|保研夏令营文书写作|简历模板
- SSM+医保业财一体化管理系统 毕业设计-附源码151023
- python爬取豆瓣网即将上映的电影,数据信息存储到json文件