Я тестирую iText, чтобы сгенерировать PDF-файл, который состоит из 8 изображений в виде мозаики. Я использую JFreeChart для создания графика, который в свою очередь преобразуется в изображение с помощью iText. PDF генерируется нормально, но когда я открываю выходной файл, слева, справа и снизу остается примерно дюйм пустого пространства. Я хочу использовать все пространство на странице легального размера при печати.
Я знаю, что в PDF нет понятия "поля", и его нет в редактируемом формате. Изображение должно быть создано без пробелов. Что же тогда делают дополнительные параметры в конструкторе Document?
Я думал, что предоставление необходимых параметров объекту Document (LEGAL и 1f params) устранит пробел, и моя таблица займет все 8,5x14 на напечатанной странице, но не повезло.
Есть предложения? Заранее спасибо
Оригинальный код:
// Setup document
Document doc = new Document(PageSize.LEGAL, 1f, 1f, 1f, 1f);
PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream("c:\\temp\\image_in_chunk.pdf"));
doc.open();
//create the chart, save to file system, and create an iText Image object
ChartUtilities.saveChartAsPNG(new File("C:\\temp\\img.png"), createChart(createDataset()), 240, 240);
Image img1 = Image.getInstance("C:\\temp\\img.png");
PdfPCell cell1 = null;
Paragraph paragraph = new Paragraph();
paragraph.add(new Chunk(img1, 0, 0, true));
PdfPTable table = new PdfPTable(2);
for (int i = 0; i < 8; i++)
{
cell1 = new PdfPCell(paragraph);
table.addCell(cell1);
}
doc.add(table);
doc.close();
Исправленный и работающий код (Конечно, создайте свой собственный JFreeChart как img1. Я не могу опубликовать пример вывода изображения, не будучи участником):
// Setup document
Document doc = new Document(PageSize.LEGAL, 0f, 0f, 0f, 0f);
PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream("c:\\temp\\image_in_chunk.pdf"));
doc.open();
//create the chart, save to file system, and create an iText Image object
ChartUtilities.saveChartAsPNG(new File("C:\\temp\\img.png"), createChart(createDataset()), 305, 250);
Image img1 = Image.getInstance("C:\\temp\\img.png");
// Create pdf document
for (int i = 0; i < 8; i++)
{
doc.add(new Chunk(img1, 0, 0, true));
}
doc.close();