Pdfium.Net.Free 支持
-
.NETFramework 4.0
-
.NETFramework 4.5
-
.NETStandard 2.0
可以和PdfiumViewer.Free共同使用预览pdf,也可以直接引用Pdfium.Net.Free 操作pdf,解决部分.NetCore 调用的问题,Pdfium.Net.Free封装了现有Pdfium的函数,实现了部分操作pdf的功能,部分功能等待后续~~
项目地址:
Pdfium.Net:https://github.com/1000374/Pdfium.Net
PdfiumViewer:https://github.com/1000374/PdfiumViewer
打开PDF:
var pathPdf = "./Pdfium.NetTests/resources/about_blank.pdf"; using (var doc = PdfDocument.Load(new MemoryStream(File.ReadAllBytes(pathPdf)))) {
}
创建PDF 添加页面:
using (var doc = PdfDocument.CreateNew()) { doc.Pages.Add(612, 792); }
添加文字:
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"); }
添加水印:
using (var doc = PdfDocument.CreateNew()) { doc.Pages.Add(612, 792); var fontPath = @"c:\Windows\fonts\simhei.ttf"; var cSharpString = "我是水印"; doc.LoadFont(fontPath, true, cSharpString); doc.WaterMark(cSharpString, 20, Color.FromArgb(50, 255, 0, 0), totleHeight: 120); doc.Save("./Pdfium.NetTests/WaterMark.pdf"); }
添加图片:
using (var doc = PdfDocument.CreateNew()) { var imagePath = "./Pdfium.NetTests/resources/mona_lisa.jpg"; var page = doc.Pages.Add(612, 792); var stream = new MemoryStream(File.ReadAllBytes(imagePath)); page.AddImage(stream, 50, 100); doc.Save("./Pdfium.NetTests/AddImage.pdf"); }
pdf每一页转成图片:
var pathPdf = "./Pdfium.NetTests/resources/annotation_highlight_long_content.pdf"; using (var doc = PdfDocument.Load(new MemoryStream(File.ReadAllBytes(pathPdf)))) for (int i = 0; i < doc.PageCount; i++) { using (var image = doc.Pages[i].Render((int)doc.Pages[i].Width * 4 / 3, (int)doc.Pages[i].Height * 4 / 3, 96, 96, FpdfRotation.Rotate0, Wrapper.RenderFlags.Annotations | Wrapper.RenderFlags.CorrectFromDpi)) { } }
pdf页局部转成图片:
var pathPdf = "./Pdfium.NetTests/resources/annotation_highlight_long_content.pdf"; using (var doc = PdfDocument.Load(new MemoryStream(File.ReadAllBytes(pathPdf)))) for (int i = 0; i < doc.PageCount; i++) { using (var image = doc.Pages[i].Render( (int)doc.Pages[i].Width, (int)doc.Pages[i].Height, 16, // x of the top/left of clipping rectangle 283, // y of the top/left point of clipping rectangle 555, // width of clipping reactangle 316, // height of clipping reactangle 0,//DPIx 0,//DPIy FpdfRotation.Rotate0, // no rotation RenderFlags.None // no render flags )) { } }
获取PDF内文字:
var pathPdf = "./Pdfium.NetTests/resources/text_render_mode.pdf"; using (var doc = PdfDocument.Load(new MemoryStream(File.ReadAllBytes(pathPdf)))) { var text = doc.Pages[0].GetPdfText(); }
获取PDF指定区域的文字:
//page: 0,x: 235,y: 238,x1: 327,y1: 287 Text: fill var pathPdf = "./Pdfium.NetTests/resources/text_render_mode.pdf"; using (var doc = PdfDocument.Load(new MemoryStream(File.ReadAllBytes(pathPdf)))) { var text = doc.Pages[0].GetBoundedText(235, 238, 327, 287); }
拆分pdf:
var pathPdf = "./Pdfium.NetTests/resources/viewer_ref.pdf"; using (var doc = PdfDocument.Load(new MemoryStream(File.ReadAllBytes(pathPdf)))) { for (int i = 0; i < doc.PageCount; i++) { var doci = doc.GetPDFPage(i);//可多页拆分 } }
合并pdf:
var pathPdf = "./Pdfium.NetTests/resources/viewer_ref.pdf"; using (var doc = PdfDocument.Load(new MemoryStream(File.ReadAllBytes(pathPdf)))) using (var doc1 = PdfDocument.Load(new MemoryStream(File.ReadAllBytes(pathPdf)))) { doc.MergePDF(doc1); }
插入pdf:
var pathPdf = "./Pdfium.NetTests/resources/viewer_ref.pdf"; var pathPdf1 = "./Pdfium.NetTests/resources/zero_length_stream.pdf"; using (var doc = PdfDocument.Load(new MemoryStream(File.ReadAllBytes(pathPdf)))) using (var doc1 = PdfDocument.Load(new MemoryStream(File.ReadAllBytes(pathPdf1)))) { doc.ImportPage(doc1, 1); var w = doc1.Pages[0].Width; var w1 = doc.Pages[1].Width; }
多页pdf合并成1页:
var pathPdf = "./Pdfium.NetTests/resources/rectangles_multi_pages.pdf"; using (var doc = PdfDocument.Load(new MemoryStream(File.ReadAllBytes(pathPdf)))) { using (var doc1 = doc.ImportNPagesToOne(612 * 2, 792)) }
打印:
var printer = new PdfPrinter("Microsoft Print To PDF"); //printer.Print(fileName); printer.Print(fileName, documentName: "with name");
标签:--,doc,Pdfium,Free,pathPdf,using,var,pdf From: https://www.cnblogs.com/xiaohemiao/p/17986777