Generate 10GB PDF

import org.apache.pdfbox.pdmodel.PDDocument;

import org.apache.pdfbox.pdmodel.PDPage;

import org.apache.pdfbox.pdmodel.PDPageContentStream;

import org.apache.pdfbox.pdmodel.font.PDType1Font;


import java.io.File;

import java.io.IOException;


public class LargePdfGenerator {


    public static void main(String[] args) {

        long targetSize = 10L * 1024 * 1024 * 1024; // 10 GB

        String outputFilePath = "large.pdf";


        try (PDDocument document = new PDDocument()) {

            long currentSize = 0;

            long pageCount = 0;


            while (currentSize < targetSize) {

                PDPage page = new PDPage();

                document.addPage(page);


                try (PDPageContentStream contentStream = new PDPageContentStream(document, page)) {

                    contentStream.setFont(PDType1Font.TIMES_ROMAN, 12);

                    contentStream.beginText();

                    contentStream.newLineAtOffset(100, 700);


                    // Generate a large amount of repeated text

                    String repeatedText = "This is a large PDF file. ";

                    StringBuilder pageContent = new StringBuilder();

                    while (pageContent.length() < 10000) { //adjust as needed

                        pageContent.append(repeatedText);

                    }


                    contentStream.showText(pageContent.toString());

                    contentStream.endText();

                }


                document.save(outputFilePath); // Save after each page (or after a batch of pages)

                File file = new File(outputFilePath);

                currentSize = file.length();

                pageCount++;

                if (pageCount % 100 == 0) {

                    System.out.println("Current Size: " + currentSize + " bytes");

                }

            }


            System.out.println("PDF generation complete. Final size: " + currentSize + " bytes");


        } catch (IOException e) {

            e.printStackTrace();

        }

    }

}