PdfiumViewer组件扩展(Pdfium.Net.Free)--添加文本
1.PdfiumViewer组件扩展(Pdfium.Net.Free)--概述2.PdfiumViewer组件扩展(Pdfium.Net.Free)--快速入门3.PdfiumViewer组件扩展(Pdfium.Net.Free)--PDF预览器框选4.PdfiumViewer组件扩展(Pdfium.Net.Free)--打开大文件处理5.PdfiumViewer组件扩展(Pdfium.Net.Free)--加载字体6.PdfiumViewer组件扩展(Pdfium.Net.Free)--创建字符子集
7.PdfiumViewer组件扩展(Pdfium.Net.Free)--添加文本
8.PdfiumViewer组件扩展(Pdfium.Net.Free)--添加图片9.PdfiumViewer组件扩展(Pdfium.Net.Free)--添加水印10.PdfiumViewer组件扩展(Pdfium.Net.Free)--删除或编辑pdf内容11.PdfiumViewer组件扩展(Pdfium.Net.Free)--PDF操作12.PdfiumViewer组件扩展(Pdfium.Net.Free)--签名13.PdfiumViewer组件扩展(Pdfium.Net.Free)--注解14.PdfiumViewer组件扩展(Pdfium.Net.Free)--可视化编辑pdf15.什么是转换矩阵以及如何使用它16.Pdfium.Net.Free 添加 bblanchon.PDFium nuget方式项目地址:
Pdfium.Net:https://github.com/1000374/Pdfium.Net.Free
PdfiumViewer:https://github.com/1000374/PdfiumViewer
Pdfium.Net.Free 支持
-
.NETFramework 4.0
-
.NETFramework 4.5
-
.NETStandard 2.0
- .Net8.0
可以和PdfiumViewer.Free共同使用预览、编辑pdf,也可以直接引用Pdfium.Net.Free 操作pdf,Pdfium.Net.Free封装了现有Pdfium的函数,实现了部分操作pdf的功能,部分功能等待后续~~
Pdfium.Net 添加文本有3个重载 可对添加的文字设置x、y坐标、字体大小、颜色、x、y缩放比例、旋转、裁切、混合模式、渲染模式(根据此设置镂空样式
FpdfTextRenderMode.STROKE_CLIP)、镂空填充色、镂空颜色。当strokeColor为null时 取fillColor
1.当前重载使用pdf标准字库添加文字(中文会乱码)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | /// <summary> /// Add text object using one of the standard PDF fonts. Chinese maybe garbled characters /// </summary> /// <param name="text"></param> /// <param name="posX"></param> /// <param name="posY"></param> /// <param name="font_size">the font size for the new text object.</param> /// <param name="fillColor"></param> /// <param name="fontName"><see cref="Native.Enums.StandardPDFFonts"/></param> /// <param name="scalex"></param> /// <param name="scaley"></param> /// <param name="rotate"></param> /// <param name="shear"></param> /// <param name="blend">Blend mode can be one of following: Color, ColorBurn, ColorDodge, Darken,Difference, Exclusion, HardLight, Hue, Lighten, Luminosity, Multiply, Normal,Overlay, Saturation, Screen, SoftLight.<see cref="BlendMode"/></param> /// <param name="render_mode">render_mode<see cref="FpdfTextRenderMode"/></param> /// <param name="strokeColor">stroke Color render_mode </param> /// <param name="strokeWidth">stroke Width</param> /// <returns></returns> public bool AddString( string text, int posX, int posY, float font_size, Color fillColor, string fontName, float scalex = 1f, float scaley = 1, float rotate = 0, float shear = 0, string blend = BlendMode.Darken, FpdfTextRenderMode render_mode = FpdfTextRenderMode.FILL, Color? strokeColor = null , float strokeWidth = 0.2f) |
调用示例:
1 2 3 4 5 6 7 | using ( var doc = PdfDocument.CreateNew()) { var cSharpString = "!you ok 这是第一句。 这是第二行。a you ok" ; var page = doc.Pages.Add(612, 792); page.AddString(cSharpString, 10, 50, 12, Color.Black, StandardPDFFonts.TimesNewRoman); doc.Save( "./Pdfium.NetTests/AddString1.pdf" ); } |
2.当前重载使用获取的PdfFont 对象添加文字,详情请参照
Pdfium.Net.Free 一个免费的Pdfium的 .net包装器--加载字体 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | /// <summary> /// add Text with add <see cref="FpdfFontT"/> /// </summary> /// <param name="pageNumber"></param> /// <param name="text"></param> /// <param name="posX"></param> /// <param name="posY"></param> /// <param name="font_size"></param> /// <param name="fillColor"></param> /// <param name="font"></param> /// <param name="scalex"></param> /// <param name="scaley"></param> /// <param name="rotate"></param> /// <param name="shear"></param> /// <param name="blend">Blend mode can be one of following: Color, ColorBurn, ColorDodge, Darken,Difference, Exclusion, HardLight, Hue, Lighten, Luminosity, Multiply, Normal,Overlay, Saturation, Screen, SoftLight.<see cref="BlendMode"/></param> /// <param name="render_mode">render_mode<see cref="FpdfTextRenderMode"/></param> /// <param name="strokeColor">stroke Color render_mode </param> /// <param name="strokeWidth">stroke Width</param> /// <returns></returns> public bool AddString( string text, float posX, float posY, float font_size, Color fillColor, PdfFont font, float scalex = 1f, float scaley = 1, float rotate = 0, float shear = 0, string blend = BlendMode.Darken, FpdfTextRenderMode render_mode = FpdfTextRenderMode.FILL, Color? strokeColor = null , float strokeWidth = 0.2f) |
调用示例(从pdf中获取字体后写入):
1 2 3 4 5 6 7 8 9 10 11 12 13 | var pathPdf = "./Pdfium.NetTests/resources/fontText.pdf" ; using ( var doc = PdfDocument.Load( new MemoryStream(File.ReadAllBytes(pathPdf)))) { var font = doc.Pages[0].GetTextObjFont( "你" , out float size); if (!font.IsNull) { var emb = font.IsEmbedded; var cSharpString = "你好啊,abc" ; var page = doc.Pages[0]; page.AddString(cSharpString, 10, 50, size, Color.Black, font); doc.Save( "./Pdfium.NetTests/TextObjFont.pdf" ); } } |
3.当前重载需提前调用
1 | public void LoadFont( string fontPath, bool isSubSet = false , string words = null , FpdfFontTypes fontTypes = FpdfFontTypes.TrueType) |
方法,且只能调用一次,否则抛出找不到字体对象,或者pdf会多次加载字体导致pdf很大,也就是每次调用都会往doc中加载一次字库。
可创建子集后加载字库,以减少pdf大小,具体参照
Pdfium.Net.Free 一个免费的Pdfium的 .net包装器--创建字符子集 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | /// <summary> /// add Text with add <see cref="FpdfFontT"/> /// </summary> /// <param name="text"></param> /// <param name="posX"></param> /// <param name="posY"></param> /// <param name="font_size">the font size for the new text object.</param> /// <param name="fillColor">the font color.</param> /// <param name="isSubSet">ttf path use File.ReadAllBytes(fontPath);</param> /// <param name="scalex">scale x</param> /// <param name="scaley">scale y</param> /// <param name="rotate">rotate</param> /// <param name="shear">shear</param> /// <param name="blend">Blend mode can be one of following: Color, ColorBurn, ColorDodge, Darken,Difference, Exclusion, HardLight, Hue, Lighten, Luminosity, Multiply, Normal,Overlay, Saturation, Screen, SoftLight.<see cref="BlendMode"/></param> /// <param name="render_mode">render_mode<see cref="FpdfTextRenderMode"/></param> /// <param name="strokeColor">stroke Color render_mode </param> /// <param name="strokeWidth">stroke Width</param> /// <returns></returns> public bool AddString( string text, float posX, float posY, float font_size, Color fillColor, float scalex = 1f, float scaley = 1, float rotate = 0, float shear = 0, string blend = BlendMode.Darken, FpdfTextRenderMode render_mode = FpdfTextRenderMode.FILL, Color? strokeColor = null , float strokeWidth = 0.2f) |
调用字符集全部加载示例:
1 2 3 4 5 6 7 8 9 | using ( var doc = PdfDocument.CreateNew()) { var fontPath = @"c:\Windows\fonts\simhei.ttf" ; doc.LoadFont(fontPath); var cSharpString = "!you ok 这是第一句。 这是第二行。a you ok" ; var page = doc.Pages.Add(612, 792); page.AddString(cSharpString, 10, 50, 12, Color.Black); doc.Save( "./Pdfium.NetTests/AddString.pdf" ); } |
创建字符子集加载示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 | using ( var doc = PdfDocument.CreateNew()) { var fontPath = @"c:\Windows\fonts\simhei.ttf" ; var cSharpString = "!you ok 这是第一句。" ; var cSharpString2 = " 这是第二行。a you ok 你好 abcdefghijklmnopqrstuvwxyz1234567890-*/+~`@#$%^&*(){}[];:'|?,,。.!!" ; doc.LoadFont(fontPath, true , cSharpString + cSharpString2); var page = doc.Pages.Add(612, 792); page.AddString(cSharpString, 10, 50, 12, Color.Black); page.AddString(cSharpString2, 10, 80, 12, Color.Black); doc.Save( "./Pdfium.NetTests/AddString3.pdf" ); } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!