Как скачать PDF по URL в C#
В повседневной разработке нам часто нужно получать ресурсы из интернета, особенно PDF-документы. Будь то автоматическое резервное копирование онлайн-отчётов, пакетная загрузка электронных инвойсов или получение динамически сгенерированных файлов контрактов — умение эффективно и надёжно сохранять удалённые PDF-файлы локально является очень практичным навыком.
В этой статье объясняется, как использовать библиотеку Spire.PDF для .NET с C#, чтобы скачать PDF-документ по заданному URL и сохранить его локально. Spire.PDF предоставляет богатый набор возможностей обработки PDF, выходящий далеко за рамки простого скачивания и сохранения файлов.
Предварительные требования
Сначала нужно установить Spire.PDF для .NET в вашем проекте. Это можно сделать через консоль диспетчера пакетов NuGet:
Install-Package Spire.PDF
Или через .NET CLI:
dotnet add package Spire.PDF
Библиотека поддерживает .NET Framework 4.0 и выше, .NET Core 3.1, .NET 5.0 и более поздние версии.
Код реализации
Ниже приведён полный пример кода:
using System.IO;
using System.Net;
using Spire.Pdf;
namespace DownloadPdfFromUrl
{
class Program
{
static void Main(string[] args)
{
// Создаём объект PdfDocument
PdfDocument doc = new PdfDocument();
// Создаём объект WebClient для загрузки веб-ресурсов
WebClient webClient = new WebClient();
// Скачиваем данные PDF по URL в поток памяти (MemoryStream)
using (MemoryStream ms = new MemoryStream(
webClient.DownloadData("http://www.example.com/sample.pdf")))
{
// Загружаем данные PDF из потока в объект PdfDocument
doc.LoadFromStream(ms);
}
// Сохраняем PDF-документ в локальный файл
doc.SaveToFile("result.pdf", FileFormat.PDF);
// Освобождаем ресурсы
webClient.Dispose();
doc.Close();
}
}
}
Пояснение к коду
1. Создание объекта PdfDocument
PdfDocument — это основной класс Spire.PDF, представляющий экземпляр PDF-документа. Он используется для хранения и обработки PDF-данных, загруженных из интернета.
2. Использование WebClient для скачивания данных
WebClient — это простой класс загрузки по HTTP в .NET. Метод DownloadData возвращает byte[], который представляет собой исходное бинарное содержимое PDF-файла.
3. Использование MemoryStream как “моста”
Обёртка массива байт в MemoryStream позволяет использовать метод doc.LoadFromStream(ms). Это избавляет от неэффективного процесса сохранения файла на диск, а затем чтения его обратно — и даёт возможность обрабатывать данные в памяти.
4. Загрузка и сохранение PDF
Метод LoadFromStream анализирует поток памяти и формирует пригодный для использования PDF-документ. Затем метод SaveToFile сохраняет документ в локальное хранилище под именем файла result.pdf.
Примечания
Обработка исключений : В производственных средах рекомендуется добавлять блоки try-catch для обработки сетевых таймаутов, недействительных URL, ошибок формата PDF и других исключений.
Управление памятью : И WebClient, и PdfDocument реализуют интерфейс IDisposable, поэтому ресурсы должны быть корректно освобождены. В примере MemoryStream обрабатывается через using, но также рекомендуется явно освобождать webClient и doc или оборачивать их в блоки using .
Асинхронная версия : Для больших файлов рассмотрите использование WebClient.DownloadDataTaskAsync или переход на HttpClient с асинхронными методами, чтобы не блокировать UI-поток.
Корректность URL : Убедитесь, что URL напрямую указывает на PDF-файл, а не на страницу перенаправления.
Расширенные сценарии
С помощью Spire.PDF вы можете выполнять дополнительные операции сразу после загрузки PDF, например:
Извлечение текста или изображений
Объединение нескольких PDF-файлов
Добавление водяных знаков или колонтитулов (верхний/нижний)
Конвертация PDF в изображения или формат Word
Итог
В этой статье показано, как скачать PDF по URL и сохранить его локально с помощью C# и Spire.PDF для .NET. Весь процесс простой и эффективный — требуется всего несколько строк ключевого кода.
Spire.PDF — это не только инструмент для загрузки и сохранения документов, но и мощная библиотека для обработки PDF, которую стоит изучить дальше.




