Я попытался преобразовать HTML в PDF на странице формата A4. Но содержание слишком длинное и PDF разбит на 2 страницы. Я просто хочу, чтобы это было на одной странице. Итак, моя идея заключается в том, чтобы преобразовать PDF в размер A3, а затем уменьшить его до размера A4. Но другая проблема заключается в уменьшении размера страницы с формата A3 до размера страницы A4.
1) Преобразуйте свой html в документ размера A3
2) Перебирать страницы и копировать каждую страницу как formXObject
3) Для каждой страницы formXObject:
а) масштабировать с коэффициентом 0,5;
б) дополнить полученный документ.
Соответствующий код Java выглядит следующим образом (у вас не должно возникнуть проблем с переносом его на C#, поскольку API iText точно такой же):
// 1
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfDocument pdfDocument = new PdfDocument(new PdfWriter(baos));
pdfDocument.setDefaultPageSize(PageSize.A3);
HtmlConverter.convertToPdf(new FileInputStream(sourcePath), pdfDocument);
PdfDocument resultantDocument = new PdfDocument(new PdfWriter(destPath));
pdfDocument = new PdfDocument(new PdfReader(new ByteArrayInputStream(baos.toByteArray())));
// 2
for (int i = 1; i <= pdfDocument.getNumberOfPages(); i++) {
PdfPage page = pdfDocument.getPage(i);
PdfFormXObject formXObject = page.copyAsFormXObject(resultantDocument);
PdfCanvas pdfCanvas = new PdfCanvas(resultantDocument.addNewPage());
// 3a and 3b
pdfCanvas.addXObject(formXObject, 0.5f, 0, 0, 0.5f, 0, 0);
}
pdfDocument.close();
resultantDocument.close();