Работает ли метод setMargins в iText? - PullRequest
10 голосов
/ 10 декабря 2011

Метод setMargins в iText работает обычным образом?

Я пробовал следующее:

System.out.println(f.exists());
Document document = new Document(PageSize.A4,36,36,36,36);
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(f.getAbsolutePath()+"0.pdf"));
document.open();

//reader
PdfReader reader = new PdfReader(new FileInputStream(f));
PdfContentByte cb = writer.getDirectContent();

for(int i = 1 ; i < reader.getNumberOfPages()+1 ; i++)
{
  System.out.println(f.getName()+" "+i);
  PdfImportedPage page = writer.getImportedPage(reader, i); 
  document.newPage();
  cb.addTemplate(page,0,0);
}


// Add your new data / text here
// for example...
//document.add(new Paragraph("my timestamp")); 
document.close();

Однако я получаю тот же вывод, что и мой ввод. Мне интересно, есть ли особый способ заставить метод setMargins нормально работать.

Ответы [ 3 ]

19 голосов
/ 15 июня 2012

setMargins метод работает только до:

document.open();
1 голос
/ 19 июня 2014

Вы можете изменить левое и верхнее поля в новом документе PDF, добавив смещение, позвонив по номеру

cb.addTemplate(page, leftMarginOffset,topMarginOffset);

Положительные числа уменьшают поля, а отрицательные увеличивают их.

1 голос
/ 08 октября 2012

Поля можно изменить после open(), однако изменения вступают в силу только после newPage().

Добавление PdfImportedPage в качестве «изображения» учитывает поля документа.

Пример:

PdfImportedPage page = writer.getImportedPage(reader, i); 
document.add(Image.getInstance(page));
...