tri*_*420 1 java pdf-generation itext
今天是个好日子!
我对文档有一些疑问:
document.setMargin
然后
document.newPage
但似乎每页都有相同的余量.
谢谢!
编辑
这是添加文档内容的方法:
@Override
void addDocumentContent(Document doc, PdfWriter writer, AbstractDiplomaDataModel diplomaData) throws DiplomaPdfFileProducerException {
try {
doc.setMargins(DefaultPdfDocumentSettings.LEFT_MARGIN, DefaultPdfDocumentSettings.RIGHT_MARGIN, 0f, 0f);
doc.newPage();
doc.add(new DiplomaPdfDataGenerator(diplomaData).generateFirstPagePdf());
doc.setMargins(DefaultPdfDocumentSettings.LEFT_MARGIN, DefaultPdfDocumentSettings.RIGHT_MARGIN, DefaultPdfDocumentSettings.TOP_MARGIN,DefaultPdfDocumentSettings.BOTTOM_MARGIN);
doc.newPage();
doc.add(new DiplomaPdfDataGenerator(diplomaData).generateOtherPagesPdf());
} catch (Exception e) {
throw new DiplomaPdfFileProducerException(e.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
这就是结果:
我刚试过你所说的:
StringBuilder builder = new StringBuilder("test");
for (int i = 0; i < 100; i++)
builder.append(" test");
String test = builder.toString();
try ( OutputStream pdfStream = new FileOutputStream(new File(RESULT_FOLDER, "ChangingMargins.pdf")))
{
Document pdfDocument = new Document(PageSize.A4.rotate(), 0, 0, 0, 0);
PdfWriter.getInstance(pdfDocument, pdfStream);
pdfDocument.open();
for (int m = 0; m < pdfDocument.getPageSize().getWidth() / 2; m += 100)
{
pdfDocument.setMargins(m, m, 100, 100);
pdfDocument.newPage();
pdfDocument.add(new Paragraph(test));
}
pdfDocument.close();
}
Run Code Online (Sandbox Code Playgroud)
(ChangeMargins.java方法testChangingMargins)
结果:
因此,考虑到您的第1项:是,iText可以在特定页面上具有不同的边距.
OP在评论中想知道:
上下保证金怎么样?:/
为此,我将上面的循环更改为:
for (int m = 0; m < pdfDocument.getPageSize().getWidth() / 2 && m < pdfDocument.getPageSize().getHeight() / 2; m += 100)
{
pdfDocument.setMargins(m, m, m, m);
pdfDocument.newPage();
pdfDocument.add(new Paragraph(test));
}
Run Code Online (Sandbox Code Playgroud)
结果如下:
因此,不同的顶部和底部边距也起作用.
考虑你的问题2是否有任何方法可以防止标题和元素重叠:通常它们不重叠.
| 归档时间: |
|
| 查看次数: |
1987 次 |
| 最近记录: |