C# 使用c在windows应用程序中以pdf格式拍摄选定区域的屏幕截图

C# 使用c在windows应用程序中以pdf格式拍摄选定区域的屏幕截图,c#,.net,winforms,pdf,C#,.net,Winforms,Pdf,我正在.Net中开发一个windows应用程序,我想在其中从我的计算机中选择一个pdf,并将其显示在表单中。用户可以在应用程序中选择此pdf的某些部分,并将生成所选区域的图像 我不知道怎么做 我如何阅读和显示pdf并截图其内容 我曾尝试使用com组件Acrobat Reader读取pdf,但它不允许我使用鼠标捕获选定区域。最简单的方法是将pdf转换为位图或一系列位图,如果pdf是多页的,则显示它。当用户选择某个区域时,只需剪切位图并保存到文件中 您可以找到许多将pdf转换为位图的示例: 还有更多

我正在.Net中开发一个windows应用程序,我想在其中从我的计算机中选择一个pdf,并将其显示在表单中。用户可以在应用程序中选择此pdf的某些部分,并将生成所选区域的图像

我不知道怎么做

我如何阅读和显示pdf并截图其内容


我曾尝试使用com组件Acrobat Reader读取pdf,但它不允许我使用鼠标捕获选定区域。

最简单的方法是将pdf转换为位图或一系列位图,如果pdf是多页的,则显示它。当用户选择某个区域时,只需剪切位图并保存到文件中

您可以找到许多将pdf转换为位图的示例:

还有更多

编辑:

这篇文章似乎非常接近您的问题:


在绘制位图后,您可以在其上绘制,即,对于“选择范围”,根据您的意愿剪切并保存到文件。

如果pdf包含如此多的页面,则这将是不可行的解决方案,我认为您可以从pdf中获取页面数,然后在UI中提供分页功能-仅转换并显示当前页面,或者说提前显示3页这些位图不会保存在系统上,对吗?你能给我举个例子吗?这取决于你选择哪个库来执行转换。大多数人使用GhostScript可调用exe,它将位图生成为文件。对我来说,如果在使用后释放空间,存储一些临时文件没有什么错。下面是一些完整的工作示例:下面是更接近您的问题的示例:
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "Portable Document Format (*.pdf)|*.pdf";
if (dlg.ShowDialog() == DialogResult.OK)
{
    _pdfDoc = new PDFLibNet.PDFWrapper();
    _pdfDoc.LoadPDF(dlg.FileName);
    _pdfDoc.CurrentPage = 1;

   PictureBox pic =new PictureBox();
   pic.Width=800;
   pic.Height=1024;
   _pdfDoc.FitToWidth(pic.Handle);
   pic.Height = _pdfDoc.PageHeight;
   _pdfDoc.RenderPage(pic.Handle);

   Bitmap _backbuffer = new Bitmap(_pdfDoc.PageWidth, _pdfDoc.PageHeight);
   using (Graphics g = Graphics.FromImage(_backbuffer))
   {
       _pdfDoc.RenderHDC(g.GetHdc);
       g.ReleaseHdc();
   }
   pic.Image = _backbuffer;
}