Aspose.word for Java 在word文档中 插入页眉会自动增加一个 换行符,怎么删除这个换行符?
c7fdd2f9cd3284cc51c4db4867c62d0.png (13.4 KB)
Aspose.word for Java 在word文档中 插入页眉会自动增加一个 换行符,怎么删除这个换行符?
c7fdd2f9cd3284cc51c4db4867c62d0.png (13.4 KB)
您可以通过使用属性 HeaderFooter.LastChild 获取它并使用 Node.Remove 方法将其删除来删除最后一个空段落或换行符。 希望这对你有帮助。
如果您仍然遇到问题,请压缩并附上您的输入和输出文件。 然后,我们将为您提供有关它的更多信息。
请检查修改后的操作字头方法中的以下代码行以实现您的要求。
if(builder.getCurrentStory().getLastParagraph() !=null)
builder.getCurrentStory().getLastParagraph().remove();
public static Document operateWordHeader(Document doc, String contractSelfCode){
String fileLogo = "logo.png";
String fileWatermark = "watermark.png";
try {
DocumentBuilder builder = new DocumentBuilder(doc);
builder.moveToHeaderFooter(HeaderFooterType.HEADER_PRIMARY);
//插入logo
BufferedImage imageLogo = ImageIO.read(new File(fileLogo));
builder.insertImage(imageLogo, RelativeHorizontalPosition.MARGIN, 2, RelativeVerticalPosition.TOP_MARGIN, 44, 87, 27, WrapType.NONE);
//插入合同编号
Paragraph paragraph = builder.insertParagraph();
Run run = new Run(doc,"合同编号:"+contractSelfCode);
run.getFont().setBold(true);
run.getFont().setSize(11);
run.getFont().setName("宋体");
paragraph.appendChild(run);
builder.getParagraphFormat().setAlignment(ParagraphAlignment.RIGHT);
//插入页眉分隔线
Border borderHeader = builder.getParagraphFormat().getBorders().getBottom();
borderHeader.setShadow(true);
borderHeader.setDistanceFromText(2);
borderHeader.setLineStyle(LineStyle.SINGLE);
//插入水印
Shape shape = new Shape(doc, ShapeType.IMAGE);
BufferedImage imageWatermark = ImageIO.read(new File(fileWatermark));
shape.getImageData().setImage(imageWatermark);
// 设置倾斜度
shape.setRotation(0);
// 设置亮度
shape.getImageData().setBrightness(0.5);
// 设置对比度
shape.getImageData().setContrast(0.5);
shape.setWrapType(WrapType.NONE);
shape.setAnchorLocked(true);
shape.setRelativeHorizontalPosition(RelativeHorizontalPosition.PAGE);
shape.setRelativeVerticalPosition(RelativeVerticalPosition.PAGE);
shape.setVerticalAlignment(VerticalAlignment.CENTER);
shape.setHorizontalAlignment(HorizontalAlignment.CENTER);
Paragraph watermarkPara = new Paragraph(doc);
watermarkPara.appendChild(shape);
for (Section sect : doc.getSections()) {
insertWatermarkImgIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_PRIMARY);
}
if(builder.getCurrentStory().getLastParagraph() !=null)
builder.getCurrentStory().getLastParagraph().remove();
} catch (Exception e) {
e.printStackTrace();
}
return doc;
}
你好 ,谢谢您的回复。
根据您提供的方法,我们做了测试,用了这方法
if(builder.getCurrentStory().getLastParagraph() !=null)
builder.getCurrentStory().getLastParagraph().remove();
word文档中页眉下面的换行符已经删除了,但是这个操作同时把合同中正文里面的水印也一起删除了,请问这块该如何处理呢?
在这种情况下,您可以使用以下代码片段来避免共享问题。
if(builder.getCurrentStory().getLastParagraph() !=null
&& builder.getCurrentStory().getLastParagraph().toString(SaveFormat.TEXT).trim().length() == 0
&& !builder.getCurrentStory().getLastParagraph().hasChildNodes())
builder.getCurrentStory().getLastParagraph().remove();
正文水印出来后,但是 页眉又有了 换行符
f3dd00fc340f61c5e04cba3380fc7d3.png (61.5 KB)
2c9213d89c5d48ad977432b4b7cf7d3.png (10.8 KB)
您正面临 Aspose.Words 的预期行为。 在您的场景中,您正在为文本创建新段落,为水印创建新段落。 水印段落是您要删除的最后一个段落。
在您的情况下,我们建议您将 watmark 段落的大小减小到 1.0,如下所示。 希望这对您有所帮助。
watermarkPara.getParagraphBreakFont().setSize(1.0);
public static Document operateWordHeader(Document doc, String contractSelfCode) {
String fileLogo = "C:\\Users\\temp\\logo.png";
String fileWatermark = "C:\\Users\\temp\\watermark.png";
try {
DocumentBuilder builder = new DocumentBuilder(doc);
builder.moveToHeaderFooter(HeaderFooterType.HEADER_PRIMARY);
// 插入合同编号
Paragraph paragraph = builder.insertParagraph();
builder.moveTo(paragraph);
// 插入logo
BufferedImage imageLogo = ImageIO.read(new File(fileLogo));
builder.insertImage(imageLogo, RelativeHorizontalPosition.MARGIN, 2, RelativeVerticalPosition.TOP_MARGIN,
44, 87, 27, WrapType.NONE);
Run run = new Run(doc, "合同编号:" + contractSelfCode);
run.getFont().setBold(true);
run.getFont().setSize(11);
run.getFont().setName("宋体");
paragraph.appendChild(run);
builder.getParagraphFormat().setAlignment(ParagraphAlignment.RIGHT);
// 插入页眉分隔线
Border borderHeader = builder.getParagraphFormat().getBorders().getBottom();
borderHeader.setShadow(true);
borderHeader.setDistanceFromText(2);
borderHeader.setLineStyle(LineStyle.SINGLE);
// 插入水印
Shape shape = new Shape(doc, ShapeType.IMAGE);
BufferedImage imageWatermark = ImageIO.read(new File(fileWatermark));
shape.getImageData().setImage(imageWatermark);
// 设置倾斜度
shape.setRotation(0);
// 设置亮度
shape.getImageData().setBrightness(0.5);
// 设置对比度
shape.getImageData().setContrast(0.5);
shape.setWrapType(WrapType.NONE);
shape.setAnchorLocked(true);
shape.setRelativeHorizontalPosition(RelativeHorizontalPosition.PAGE);
shape.setRelativeVerticalPosition(RelativeVerticalPosition.PAGE);
shape.setVerticalAlignment(VerticalAlignment.CENTER);
shape.setHorizontalAlignment(HorizontalAlignment.CENTER);
Paragraph watermarkPara = new Paragraph(doc);
watermarkPara.appendChild(shape);
watermarkPara.getParagraphBreakFont().setSize(1.0);
for (Section sect : doc.getSections()) {
insertWatermarkImgIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_PRIMARY);
}
} catch (Exception e) {
e.printStackTrace();
}
return doc;
}