.NET使用DocNET庫實現(xiàn)快速高效的操作PDF文檔
前言
PDF 文檔,作為日常工作中不可或缺的文檔格式,廣泛應(yīng)用于各類場景。今天我們來講講在 .NET 中使用 DocNET 庫快速高效的操作 PDF 文檔。
項目介紹
DocNET 是一個基于 .NET 開源(MIT license)、跨平臺(支持Windows、Linux和macOS平臺)的旨在提供快速 PDF 編輯和數(shù)據(jù)提取的操作庫。它是基于 Chromium 所使用的 PDFium C++ 庫開發(fā)的 .NET Standard 2.0 封裝庫。
項目特性
PDF 提取功能:支持 PDF 版本、頁數(shù)、頁面寬度、頁面高度、頁面文本、字符字體大小等相關(guān)PDF信息提取。
PDF 編輯功能: 支持分割 PDF 文檔、合并 PDF 文檔、解鎖 PDF 文檔。
支持渲染頁面為圖像、JPEG 圖片轉(zhuǎn)換為 PDF 文件等等。
項目源代碼

創(chuàng)建DocNETExercises控制臺應(yīng)用
創(chuàng)建一個名為 DocNETExercises 的.NET 9 控制臺應(yīng)用:


Docnet.Core NuGet包安裝
在 NuGet 包管理器中搜索 Docnet.Core 安裝:

獲取 PDF 文件頁碼和版本
/// <summary>
/// 獲取 PDF 文件頁碼和版本
/// </summary>
public static void GetPDFPageCountAndVersion()
{
using var docReader = _docNetInstance.GetDocReader(FilePath, new PageDimensions(1080, 1920));
var getPageCount = docReader.GetPageCount();
var getPdfVersion = docReader.GetPdfVersion();
Console.WriteLine($"PageCount:{getPageCount},PdfVersion:{getPdfVersion}");
}
獲取 PDF 文件的文本內(nèi)容
/// <summary>
/// 獲取 PDF 文件的文本內(nèi)容
/// </summary>
public static void GetPDFText()
{
using var docReader = _docNetInstance.GetDocReader(FilePath, new PageDimensions(1080, 1920));
using var pageReader = docReader.GetPageReader(0); //注意pageIndex從0開始
// 獲取指定頁面的文本(自動處理編碼)
string pageText = pageReader.GetText();
Console.WriteLine(pageText);
}
將 JPEG 圖片轉(zhuǎn)換為 PDF 文件???????
/// <summary>
/// 將 JPEG 圖片轉(zhuǎn)換為 PDF 文件
/// </summary>
public static void JPEGImageConvertToPDF()
{
var file = new JpegImage
{
Bytes = File.ReadAllBytes("Assets/image1.jpeg"),
Width = 580,
Height = 387
};
var bytes = _docNetInstance.JpegToPdf(new[] { file });
File.WriteAllBytes("Assets/output_file.pdf", bytes);
}
將 PDF 文件轉(zhuǎn)換為圖片
/// <summary>
/// 將 PDF 文件轉(zhuǎn)換為圖片
/// </summary>
public static void PDFConvertToImage()
{
using var docReader = _docNetInstance.GetDocReader(FilePath, new PageDimensions(1080, 1920));
//指定第一頁
using var pageReader = docReader.GetPageReader(0);
var rawBytes = pageReader.GetImage();
var width = pageReader.GetPageWidth();
var height = pageReader.GetPageHeight();
var characters = pageReader.GetCharacters();
using var bmp = new Bitmap(width, height, PixelFormat.Format32bppArgb);
AddBytes(bmp, rawBytes);
DrawRectangles(bmp, characters);
using var stream = new MemoryStream();
bmp.Save(stream, ImageFormat.Png);
File.WriteAllBytes("Assets/output_image.png", stream.ToArray());
}
private static void AddBytes(Bitmap bmp, byte[] rawBytes)
{
var rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
var bmpData = bmp.LockBits(rect, ImageLockMode.WriteOnly, bmp.PixelFormat);
var pNative = bmpData.Scan0;
Marshal.Copy(rawBytes, 0, pNative, rawBytes.Length);
bmp.UnlockBits(bmpData);
}
private static void DrawRectangles(Bitmap bmp, IEnumerable<Character> characters)
{
var pen = new Pen(Color.Red);
using var graphics = Graphics.FromImage(bmp);
foreach (var c in characters)
{
var rect = new Rectangle(c.Box.Left, c.Box.Top, c.Box.Right - c.Box.Left, c.Box.Bottom - c.Box.Top);
graphics.DrawRectangle(pen, rect);
}
}
項目源碼地址
更多項目實用功能和特性歡迎前往項目開源地址查看。
- GitHub開源地址:https://github.com/GowenGit/docnet
- 本文示例源碼地址:https://github.com/YSGStudyHards/DotNetExercises/tree/master/DocNETExercises
到此這篇關(guān)于.NET使用DocNET庫實現(xiàn)快速高效的操作PDF文檔的文章就介紹到這了,更多相關(guān).NET操作PDF內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ASP.NET怎么操作DataTable實例應(yīng)用
有機會在博客園的博問頻道上看到一個問題,《ASP.NET怎么操作DataTable》;需要的朋友可以參考下2012-11-11
ASP.NET?Core構(gòu)建OData查詢Restful?API
這篇文章主要為大家介紹了ASP.NET?Core建構(gòu)OData實體模型實現(xiàn)Restful?API查詢,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04
asp.net 使用Response.Filter 過濾非法詞匯
一般信息發(fā)布網(wǎng)站,論壇等均具有實現(xiàn)非法詞匯過濾功能,即當用戶錄入非法詞匯時,進行替換,使其無法顯示到頁面上,針對此種功能,通常采用的時,在讀取時,在讀到非法詞匯后,進行替換。2010-03-03
C#圖片截取壓縮(百分比壓縮/大小壓縮)實現(xiàn)代碼
為了娛樂寫了個截取圖片和壓縮圖片你的小工具:按照百分比壓縮/制定大小壓縮等等,感興趣的朋友可以了解下啊,希望本文對你學些c#圖片知識有所幫助2013-01-01

