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();
}
}
}