mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-12 21:53:00 -06:00
fix(pdf): reject requested pages outside the document range (#118639)
This commit is contained in:
committed by
GitHub
parent
629bf6f2d3
commit
8d1fe4f091
@@ -176,6 +176,24 @@ describe("PDF document extractor", () => {
|
||||
);
|
||||
});
|
||||
|
||||
it("rejects selected pages outside the PDF page count before extraction", async () => {
|
||||
pdfDocument.pageCount = 1;
|
||||
pdfDocument.extract.mockResolvedValueOnce({ text: "", images: [] });
|
||||
const extractor = createPdfDocumentExtractor();
|
||||
|
||||
await expect(extractor.extract(request({ pageNumbers: [2] }))).rejects.toThrow(
|
||||
"No requested PDF pages exist in this 1-page document.",
|
||||
);
|
||||
expect(pdfDocument.extract).not.toHaveBeenCalled();
|
||||
expect(pdfDocument.destroy).toHaveBeenCalledTimes(1);
|
||||
|
||||
await expect(extractor.extract(request({ pageNumbers: [] }))).resolves.toEqual({
|
||||
text: "",
|
||||
images: [],
|
||||
});
|
||||
expect(pdfDocument.destroy).toHaveBeenCalledTimes(2);
|
||||
});
|
||||
|
||||
it("reports image fallback failures and returns extracted text", async () => {
|
||||
const onImageExtractionError = vi.fn();
|
||||
const failure = new Error("render failed");
|
||||
|
||||
@@ -70,6 +70,9 @@ async function extractPdfContent(
|
||||
.filter((p) => Number.isInteger(p) && p >= 1 && p <= pdf.pageCount)
|
||||
.slice(0, request.maxPages)
|
||||
: undefined;
|
||||
if (request.pageNumbers?.length && pages?.length === 0) {
|
||||
throw new Error(`No requested PDF pages exist in this ${pdf.pageCount}-page document.`);
|
||||
}
|
||||
const pageSelection = pages ? { pages } : { maxPages: request.maxPages };
|
||||
|
||||
const textResult = await pdf.extract({
|
||||
|
||||
Reference in New Issue
Block a user