如何替换Itext中段落的文本?
我想在合并pdf文件时设置页码。页码段落将由某人定义,以自定义他想要的样式。现在我可以在段落中添加文本(如如何替换Itext中段落的文本?,itext,itext7,Itext,Itext7,我想在合并pdf文件时设置页码。页码段落将由某人定义,以自定义他想要的样式。现在我可以在段落中添加文本(如doc.add(paragration.add(text))),但我无法替换它 public static byte[] mergePdf(Map<String, PdfDocument> filesToMerge, Paragraph paragraph) { ByteArrayOutputStream baos = new ByteArrayOutpu
doc.add(paragration.add(text))
),但我无法替换它
public static byte[] mergePdf(Map<String, PdfDocument> filesToMerge, Paragraph paragraph) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfDocument pdfDoc = new PdfDocument(new PdfWriter(baos));
Document doc = new Document(pdfDoc);
pdfDoc.initializeOutlines();
PdfPageFormCopier formCopier = new PdfPageFormCopier();
int page = 1;
for (Map.Entry<String, PdfDocument> entry : filesToMerge.entrySet()) {
String title = entry.getKey();
PdfDocument srcDoc = entry.getValue();
int numberOfPages = srcDoc.getNumberOfPages();
for (int i = 1; i <= numberOfPages; i++, page++) {
Text text = new Text(String.format("page %d", page));
srcDoc.copyPagesTo(i, i, pdfDoc, formCopier);
if (i == 1) {
text.setDestination("p" + page);
PdfOutline rootOutLine = pdfDoc.getOutlines(false);
PdfOutline outline = rootOutLine.addOutline(title);
outline.addDestination(PdfDestination.makeDestination(new PdfString("p" + page)));
}
// I want do like "doc.add(paragraph.set(text))";
// paragraph already have been set position,font,fontSize and so on. SO I dont want to "new Paragraph(text)"
doc.add(paragraph.add(text));
}
}
for (PdfDocument srcDoc : filesToMerge.values()) {
srcDoc.close();
}
doc.close();
return baos.toByteArray();
}
公共静态字节[]合并PDF(映射文件合并,段落){
ByteArrayOutputStream bas=新的ByteArrayOutputStream();
PdfDocument pdfDoc=新的PdfDocument(新的PdfWriter(bas));
单据单据=新单据(pdfDoc);
pdfDoc.initializeOutlines();
PdfPageFormCopier formCopier=新的PdfPageFormCopier();
int page=1;
对于(Map.Entry:filesToMerge.entrySet()){
字符串title=entry.getKey();
PdfDocument srcDoc=entry.getValue();
int numberOfPages=srcDoc.getNumberOfPages();
对于(int i=1;i我是发问者。最后我解决了这个问题,如下所示:
public class MyParagraph extends Paragraph {
public MyParagraph() {
}
public void setContent(Text text) {
List<IElement> children = this.getChildren();
if (!children.isEmpty()) {
children.clear();
}
children.add(text);
}
}
public类My段落扩展段落{
公共事务(第()段){
}
公共内容(文本){
List children=this.getChildren();
如果(!children.isEmpty()){
儿童。清除();
}
添加(文本);
}
}
那么问题到底是什么?您想更改段落的内容
?为什么不立即使用所需内容?@mkl抱歉,我不是英语母语用户。我想更改段落的内容,该段落的位置、边距、字体、字体大小都已配置。恐怕段落
类不是为R,它只允许添加额外的内容,而不是替换现有的内容。考虑使用辅助方法创建一个<代码>段落< /代码>实例,它具有所需的位置、边距、字体和字体大小,但还没有内容。@ MKL,你是对的,谢谢。