用JODConverter和openoffice生成PDF文档时候的PAGESIZE设置问题

本文讨论了使用JODConverter和openoffice在生成PDF文档时遇到的纸张尺寸设置问题,提供了纸张设置参数的详细说明及参考资料。

用JODConverter和openoffice生成PDF文档时候的PAGESIZE设置问题(二)

纸张设置参数

上篇文章
[1]: https://blog.youkuaiyun.com/liuhualiang/article/details/14094019#commentsedit

提到的关于纸张设置参数,可以参考
[2]: https://www.openoffice.org/api/docs/common/ref/com/sun/star/view/PrinterDescriptor.html

在这里插入图片描述

这是我的代码:package com.example.demo.demos.web; import com.itextpdf.text.BaseColor; import com.itextpdf.text.Element; import com.itextpdf.text.Rectangle; import com.itextpdf.text.pdf.*; import lombok.RequiredArgsConstructor; import org.jodconverter.core.DocumentConverter; import org.jodconverter.core.document.DefaultDocumentFormatRegistry; import org.springframework.stereotype.Service; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.io.OutputStream; @Service @RequiredArgsConstructor public class ConvertService { private final DocumentConverter converter; public void wordToPdfWithWatermark(InputStream in, OutputStream out, String waterMark) throws Exception { ByteArrayOutputStream temp = new ByteArrayOutputStream(); converter .convert(in) .as(DefaultDocumentFormatRegistry.DOCX) .to(temp) .as(DefaultDocumentFormatRegistry.PDF) .execute(); addWatermark(new ByteArrayInputStream(temp.toByteArray()), out, waterMark); } private void addWatermark(InputStream pdfIn, OutputStream pdfOut, String text) throws Exception { PdfReader reader = null; PdfStamper stamper = null; try { reader = new PdfReader(pdfIn); stamper = new PdfStamper(reader, pdfOut); PdfGState gs = new PdfGState(); gs.setFillOpacity(0.3f); String fontPath = "font/simsun.ttc,0"; BaseFont font = BaseFont.createFont(fontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); int numberOfPages = reader.getNumberOfPages(); float fontSize = 65f; // 遍历每一页 for (int i = 1; i <= numberOfPages; i++) { // 获取页面大小 Rectangle pageSize = reader.getPageSizeWithRotation(i); float pageWidth = pageSize.getWidth(); float pageHeight = pageSize.getHeight(); // 计算页面中心坐标 float centerX = pageWidth / 2; float centerY = pageHeight / 2; // 获取内容层 PdfContentByte under = stamper.getOverContent(i); under.beginText(); under.setGState(gs); under.setFontAndSize(font, fontSize); under.setColorFill(BaseColor.RED); // 设置文字居中对齐(关键) under.showTextAligned(Element.ALIGN_CENTER, text, centerX, centerY, 45); under.endText(); } } finally { if (stamper != null) { try { stamper.close(); } catch (Exception e) { e.printStackTrace(); } } if (reader != null) { reader.close(); } } } } 生成pdf与word排版不一致如何修改代码避免这个问题
08-08
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值