diff --git a/document-readers/spring-ai-pdf-document-reader/src/main/java/org/springframework/ai/reader/pdf/config/ParagraphManager.java b/document-readers/spring-ai-pdf-document-reader/src/main/java/org/springframework/ai/reader/pdf/config/ParagraphManager.java index bbcbac0ce4..bcd9a83563 100644 --- a/document-readers/spring-ai-pdf-document-reader/src/main/java/org/springframework/ai/reader/pdf/config/ParagraphManager.java +++ b/document-readers/spring-ai-pdf-document-reader/src/main/java/org/springframework/ai/reader/pdf/config/ParagraphManager.java @@ -17,10 +17,11 @@ package org.springframework.ai.reader.pdf.config; import java.io.IOException; -import java.io.PrintStream; import java.util.ArrayList; import java.util.List; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageTree; @@ -41,6 +42,8 @@ */ public class ParagraphManager { + private static final Log logger = LogFactory.getLog(ParagraphManager.class); + /** * Root of the paragraphs tree. */ @@ -64,7 +67,9 @@ public ParagraphManager(PDDocument document) { new Paragraph(null, "root", -1, 1, this.document.getNumberOfPages(), 0), this.document.getDocumentCatalog().getDocumentOutline(), 0); - printParagraph(this.rootParagraph, System.out); + if (logger.isDebugEnabled()) { + logParagraph(this.rootParagraph); + } } catch (Exception e) { throw new RuntimeException(e); @@ -87,10 +92,10 @@ private void flatten(Paragraph current, List paragraphs) { } } - private void printParagraph(Paragraph paragraph, PrintStream printStream) { - printStream.println(paragraph); + private void logParagraph(Paragraph paragraph) { + logger.debug(paragraph); for (Paragraph childParagraph : paragraph.children()) { - printParagraph(childParagraph, printStream); + logParagraph(childParagraph); } } diff --git a/document-readers/spring-ai-pdf-document-reader/src/test/java/org/springframework/ai/reader/pdf/ParagraphPdfDocumentReaderTests.java b/document-readers/spring-ai-pdf-document-reader/src/test/java/org/springframework/ai/reader/pdf/ParagraphPdfDocumentReaderTests.java index a0352c5ab9..bf95985b94 100644 --- a/document-readers/spring-ai-pdf-document-reader/src/test/java/org/springframework/ai/reader/pdf/ParagraphPdfDocumentReaderTests.java +++ b/document-readers/spring-ai-pdf-document-reader/src/test/java/org/springframework/ai/reader/pdf/ParagraphPdfDocumentReaderTests.java @@ -19,6 +19,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; +import java.io.PrintStream; import java.util.List; import org.apache.pdfbox.Loader; @@ -114,4 +115,18 @@ void shouldSkipInvalidOutline() throws IOException { assertThat(documents.get(1).getMetadata().get("title")).isEqualTo("Chapter 3"); } + @Test + void shouldNotWriteToStdoutDuringInitialization() { + PrintStream originalOut = System.out; + ByteArrayOutputStream capturedOutput = new ByteArrayOutputStream(); + System.setOut(new PrintStream(capturedOutput)); + try { + new ParagraphPdfDocumentReader("classpath:/sample3.pdf", PdfDocumentReaderConfig.defaultConfig()); + } + finally { + System.setOut(originalOut); + } + assertThat(capturedOutput.toString()).isEmpty(); + } + }