Цей підручник зосереджується на тому, як обробляти великі PDF файли в Java за допомогою розширених потоків, щоб запобігти проблемам із великою пам’яттю та обмеженням під час обробки великих файлів PDF за допомогою класу MemoryStream. Ви можете завантажувати та обробляти величезні PDF-документи в середовищах на основі Java, створених у Windows, Linux або macOS, використовуючи прості виклики API.
Кроки для обробки великих PDF-файлів у Java
- Налаштуйте середовище для додавання Aspose.PDF for Java зі сховища для обробки великих PDF-файлів
- Отримайте доступ до великих байтів PDF-файлу з диска за допомогою методу Files.readAllBytes
- Створіть екземпляр об’єкта класу OptimizedMemoryStream і скопіюйте в нього масив байтів
- Ініціалізуйте об’єкт класу Document за допомогою конструктора на основі InputStream, щоб завантажити PDF
- Обробіть або змініть документ PDF відповідно до ваших вимог
- Збережіть змінений і оброблений PDF-документ на диску
Наведені вище дії дозволяють використовувати розширені потоки для завантаження величезного PDF-файлу в Java. Клас OptimizedMemoryStream дає змогу обробляти величезний PDF-документ за допомогою потоку пам’яті в Java, визначаючи MemoryStream, який має ємність більше стандартної, що дозволяє обробляти величезні PDF-файли розміром більше 2,5 ГБ.
Код для обробки великих PDF-файлів у Java
import com.aspose.pdf.Document; | |
import com.aspose.pdf.License; | |
import com.aspose.pdf.OptimizedMemoryStream; | |
import java.nio.file.Files; | |
import java.nio.file.Path; | |
import java.nio.file.Paths; | |
public class LargePDF { | |
static void main(String[] args) throws Exception { // Handle exception while processing large PDF files | |
String path= "C:/TestData/"; | |
// Instantiate the license to process the large PDF files | |
License PdfLicense = new License(); | |
PdfLicense.setLicense(path+"Conholdate.Total.Product.Family.lic"); | |
// Initialize the OptimizedMemoryStream object in which large size PDF will be stored for loading | |
OptimizedMemoryStream ms = new OptimizedMemoryStream(); | |
try{ | |
// Access the large PDF in Byte array | |
Path paths = Paths.get(path + "LargePDF.pdf"); | |
byte[] data = Files.readAllBytes(paths); | |
// Write large PDF byte array to OptimizedMemoryStream | |
ms.write(data, 0, (int)data.length); | |
// Use the optimized stream to process large PDF and load it into a Document object | |
Document doc = new Document(ms); | |
// Perform the desired operations and save the output PDF document | |
doc.save(path + "LargeSizePDFProcessed.pdf"); | |
} | |
finally{ | |
ms.close(); | |
} | |
} | |
} |
Під час роботи з MemoryStream для керування PDF-документами великого розміру існують обмеження, які викликають великі проблеми з пам’яттю під час обробки PDF-файлів через відсутність можливості пошуку. Ви можете розглянути рішення використання розширених потоків для завантаження величезних документів PDF у потік пам’яті за допомогою Java та збереження їх на диску після завершення обробки.
У цьому прикладі ми навчилися завантажувати великі файли PDF у Java за допомогою простих викликів API. Якщо ви хочете дізнатися про стиснення файлу PDF, зверніться до теми про те, як стискати PDF в Java.