{"record":{"id":"7624728c17377db2","repo":"opendataloader-project/opendataloader-pdf","slug":"unsupported-image-format-s-supported-values","errorCode":null,"errorMessage":"Unsupported image format '%s'. Supported values: %s","messagePattern":"Unsupported image format '(.+?)'\\. Supported values: (.+?)","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/Config.java","lineNumber":629,"sourceCode":"\n    /**\n     * Gets the image format for extracted images.\n     *\n     * @return The image format (png or jpeg).\n     */\n    public String getImageFormat() {\n        return imageFormat;\n    }\n\n    /**\n     * Sets the image format for extracted images.\n     *\n     * @param imageFormat The image format (png or jpeg).\n     * @throws IllegalArgumentException if the format is not supported.\n     */\n    public void setImageFormat(String imageFormat) {\n        if (imageFormat != null && !isValidImageFormat(imageFormat)) {\n            throw new IllegalArgumentException(\n                String.format(\"Unsupported image format '%s'. Supported values: %s\",\n                    imageFormat, getImageFormatOptions(\", \")));\n        }\n        this.imageFormat = imageFormat != null ? imageFormat.toLowerCase(Locale.ROOT) : IMAGE_FORMAT_PNG;\n    }\n\n    /**\n     * Gets the list of supported image format options.\n     *\n     * @param delimiter The delimiter to use between options.\n     * @return The string with image formats separated by the delimiter.\n     */\n    public static String getImageFormatOptions(CharSequence delimiter) {\n        return String.join(delimiter, imageFormatOptions);\n    }\n\n    /**\n     * Checks if the given image format is valid.","sourceCodeStart":611,"sourceCodeEnd":647,"githubUrl":"https://github.com/opendataloader-project/opendataloader-pdf/blob/a7789b8e77dd05e2b8659eb3ea12fc458f80bfb8/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/Config.java#L611-L647","documentation":"Config.setImageFormat rejects any value not in {png, jpeg}. The check is case-insensitive (lowercased) but does not trim whitespace. null is accepted and defaults to png. IllegalArgumentException is thrown before assignment.","triggerScenarios":"config.setImageFormat(\"jpg\") or config.setImageFormat(\"tiff\"); CLI --image-format jpg. Note 'jpg' is NOT accepted (only 'jpeg').","commonSituations":"Using the common 'jpg' alias (unsupported here); typo; value from a different version; untrimmed value.","solutions":["Use one of the supported values: png or jpeg (not 'jpg').","Trim and lowercase externally sourced values.","Pre-validate with Config.isValidImageFormat(value)."],"exampleFix":"// before: config.setImageFormat(\"jpg\");\n// after:  config.setImageFormat(\"jpeg\");","handlingStrategy":"validation","validationCode":"String fmt = externalValue == null ? null : externalValue.trim().toLowerCase(Locale.ROOT);\nif (fmt != null && !Config.isValidImageFormat(fmt)) {\n    throw new IllegalArgumentException(\n        \"Bad --image-format '\" + fmt + \"'. Valid: \" + Config.getImageFormatOptions(\", \"));\n}\nconfig.setImageFormat(fmt);","typeGuard":"static boolean isSupportedImageFormat(String s) {\n    return s != null && Config.isValidImageFormat(s.trim());\n}","tryCatchPattern":"try {\n    config.setImageFormat(raw);\n} catch (IllegalArgumentException e) {\n    config.setImageFormat(null); // default png\n}","preventionTips":["Remember 'jpg' is NOT accepted; only 'jpeg' and 'png'.","Trim and lowercase external values before validation."],"tags":["configuration","validation","image-format"],"backgroundTag":null,"analyzedSha":"a7789b8e77dd05e2b8659eb3ea12fc458f80bfb8","analyzedAt":"2026-08-14T05:22:03.953Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}