Я восстановил существующий PDF, но у меня недостаточно места, чтобы записать некоторые детали между двумя абзацами.Я использую getscale
и addtemplate
, чтобы добавить то, что я хочу, но место слишком мало.Можно ли уменьшить разницу?
Я пытаюсь, но метод addtemplate
из pdfcontentbyte
очень сложен для понимания.
Это код:
private static float getScale(float width, float height) {
float scaleX = PageSize.A4.getWidth() / width;
float scaleY = PageSize.A4.getHeight() / height;
return Math.min(scaleX, scaleY);
}
Document docu = new Document(PageSize.A4, 0, 0, 0, 0);
InputStream istreamImage = null;
istreamImage = DocumentUtils.recupererInputStream(parametreApplication.getModelContratMonacoId(), "mon");
docu.setMargins(0, 0, 0, 0);
PdfWriter writer = PdfWriter.getInstance(docu, osFusion);
docu.open();
PdfContentByte cb = writer.getDirectContent();
PdfReader reader = new PdfReader(istreamImage);
HashMap<String, Integer[]> mapParametre = null;
final Font timeNewRoman = FontFactory.getFont( "Times-Roman" , 28, Color.GRAY);
for(int numPage = 1; numPage <= reader.getNumberOfPages() ; numPage++) {
PdfImportedPage page = writer.getImportedPage(reader, numPage);
docu.newPage();
docu.setMargins(0, 0, 0, 0);
Rectangle pagesize =reader.getPageSizeWithRotation(numPage);
float oWidth = pagesize.getWidth();
float oHeight = pagesize.getHeight()+1;
float scale = getScale(oWidth, oHeight);
cb.addTemplate(page, scale, 0, 0, scale, 0, 0);
}