Don';I don’我不知道如何创建一个中心;图像+;“文本”;使用iText(Java)在pdf文件中添加水印
我正在使用iText库,并试图在页面底部添加水印。水印很简单,必须居中,左边是图像,右边是文本 在这一点上,我有一个png格式的图像和文本。我可以通过计算页面大小和图像大小来计算我想放置图像的位置(居中),但现在我想将文本作为文本包含(更好的易读性等) 我可以将图像和文本嵌入到某个组件中,然后像现在这样计算位置吗?其他解决方案或想法 这是我的实际代码:Don';I don’我不知道如何创建一个中心;图像+;“文本”;使用iText(Java)在pdf文件中添加水印,java,jakarta-ee,itext,watermark,Java,Jakarta Ee,Itext,Watermark,我正在使用iText库,并试图在页面底部添加水印。水印很简单,必须居中,左边是图像,右边是文本 在这一点上,我有一个png格式的图像和文本。我可以通过计算页面大小和图像大小来计算我想放置图像的位置(居中),但现在我想将文本作为文本包含(更好的易读性等) 我可以将图像和文本嵌入到某个组件中,然后像现在这样计算位置吗?其他解决方案或想法 这是我的实际代码: try { PdfReader reader = new PdfReader("example.pdf"); i
try {
PdfReader reader = new PdfReader("example.pdf");
int numPages = reader.getNumberOfPages();
PdfStamper stamp = new PdfStamper(reader, new FileOutputStream("pdfWithWatermark.pdf"));
int i = 0;
Image watermark = Image.getInstance("watermark.png");
PdfContentByte addMark;
while (i < numPages) {
i++;
float x = reader.getPageSizeWithRotation(i).getWidth() - watermark.getWidth();
watermark.setAbsolutePosition(x/2, 15);
addMark = stamp.getUnderContent(i);
addMark.addImage(watermark);
}
stamp.close();
}
catch (Exception i1) {
logger.info("Exception adding watermark.");
i1.printStackTrace();
}
试试看{
PdfReader reader=新的PdfReader(“example.pdf”);
int numPages=reader.getNumberOfPages();
PdfStamper stamp=新PdfStamper(读取器,新文件输出流(“pdfWithWatermark.pdf”);
int i=0;
图像水印=Image.getInstance(“watermark.png”);
PdfContentByte addMark;
而(i
提前谢谢你 有点难看,但是,你不能将图像和文本添加到表格中,然后将其居中吗?有点难看,但是,你不能将图像和文本添加到表格中,然后将其居中吗?你最好检查一下:
import com.lowagie.text.*;
import java.io.*;
import com.lowagie.text.pdf.*;
import java.util.*;
class pdfWatermark
{
public static void main(String args[])
{
try
{
PdfReader reader = new PdfReader("text.pdf");
int n = reader.getNumberOfPages();
// Create a stamper that will copy the document to a new file
PdfStamper stamp = new PdfStamper(reader,
new FileOutputStream("text1.pdf"));
int i = 1;
PdfContentByte under;
PdfContentByte over;
Image img = Image.getInstance("watermark.jpg");
BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA,
BaseFont.WINANSI, BaseFont.EMBEDDED);
img.setAbsolutePosition(200, 400);
while (i < n)
{
// Watermark under the existing page
under = stamp.getUnderContent(i);
under.addImage(img);
// Text over the existing page
over = stamp.getOverContent(i);
over.beginText();
over.setFontAndSize(bf, 18);
over.showText("page " + i);
over.endText();
i++;
}
stamp.close();
}
catch (Exception de)
{}
}
}
import com.lowagie.text.*;
导入java.io.*;
导入com.lowagie.text.pdf.*;
导入java.util.*;
类pdfWatermark
{
公共静态void main(字符串参数[])
{
尝试
{
PdfReader reader=新的PdfReader(“text.pdf”);
int n=reader.getNumberOfPages();
//创建将文档复制到新文件的压模
PdfStamper stamp=新PdfStamper(读卡器、,
新的FileOutputStream(“text1.pdf”);
int i=1;
下的PdfContentByte;
PdfContentByte超过;
Image img=Image.getInstance(“watermark.jpg”);
BaseFont bf=BaseFont.createFont(BaseFont.HELVETICA,
BaseFont.WINANSI,BaseFont.EMBEDDED);
img.设置绝对位置(200400);
而(i
()你最好检查一下:
import com.lowagie.text.*;
import java.io.*;
import com.lowagie.text.pdf.*;
import java.util.*;
class pdfWatermark
{
public static void main(String args[])
{
try
{
PdfReader reader = new PdfReader("text.pdf");
int n = reader.getNumberOfPages();
// Create a stamper that will copy the document to a new file
PdfStamper stamp = new PdfStamper(reader,
new FileOutputStream("text1.pdf"));
int i = 1;
PdfContentByte under;
PdfContentByte over;
Image img = Image.getInstance("watermark.jpg");
BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA,
BaseFont.WINANSI, BaseFont.EMBEDDED);
img.setAbsolutePosition(200, 400);
while (i < n)
{
// Watermark under the existing page
under = stamp.getUnderContent(i);
under.addImage(img);
// Text over the existing page
over = stamp.getOverContent(i);
over.beginText();
over.setFontAndSize(bf, 18);
over.showText("page " + i);
over.endText();
i++;
}
stamp.close();
}
catch (Exception de)
{}
}
}
import com.lowagie.text.*;
导入java.io.*;
导入com.lowagie.text.pdf.*;
导入java.util.*;
类pdfWatermark
{
公共静态void main(字符串参数[])
{
尝试
{
PdfReader reader=新的PdfReader(“text.pdf”);
int n=reader.getNumberOfPages();
//创建将文档复制到新文件的压模
PdfStamper stamp=新PdfStamper(读卡器、,
新的FileOutputStream(“text1.pdf”);
int i=1;
下的PdfContentByte;
PdfContentByte超过;
Image img=Image.getInstance(“watermark.jpg”);
BaseFont bf=BaseFont.createFont(BaseFont.HELVETICA,
BaseFont.WINANSI,BaseFont.EMBEDDED);
img.设置绝对位置(200400);
而(i
()我会寻找一个文本到png的解决方案(java.awt.Graphics.drawString()?),并使用一个图形API将这两个解决方案放在一起。重点是我不想将文本放在png格式,我需要将其放在“文本模式”。我会寻找一个文本到png的解决方案(java.awt.Graphics.drawString()?)并使用图形API将2放在一起。重点是我不想将文本放在PNG格式,我需要将其放在“文本模式”中。单独的链接是因为它本身没有意义,并且目标资源不保证在将来仍然存在。请尝试至少包含您链接到的信息摘要。单独链接是因为它本身没有意义,并且目标资源不保证在将来仍然存在。请尝试至少包含您链接到的信息摘要。