gpt4 book ai didi

java - itextpdf 特定页面上的不同边距

转载 作者:行者123 更新时间:2023-11-29 06:54:05 31 4
gpt4 key购买 nike

大家好!

我对文档有一些疑问:

  1. itextpdf 是否可以选择在特定页面上设置不同的边距?我试过用

document.setMargin

然后

document.newPage

但似乎每一页都有相同的页边距。

  1. 有什么方法可以防止标题和元素重叠吗?

谢谢!

EDIT

添加文档内容的方法如下:

    @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());
}
}

这是结果:

title page, margin is changed

overlap

最佳答案

我刚试过你描述的:

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();
}

(ChangeMargins.java 方法 testChangingMargins)

结果:

Screenshot

因此,考虑您的项目 1:是的,iText 可以在特定页面上有不同的边距。

OP 在评论中想知道:

how about top and bottom margin? :/

为此,我将上面的循环更改为:

    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));
}

结果:

Screenshot

因此,不同的顶部和底部边距也有效。


考虑您的问题 2 是否有任何方法可以防止 header 和元素重叠:通常它们不会重叠。

关于java - itextpdf 特定页面上的不同边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38057241/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com