Есть ли способ разделить большой 2D-документ с графикой jgraph на несколько страниц в формате pdf с помощью itext. У меня есть большая блок-схема, созданная с использованием jgraph. Мне нужно написать эту блок-схему в формате PDF с несколькими страницами. Мне нужно убедиться, что высота каждой страницы pdf ограничена 5000. SO, если высота графического объекта превышает 5000, она охватывает несколько страниц в pdf. Есть ли способ, которым я могу прочитать графический объект в куске (до высоты 5000 в каждой итерации), продолжать записывать его на новую страницу PDF и повторять, пока я полностью не прочитаю объект. Любые входы/направления будут полезны.
Ниже то, что у меня есть до сих пор -
float imageIdealHeight = 5000;
float imageIdealWidth = 5000;
float imageActualWidth=0;
float imageActualHeight=0;
mxRectangle imageBounds = ((mxGraph) graph).getGraphBounds();
imageActualWidth= (float) imageBounds.getWidth();
imageActualHeight = (float) imageBounds.getHeight();
System.out.println("Actual Width = "+imageActualWidth);
System.out.println("Actual Height = "+imageActualHeight);
numPages = (int) Math.ceil(imageActualHeight/imageIdealHeight);
Rectangle actualRectangle = new Rectangle(imageActualWidth, imageActualHeight);
//Custom Rectangle
Rectangle idealRectangle = new Rectangle(imageIdealWidth, imageIdealHeight);
Document document = new Document(idealRectangle );
//Create Pdf Writer
PdfWriter writer = PdfWriter.getInstance(document, fos);
//Open Document
document.open();
//Create huge template with actual image dimensions
PdfContentByte canvas = writer.getDirectContent();
PdfTemplate template = canvas.createTemplate(imageActualWidth, imageActualHeight);
PdfCanvasFactory pdfCanvasFactory = new PdfCanvasFactory(canvas);
//Draw graphics to this template
Graphics2D g2=template.createGraphics(imageActualWidth, imageActualHeight);
mxGraphics2DCanvas mxcanvas = new mxGraphics2DCanvas( g2);
mxcanvas = (mxGraphics2DCanvas) mxCellRenderer.drawCells((mxGraph) graph, null, 1, null, pdfCanvasFactory);
mxcanvas.getGraphics().dispose();
g2.dispose();
//Add template now...
canvas.addTemplate(template,0, -15000);
document.newPage();
canvas.addTemplate(template, 0, -10000);
document.newPage();
canvas.addTemplate(template,0 , -5000);
document.newPage();
canvas.addTemplate(template, 0, 0);
document.newPage();
document.close();