通过对控件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中绘制多样风格的文本相关推荐

  1. jsp中获取不到servlet中的ArrayList

    jsp中获取不到servlet中的ArrayList 错误原因: 因为servlet尽管将请求转发(重定向)到其他页面,但是仍会执行完请求转发后面的代码.jsp也是servlet所以也遵循这个原则! ...

  2. C# 获取图片,Pdf中的文字

    识别图片中的文字 首先把下载好的tessdata放在自己项目的bin\Debug\tessdata文件夹中. 附一个tessdata的下载地址:https://github.com/tesseract ...

  3. java生成带书签的pdf,Java 添加、更新、获取、删除PDF中的书签

    Spire.Cloud.SDK for Java WebAPI提供了pdfBookmarkApi接口可用于添加书签addBookmark().更新书签updateBookmark().获取书签信息ge ...

  4. java读取pdf多表格_在Java中使用tabula提取PDF中的表格数据

    问题:如何将pdf文件中指定的表格数据提取出来? 尝试过的工具包有:pdfbox.tabula.最终选用tabula 两种工具的比较 pdfbox 其中,pdfbox能将pdf中的内容直接提取成Str ...

  5. VS2010中获取并调用CRM2011中的工作流

    接触过CRM2011的同学们肯定考虑过这样的一个问题,就是我们CRM系统中的那些实体能否通过外部开发工具,比如VS2010来获取呢?更深一步的说,我们能否获取Workflow实体的所有数据,然后在VS ...

  6. java 拦截器响应中取所有参数,spring boot拦截器中获取request post请求中的参数

    最近有一个需要从拦截器中获取post请求的参数的需求,这里记录一下处理过程中出现的问题. 首先想到的就是request.getParameter(String )方法,但是这个方法只能在get请求中取 ...

  7. android 6.0 log,android 6.0 logcat机制(二)logcat从logd中获取log保存到文件中

    一.设置保存log文件的路径 在手机刚开机的时候,会有类似如下命令执行 /system/bin/logcat -r 5120 -v threadtime -v usec -v printable -n ...

  8. android 6.0 logcat机制(二)logcat从logd中获取log保存到文件中

    这篇博客分析的是logcat是如何获取logd中的log,然后写入文件. 一.设置保存log文件的路径 在手机刚开机的时候,会有类似如下命令执行 /system/bin/logcat -r 5120 ...

  9. 在java中获取当前时间_JAVA中获取当前系统时间

    一. 获取当前系统时间和日期并格式化输出: import java.util.Date; import java.text.SimpleDateFormat; public class NowStri ...

  10. 拦截器获取请求参数post_spring boot拦截器中获取request post请求中的参数

    最近有一个需要从拦截器中获取post请求的参数的需求,这里记录一下处理过程中出现的问题. 首先想到的就是request.getParameter(String )方法,但是这个方法只能在get请求中取 ...

最新文章

  1. 设置按钮不可见_华为手机居然有【3种录屏方法】,很多人都不知道,真的太实用了...
  2. Go语言写的解析器(支持json,linq,sql,net,http等)
  3. 浅析jQuery的链式调用 之 each函数
  4. python上下文管理器
  5. 分布式文件系统—HDFS—核心设计
  6. MariaDB杂记(2)
  7. L型代码结构案例:Link访问权限(上)
  8. Qt学习之路(11): MainWindow
  9. 计算机网络之物理层:6、传输介质
  10. mysql主从备份功能配置与測试
  11. 锐捷校园网使用python登录
  12. 嵌入式Linux培训开发
  13. 图像处理之matlab中fspecial函数用法详解
  14. 在Linux下使用金山词霸2003(转)
  15. 光伏电站智慧运维辅助系统解决方案 助力光伏运维监控智能化
  16. 零售商店订单数据分析
  17. 走方格跳格子(dp,递归,排列组合三种方法)
  18. 手把手教你写保研简历|计算机保研|保研夏令营文书写作|简历模板
  19. SSM+医保业财一体化管理系统 毕业设计-附源码151023
  20. python爬取豆瓣网即将上映的电影,数据信息存储到json文件

热门文章

  1. Windows安装zookeeper和kafka
  2. android 组件重用,Android提高显示布局文件的性能,使用include标签重用layouts
  3. macbook 安装任意来源
  4. 【BZOJ3894】文理分科(最小割)
  5. 用inno 打包程序 学习之路(转载)
  6. HDOJ1003 MaxSum【逆推】
  7. ActiveMQ(二)——常用api、持久化、签收模式、以及常见问题
  8. Spring中的Bean可以绕过生命周期管理吗?
  9. 单链表反转--Java实现
  10. springboot整合mybatis源码分析