Ответ 1
Метод setMargins
работает только до:
document.open();
Работает ли метод 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
работать нормально.
Метод setMargins
работает только до:
document.open();
Поля могут быть изменены после open()
, однако изменения вступают в силу только после newPage()
.
Добавление PdfImportedPage
в качестве "изображения" выполняет PdfImportedPage
полей документа.
Пример:
PdfImportedPage page = writer.getImportedPage(reader, i);
document.add(Image.getInstance(page));
Вы можете изменить левое и верхнее поля в новом pdf-документе, добавив смещение, вызвав
cb.addTemplate(page, leftMarginOffset,topMarginOffset);
Положительные числа уменьшат маржи, а отрицательные числа увеличат их.
http://itext.2136553.n4.nabble.com/Adding-extra-margins-to-existing-PDF-Using-5-0-4-td3305175.html
использование приведенного выше фрагмента кода работает для меня.
здесь моя версия.
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.Document;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Utilities;
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
public class PngToPdf2 {
private static float points15mm = Utilities.millimetersToPoints(15);
public static void main(String arg[]) throws Exception {
File folder = new File("C:\\Users\\mamabile\\Desktop\\print-bulk-5");
String outputFile = "output.pdf";
List<String> files = new ArrayList<String>();
files.add("newimage.png");
//files.add("page2.jpg");
Document document = new Document(PageSize.A4);
PdfWriter.getInstance(document, new FileOutputStream(new File(folder, outputFile)));
float maxwidth = document.getPageSize().getWidth() - points15mm * 2;
document.open();
for (String f : files) {
document.newPage();
Image image = Image.getInstance(new File(folder, f).getAbsolutePath());
image.scaleToFit(maxwidth, PageSize.A4.getHeight());
image.setAbsolutePosition(points15mm, points15mm);
//image.setRotationDegrees(reader.getPageRotation(i)==270?90:0);
image.setCompressionLevel(9);
image.simplifyColorspace();
document.add(image);
}
document.close();
}
}