Możesz napotkać ograniczenia i problemy z pamięcią podczas przetwarzania dużych plików PDF przy użyciu klasy MemoryStream w języku C#. Żadne rozwiązanie ograniczające rozmiar pliku wejściowego nie działa w przypadkach, gdy rozmiar pliku PDF jest znacznie większy niż 2,5 GB. Poniższy przewodnik krok po kroku nauczy Cię, jak przetwarzać duże pliki PDF w C# przy użyciu zaawansowanych strumieni.
Kroki przetwarzania dużych plików PDF w języku C#
- Otwórz program Visual Studio i utwórz pustą aplikację konsoli C#
- Zainstaluj najnowszą wersję Aspose.PDF for .NET z NuGet.org
- Zainicjuj obiekt OptimizedMemoryStream, aby przetworzyć duży plik PDF
- Załaduj plik PDF o dużym rozmiarze za pomocą FileStream
- Zapisz bajty FileStream w OptimizedMemoryStream
- Zainicjuj obiekt Document przy użyciu konstruktora opartego na InputStream
- Manipuluj lub modyfikuj dokument PDF zgodnie ze swoimi potrzebami
- Zapisz zmodyfikowany i przetworzony dokument na dysku
Gdy pracujesz z dużymi dokumentami PDF i masz ograniczenia związane z rozmiarem dysku lokalnego, potrzebujesz interfejsu, który pozwoli na użycie funkcji wyszukiwania do załadowania ogromnych dokumentów PDF. Prosta klasa C# MemoryStream oferuje ograniczenia i powoduje duże problemy z pamięcią podczas przetwarzania ogromnych plików PDF z powodu braku możliwości wyszukiwania. Na tym etapie pojawia się rozwiązanie polegające na wykorzystaniu zaawansowanych strumieni. Poniższy fragment kodu pokazuje, jak można używać zaawansowanych strumieni do ładowania ogromnych plików PDF w języku C#.
Kod do przetwarzania dużych plików PDF w C#
using System; | |
using System.IO; | |
// Add reference to Aspose.PDF for .NET API | |
// Use following namespace to process large PDF files | |
using Aspose.Pdf; | |
namespace ProcessLargePDFFiles | |
{ | |
class Program | |
{ | |
static void Main(string[] args) | |
{ | |
// Set license before processing large PDF files | |
Aspose.Pdf.License AsposePDFLicense = new Aspose.Pdf.License(); | |
AsposePDFLicense.SetLicense(@"c:\asposelicense\license.lic"); | |
string outFile = @"c:\LargeSizePDF_Processed.pdf"; | |
// Initialize OptimizedMemoryStream object in which large size PDF will be stored for loading | |
OptimizedMemoryStream ms = new OptimizedMemoryStream(); | |
// Read large size PDF document from disk using FileStream | |
using (FileStream file = new FileStream(@"c:\LargeSizePDF.pdf", FileMode.Open, FileAccess.Read)) | |
{ | |
byte[] bytes = new byte[file.Length]; | |
file.Read(bytes, 0, (int)file.Length); | |
// Write large PDF bytes to OptimizedMemoryStream | |
ms.Write(bytes, 0, (int)file.Length); | |
} | |
// Use advanced stream to process large PDF file and load into Document object | |
Document doc = new Document(ms); | |
// Save the output PDF document | |
doc.Save(outFile); | |
} | |
} | |
} |
Powyższy prosty fragment kodu umożliwia przetwarzanie dokumentów PDF o dowolnych rozmiarach bez konieczności przechowywania ich na dysku lokalnym. Klasa OptimizedMemoryStream w Aspose.PDF dla platformy .NET umożliwia ładowanie ogromnych dokumentów PDF przy użyciu strumienia pamięci w języku C#. Definiuje MemoryStream, który ma pojemność większą niż standardowa i pozwala przetwarzać ogromne pliki PDF o rozmiarze większym niż 2,5 GB.
Możesz również sprawdzić inny przewodnik na jak czytać zakładki PDF za pomocą C# na wypadek, gdyby Twój dokument PDF miał zakładki i chcesz je przeczytać w swojej aplikacji .NET.