使用这两个组件,.NET 网页截图就这么简单

前段时间有个需求,需要实现打开某个页面,在修改页面前截取图片保存留底。在github找了两个开源软件方案,一个是PuppeteerSharp另外一个是Selenium.WebDriver。两者都是可以实现无头模式的网页抓取工具,使用也非常简单。下面介绍这两个开源的组件以及他们抓取图片的案例。

1、PuppeteerSharp

PuppeteerSharp 是一个用于在 .NET 平台上控制无头(Headless) Chrome 浏览器的库。它允许开发者通过编程方式模拟浏览器行为,执行网页操作,截取网页截图,获取网页内容,可以把网页转换成PDF等等。PuppeteerSharp 是 Puppeteer 在 .NET 环境中的等效实现,Puppeteer 是由 Google 提供的一个用于控制无界面浏览器 Chrome 的工具。

抓取网页图片案例

//初始化浏览器
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultChromiumRevision);
var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
    Headless = true//是否隐藏浏览器,true为隐藏
});
// 创建一个页面对象
var page = await browser.NewPageAsync();
// 导航到指定的URL
await page.GoToAsync("https://www.baidu.com");
//截图     FullPage是全屏
await page.ScreenshotAsync("test001.png",new ScreenshotOptions() { FullPage=true });

具体大家可以参考github地址的官方使用说明。

github地址:github.com/hardkoded/puppeteer-sharp

2、Selenium.WebDriver

Selenium.WebDriver 是一个用于自动化浏览器操作的 .NET 库,它提供了一组 API,允许开发者模拟用户在浏览器中的行为,从而进行自动化测试、数据抓取、网页操作等操作。Selenium 是一个广泛使用的工具,用于自动化浏览器操作和测试,而 Selenium.WebDriver 是其在 .NET 平台上的一个实现。同时Selenium.WebDriver也支持无头模式。

抓取网页图片案例

   public void WebDriverGetPic()
        {
            // 初始化 ChromeDriver
            var chromeOptions = new ChromeOptions();
            chromeOptions.AddArgument("--headless"); // 使用无头模式,即不显示浏览器界面
            string currentDirectory = Environment.CurrentDirectory+ "\\selenium-manager\\windows\\";
            chromeOptions.BinaryLocation = "selenium-manager.exe";
            using (var driver = new ChromeDriver(chromeOptions))
            {
                // 要截取的网页的 URL
                var url = "https://www.baidu.com"; // 替换为你想要截取的网页的 URL

                // 打开网页
                driver.Navigate().GoToUrl(url);

                // 等待网页加载完成
                System.Threading.Thread.Sleep(5000); // 这里等待 5 秒,你可以根据实际情况调整等待时间

                // 截取整个网页的截图
                var screenshot = ((ITakesScreenshot)driver).GetScreenshot();

                // 保存截图为文件
                screenshot.SaveAsFile("screenshot.png", ScreenshotImageFormat.Png);
            }
        }

具体大家可以参考github地址的官方使用说明。

github地址:github.com/SeleniumHQ/selenium

结语

本文介绍了两种截图的.NET库,在使用上他们都依赖Chrome浏览器包,都支持无头浏览。功能上来说PuppeteerSharp侧重网页内容的处理,而Selenium.WebDriver侧重于自动化测试。缺点是依赖浏览器。

大家用过那些.NET的网也截图库,最好不依赖浏览器的库,欢迎大家在文章下方留言和吐槽,共同分析和讨论.NET的网也截图这个话题。

来源公众号:DotNet开发跳槽
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 下面是使用 .NET 和免费开源组件将 Word 文档转换为 PDF 文档的代码示例: ``` // 首先,需要安装 Spire.Office 组件 // 可以在 NuGet 中搜索并安装 using Spire.Doc; namespace WordToPdf { class Program { static void Main(string[] args) { // 创建一个 Document 对象 Document document = new Document(); // 加载 Word 文档 document.LoadFromFile("input.docx"); // 保存为 PDF 格式 document.SaveToFile("output.pdf", FileFormat.PDF); } } } ``` 希望这个示例对你有帮助。 ### 回答2: 使用.NET可以使用免费开源组件将Word文档转换为PDF,其中一个常用的组件是Aspose.Words。 以下是一个示例代码,演示了如何使用Aspose.Words将Word文档转换为PDF格式: ```csharp using Aspose.Words; using Aspose.Words.Saving; public class WordToPdfConverter { public static void ConvertToPdf(string inputFilePath, string outputFilePath) { // 创建Document对象并加载输入的Word文档 Document doc = new Document(inputFilePath); // 创建PdfSaveOptions对象并设置保存选项 PdfSaveOptions saveOptions = new PdfSaveOptions(); saveOptions.Compliance = PdfCompliance.PdfA1a; // 将Word文档保存为PDF格式 doc.Save(outputFilePath, saveOptions); } } ``` 在上面的示例代码中,我们首先引用了Aspose.Words命名空间,并创建了一个名为WordToPdfConverter的类。该类有一个名为ConvertToPdf的静态方法,接受两个参数:输入Word文档的文件路径和输出PDF文件的文件路径。 在ConvertToPdf方法中,我们首先创建一个Document对象,并使用inputFilePath加载输入的Word文档。 然后,我们创建一个PdfSaveOptions对象,并设置一些保存选项。在这个示例中,我们使用PdfCompliance.PdfA1a来确保输出的PDF符合PDF/A-1a标准。 最后,我们调用doc.Save方法,并传入outputFilePath和saveOptions来保存Word文档为PDF格式。 使用这个代码示例,你可以使用Aspose.Words免费开源组件将Word文档转换为PDF格式。请确保你已经正确添加了对Aspose.Words组件的引用。 ### 回答3: 使用免费开源组件将Word转为PDF是相对简单的。首先,我们需要使用C#编写代码来操作Word文档,然后使用指定的组件将其转换为PDF格式。 在这个示例中,我们将使用iTextSharp组件来实现Word转PDF的功能。iTextSharp是一个流行的开源PDF库,可以用于创建和编辑PDF文件。 首先,我们需要安装iTextSharp组件。您可以通过NuGet包管理器来下载和安装iTextSharp。 然后,我们开始编写代码: ``` using iTextSharp.text; using iTextSharp.text.pdf; using Microsoft.Office.Interop.Word; ... // 设置输入和输出文件的路径 string wordPath = @"C:\input.docx"; string pdfPath = @"C:\output.pdf"; // 创建Word应用程序对象 Application word = new Application(); // 打开Word文档 Document doc = word.Documents.Open(wordPath); // Word转PDF doc.ExportAsFixedFormat(pdfPath, WdExportFormat.wdExportFormatPDF); // 关闭Word文档和应用程序对象 doc.Close(); word.Quit(); ``` 该示例中,我们首先设置输入和输出文件的路径,然后创建一个`Application`对象并使用`Open`方法打开Word文档。接下来,使用`ExportAsFixedFormat`方法将Word文档转换为PDF格式。最后,我们关闭Word文档并退出应用程序对象。 请注意,以上示例中使用到了`Microsoft.Office.Interop.Word`命名空间,这是Microsoft Office的核心对象模型,您的系统中需要安装有Microsoft Office才能使用。此外,该示例中的代码只是基本功能的展示,您可能需要根据自己的需求进行更多的调整和优化。 总之,使用免费开源组件将Word转为PDF可以通过使用iTextSharp库来实现。通过这个示例代码,您可以开始探索并实践Word转PDF的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值