feat: add Java JRXML-to-PNG rendering pipeline with pixel-level SSIM comparison
- lib/java/: Java renderer (JrxmlRenderer) using JasperReports 6.21.0 - JrxmlDebug for diagnostics, JrxmlGen for format reference - download_jars.sh for one-time dependency setup - agent/nodes.py: _render_jrxml_to_png() and _compute_pixel_similarity() - Pixel comparison integrates into validate node (SSIM < 0.4 fails) - Pixel fidelity context injected into correct_jrxml for targeted fixes - tests/test_pixel_comparison.py: 15 unit tests (render, SSIM, integration) - .gitignore: exclude lib/java/*.jar, lib/java/*.class, tmp/ - CLAUDE.md: v11 changelog documenting the rendering pipeline - All non-LLM tests pass (97/97)
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
import net.sf.jasperreports.engine.*;
|
||||
import net.sf.jasperreports.engine.design.*;
|
||||
import net.sf.jasperreports.engine.xml.*;
|
||||
import java.io.*;
|
||||
|
||||
public class JrxmlRendererTest {
|
||||
public static void main(String[] args) throws Exception {
|
||||
String path = args.length > 0 ? args[0] : "/tmp/test_render.jrxml";
|
||||
File f = new File(path);
|
||||
System.out.println("File: " + f.getAbsolutePath() + " exists=" + f.exists() + " len=" + f.length());
|
||||
|
||||
// Read content to check XML validity
|
||||
try (BufferedReader br = new BufferedReader(new FileReader(f))) {
|
||||
String line;
|
||||
int lineNum = 0;
|
||||
while ((line = br.readLine()) != null && lineNum < 5) {
|
||||
System.out.println(" L" + (++lineNum) + ": " + line);
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
System.out.println("Step 1: Loading JRXML...");
|
||||
JasperDesign design = JRXmlLoader.load(f);
|
||||
System.out.println(" OK - name=" + design.getName());
|
||||
} catch (JRException e) {
|
||||
System.err.println("JR ERROR: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
} catch (Exception e) {
|
||||
System.err.println("GENERIC ERROR: " + e.getClass().getName() + ": " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
} catch (Error e) {
|
||||
System.err.println("FATAL ERROR: " + e.getClass().getName() + ": " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user