PdfiumViewer组件扩展(Pdfium.Net)

封装了一个Pdfium.Net 感兴趣的可以移步查看

Pdfium.Net:https://github.com/1000374/Pdfium.Net.Free

PdfiumViewer:https://github.com/1000374/PdfiumViewer

前言:

PdfiumViewer github上是这样介绍的:

PdfiumViewer 是一个基于 PDFium 项目的 PDF 查看器。

PdfiumViewer 提供了许多组件来处理 PDF 文件:

  • PdfDocument 是用于呈现 PDF 文档的基类;

  • PdfRenderer 是一个可以呈现 PdfDocument 的 WinForms 控件;

  • PdfiumViewer 是一个 WinForms 控件,它托管一个 PdfRenderer 控件并添加一个工具栏来保存 PDF 文件或打印它。

PdfiumViewer:https://github.com/pvginkel/PdfiumViewer

PDFium:https://pdfium.googlesource.com/pdfium/

由于PdfiumViewer开发者初衷是为了渲染pdf,所以一些基本的功能可能需要进行扩展来满足需求,我根据项目需要,查询了一些其他开发者的代码及PDFium源码对PdfiumViewer进行了一些扩展。

PdfiumViewerDemo

提取指定Rectangle的pdf的内容


var document = PdfDocument.Load(new MemoryStream(File.ReadAllBytes(fileName)));
for (int i = 0; i < document.PageCount; i++)
{
   //获取当前页所有文本
    var txt = document.GetPdfText(i);
   //获取当前页指定坐标的文本
     txt= document.GetBoundedText(i, 690, 548, 808, 569);   
}

坐标可通过demo工具提前获取,方法:选中Matching=》框选所需区域即可,示例如下图

预览时复制内容

渲染pdf时有时需要复制选中的文字


pdfViewer1.Document?.Dispose();
pdfViewer1.Document = PdfDocument.Load(this, new MemoryStream(File.ReadAllBytes(fileName)));
pdfViewer1.Renderer.CursorMode = PdfViewerCursorMode.TextSelection;

根据指定Rectangle截取pdf图片

坐标可通过demo工具提前获取,方法:选中Cut=》框选所需区域即可,示例如下图


 var document= PdfDocument.Load(this, new MemoryStream(File.ReadAllBytes(fileName))); 
 using (var image = document.Render(
                    i,
                    (int)document.PageSizes[i].Width,
                    (int)document.PageSizes[i].Height,
                   rectangle.X, // x of the top/left of clipping rectangle
                   rectangle.Y, // y of the top/left point of clipping rectangle
                   rectangle.Width, // width of clipping reactangle
                   rectangle.Height, // height of clipping reactangle
                   PdfRotation.Rotate0, // no rotation
                   PdfRenderFlags.None // no render flags
                                       ))
                {
                    image.Save(Path.Combine(path, "Page " + i + "Cut.png"));
                }

合并pdf

先读取pdf到内存然后合并doc2、doc3、doc4到doc1后


 var doc1 = PdfDocument.Load(this, new MemoryStream(File.ReadAllBytes(@"C:\Users\11\Desktop\1.pdf")));
 var doc2 = PdfDocument.Load(this, new MemoryStream(File.ReadAllBytes(@"C:\Users\11\Desktop\2.pdf")));
 var doc3 = PdfDocument.Load(this, new MemoryStream(File.ReadAllBytes(@"C:\Users\11\Desktop\2.pdf")));
 var doc4 = PdfDocument.Load(this, new MemoryStream(File.ReadAllBytes(@"C:\Users\11\Desktop\3.pdf")));
 var bytes = doc1.PDFMerge(doc2, doc3, doc4);
 File.WriteAllBytes(@"C:\Users\11\Desktop\11.pdf", bytes);

拆分pdf

可才分某一页或者拆分某几页


 //拆分文件
var bytes = pdfViewer1.Document.GetPage(1);
var bytes1 = pdfViewer1.Document.GetPage("1-2");
File.WriteAllBytes(@"C:\Users\11\Desktop\11.pdf", bytes);

后台打印pdf

打印pdf组件是自带的 但是有时候是不需要选择打印机打印的


var printer = new PdfPrinter("Microsoft Print To PDF");
//printer.Print(fileName);
 printer.Print(fileName, documentName: "with name");

使用此工具做了个提取不可复制PDF的工具,详情可移步查看

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 31
    评论
PDFiumViewer 是一个基于 PDFium 引擎的 Python 库,用于渲染 PDF 文件。下面是 PDFiumViewer 的使用教程: 1. 安装 PDFiumViewer 可以使用 pip 安装 PDFiumViewer,命令如下: ``` pip install pdfiumviewer ``` 2. 渲染 PDF 文件 使用 PDFiumViewer 渲染 PDF 文件需要三个步骤: - 打开 PDF 文件 - 渲染 PDF 页面 - 保存渲染结果 下面是一个简单的例子: ```python from pdfiumviewer import PDFViewer, PDFDocument filename = 'example.pdf' # 打开 PDF 文件 doc = PDFDocument.from_file(filename) # 初始化 PDFViewer viewer = PDFViewer(doc) # 渲染第一页 viewer.goto_page(0) # 获取渲染结果 image = viewer.render() # 保存渲染结果 image.save('page0.png') ``` 在上面的例子中,我们打开了名为 example.pdfPDF 文件,并使用 PDFViewer 渲染了第一页,最后将渲染结果保存为 page0.png 图像文件。 3. 控制渲染参数 除了上面提到的基本用法,PDFiumViewer 还提供了一些参数用于控制渲染效果。下面是一些常用的参数: - zoom:缩放比例,默认为 1。 - rotation:旋转角度,默认为 0。 - grayscale:是否使用灰度模式,默认为 False。 - antialiasing:是否启用抗锯齿,默认为 True。 下面是一个例子,演示如何使用这些参数: ```python from pdfiumviewer import PDFViewer, PDFDocument filename = 'example.pdf' doc = PDFDocument.from_file(filename) # 设置渲染参数 params = { 'zoom': 2, 'rotation': 90, 'grayscale': True, 'antialiasing': False, } viewer = PDFViewer(doc) viewer.set_rendering_parameters(**params) viewer.goto_page(0) image = viewer.render() image.save('page0.png') ``` 在上面的例子中,我们使用 set_rendering_parameters() 方法设置了渲染参数,然后使用这些参数渲染了第一页。 以上是 PDFiumViewer 的使用教程,希望对你有帮助。
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值