转帖|使用教程|编辑:鲍佳佳|2021-05-21 10:07:17.997|阅读 133 次
概述:我们都觉得很难将PDF文档页面导出为各种用例的图像。这就是为什么我们决定在WPF PDF Viewer中它。在此博客中,我们将引导您完成使用此WPF PDF Viewer将PDF页面导出为高质量图像的步骤。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
Essential Studio for WPF界面控件包含了利于分析且高性能的Windows应用程序开发中所需的所有控件,如 WPF PDF Viewer、grids、charts、gauges、menus、calendars、editors等等。同时,我们的文件格式库还允许您导出资料到Excel、World和PDF文件中,以及对这些格式的文件进行处理。
我们都觉得很难将PDF文档页面导出为各种用例的图像。这就是为什么我们决定在WPF PDF Viewer中它。在此博客中,我们将引导您完成使用此组件将PDF页面导出为高质量图像的步骤。
PDF Viewer允许您导出为以下格式:
如何将PDF文件页面导出为图像
您可以使用ExportAsImage 方法将PDF文件的页面导出为图像 。我们将看到如何将单个页面导出到图像中,以及如何将特定范围的页面导出到普通和缩略图尺寸的图像中。
将PDF文件的一页导出为图像
通过将页面索引作为ExportAsImage 方法的参数传递,可以将PDF文件的单个页面导出到图像 。以下代码示例演示如何在不使用PDF Viewer UI的情况下以编程方式将单个页面导出为JPEG图像。
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">//初始化PdfViewerControl</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> PdfViewerControl pdfViewer =新的PdfViewerControl();</font></font><font></font> <font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> //加载输入的PDF文件。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> PdfLoadedDocument loadingDocument = new PdfLoadedDocument(“ Sample.pdf”);</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> pdfViewer.Load(loadedDocument);</font></font><font></font> <font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> //将特定的PDF页面作为图像导出到页面索引为0处。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> BitmapSource图片= pdfViewer.ExportAsImage(0);</font></font><font></font> <font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> //设置输出路径。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> 字符串输出= @“ .. \ .. \ Output \ Image”;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> 如果(图片!= null)</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> {</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> //初始化新的Jpeg位图编码器。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> BitmapEncoder编码器=新的JpegBitmapEncoder();</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> //使用位图源创建位图框架,并将其添加到编码器中。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> encoder.Frames.Add(BitmapFrame.Create(image));</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> //以所需的图像格式为输出创建文件流。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> FileStream流=新的FileStream(输出+“ .Jpeg”,FileMode.Create);</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> //保存流,以便在输出位置生成图像。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> encoder.Save(stream);</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> }</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> //处理文档。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> loadedDocument.Dispose();</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> loadingDocument = null;</font></font><font></font>
将PDF文件中特定范围的页面导出为图像
通过将起始页和结束页索引作为ExportAsImage 方法的参数传递,可以将特定范围的PDF页面导出到图像 。以下代码示例演示了如何在不使用PDF Viewer UI的情况下以编程方式将一系列PDF页面导出为JPEG图像。
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">//初始化PdfViewerControl。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> PdfViewerControl pdfViewer =新的PdfViewerControl();</font></font><font></font> <font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> //加载输入的PDF文件。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> PdfLoadedDocument loadingDocument = new PdfLoadedDocument(“ Sample.pdf”);</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> pdfViewer.Load(loadedDocument);</font></font><font></font> <font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> //将所有页面导出为特定页面范围内的图像。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> BitmapSource []图片= pdfViewer.ExportAsImage(0,loadedDocument.Pages.Count-1);</font></font><font></font> <font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> //设置输出路径。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> 字符串输出= @“ .. \ .. \ Output \ Image”;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> 如果(图片!= null)</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> {</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> 对于(int i = 0; i <image.Length; i ++)</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> {</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> //初始化新的Jpeg位图编码器。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> BitmapEncoder编码器=新的JpegBitmapEncoder();</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> //使用位图源创建位图框架,并将其添加到编码器中。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> encoder.Frames.Add(BitmapFrame.Create(image [i]));</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> //以所需的图像格式为输出创建文件流。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> FileStream流=新的FileStream(输出+ i.ToString()+“ .Jpeg”,FileMode.Create);</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> //保存流,以便在输出位置生成图像。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> encoder.Save(stream);</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> }</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> }</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> //处理文档。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> loadedDocument.Dispose();</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> loadingDocument = null;</font></font><font></font>
将PDF文件中的页面导出为缩略图
通过将开始页面索引,结束页面索引和大小(宽度和高度)作为ExportAsImage 方法的参数传递,可以将PDF页面导出为具有自定义尺寸的缩略图 。以下代码段演示了如何在不使用PDF Viewer UI的情况下以编程方式将PDF页面导出为JPEG格式的缩略图。
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">//初始化PdfViewerControl。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> PdfViewerControl pdfViewer =新的PdfViewerControl();</font></font><font></font> <font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> //加载输入的PDF文件。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> PdfLoadedDocument loadingDocument = new PdfLoadedDocument(“ Sample.pdf”);</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> pdfViewer.Load(loadedDocument);</font></font><font></font> <font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> //将所有页面导出为大小为(150,225)的缩略图。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> BitmapSource []图片= pdfViewer.ExportAsImage(0,loadedDocument.Pages.Count – 1,新的SizeF(150,225),false);</font></font><font></font> <font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> //设置输出路径。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> 字符串输出= @“ .. \ .. \ Output \ Image”;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> 如果(图片!= null)</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> {</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> 对于(int i = 0; i <image.Length; i ++)</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> {</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> //初始化新的Jpeg位图编码器。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> BitmapEncoder编码器=新的JpegBitmapEncoder();</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> //使用位图源创建位图框架,并将其添加到编码器中。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> encoder.Frames.Add(BitmapFrame.Create(image [i]));</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> //以所需的图像格式为输出创建文件流。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> FileStream流=新的FileStream(输出+ i.ToString()+“ .Jpeg”,FileMode.Create);</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> //保存流,以便在输出位置生成图像。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> encoder.Save(stream);</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> }</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> }</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> //处理文档。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> loadedDocument.Dispose();</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> loadingDocument = null;</font></font><font></font>
您可以从此GitHub位置找到示例项目,解释导出图像的功能。在此示例中,您将发现PDF文件(“ Barcode.pdf”)中的页面被导出为具有默认尺寸的图像和具有较小尺寸的缩略图。执行此示例应用程序会将普通和缩略图尺寸的图像导出到应用程序目录中的Output文件夹。
结论
希望您对如何将PDF文档的页面导出为图像有一个清晰的了解。通过将页面转换为JPG格式来提供所有示例。您也可以将它们导出为其他格式,例如PNG,BMP和TIFF。自己尝试一下,并在下面的评论部分中分享您的反馈。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
文章转载自: