itextpdf戳记不起作用 import java.io.FileOutputStream; 导入com.itextpdf.text.Image; 导入com.itextpdf.text.pdf.PdfContentByte; 导入com.itextpdf.text.pdf.PdfReader; 导入com.itextpdf.text.pdf.PdfStamper; public类将水印图像添加到下一个现有PDF文件{ 公共静态void main(字符串[]args){ 试一试{ PdfReader reader=新的PdfReader(“7189D0930.pdf”); int n=reader.getNumberOfPages(); PdfStamper stamp=新PdfStamper(读卡器,新文件输出流(“NewPDFWithWatermarkImage.pdf”); int i=0; 下的PdfContentByte; Image img=Image.getInstance(“logo.png”); img.设置绝对位置(200400); 而(i
我尝试过跟踪,但我没有足够的知识来完全理解Itext类中发生的事情。我只需要能够水印的pdf。我正在使用itext,因为我将不得不在500-600之间添加水印,并将对其进行修改,以便它可以在记事本文件中读取所有名称。简单地说,我运行程序,它生成pdf,但没有证据表明它可以打开.png文件,但由于任何原因,最终的pdf上没有 您正在现有内容下添加水印。如果现有内容是不透明的,你看不到它是很正常的(尽管它在那里)itextpdf戳记不起作用 import java.io.FileOutputStream; 导入com.itextpdf.text.Image; 导入com.itextpdf.text.pdf.PdfContentByte; 导入com.itextpdf.text.pdf.PdfReader; 导入com.itextpdf.text.pdf.PdfStamper; public类将水印图像添加到下一个现有PDF文件{ 公共静态void main(字符串[]args){ 试一试{ PdfReader reader=新的PdfReader(“7189D0930.pdf”); int n=reader.getNumberOfPages(); PdfStamper stamp=新PdfStamper(读卡器,新文件输出流(“NewPDFWithWatermarkImage.pdf”); int i=0; 下的PdfContentByte; Image img=Image.getInstance(“logo.png”); img.设置绝对位置(200400); 而(i,java,pdf,itext,Java,Pdf,Itext,我尝试过跟踪,但我没有足够的知识来完全理解Itext类中发生的事情。我只需要能够水印的pdf。我正在使用itext,因为我将不得不在500-600之间添加水印,并将对其进行修改,以便它可以在记事本文件中读取所有名称。简单地说,我运行程序,它生成pdf,但没有证据表明它可以打开.png文件,但由于任何原因,最终的pdf上没有 您正在现有内容下添加水印。如果现有内容是不透明的,你看不到它是很正常的(尽管它在那里) 您正在位置200400处添加水印。可能您正在页面可见区域之外添加水印。例如:页面可以定
您正在位置200400处添加水印。可能您正在页面可见区域之外添加水印。例如:页面可以定义为矩形:[595,01190842]。这是一张A4纸的肖像画,但如果你在位置200400处添加水印,你就是在可见区域的左侧添加水印。它就在那里,但由于它在媒体盒外面,你看不到它 至于你对“它不起作用”的评论,请阅读 用这些词来表达一个问题是不礼貌的。 在这种情况下,它可能会起作用:添加水印时,文件大小会增加。主要问题是没有在正确的坐标处添加它 另请阅读:
您会明白,您的问题可能会以重复的形式结束。您的代码本身在我的计算机上提供了预期的结果,这意味着问题可能存在于您的原始pdf中
如果内容不透明,您可以通过在*over*内容中添加带有alpha的徽标(使用带有alpha的徽标,我的意思是整个徽标是75%透明的,因此可以看到下面的内容)来找到一个有效的解决方案。您知道我指的是一个具有二进制操作的特定命令。它做它想做或不想做的事。如果我明白为什么会搞砸,我就不会在这里了。原始pdf的内容是图像还是文本?我对一些白色区域“覆盖”屏幕的图像有问题watermark@PATRY看起来是导入到pdf中的cad。我可以突出显示那里的文本。我还注意到,如果我进一步缩小一秒钟,我可以在空白背景下看到水印。如果你把徽标放在内容过多而不是内容不足的地方,你能看到它吗?如果是这样,我在下面描述了一个解决方案。
import java.io.FileOutputStream;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
public class AddWatermarkImageToAnExistingPDFFile {
public static void main(String[] args) {
try {
PdfReader reader = new PdfReader("7189D0930.pdf");
int n = reader.getNumberOfPages();
PdfStamper stamp = new PdfStamper(reader, new FileOutputStream("NewPDFWithWatermarkImage.pdf"));
int i = 0;
PdfContentByte under;
Image img = Image.getInstance("logo.png");
img.setAbsolutePosition(200, 400);
while (i < n) {
i++;
under = stamp.getUnderContent(i);
under.addImage(img);
}
stamp.close();
}
catch (Exception de) {
de.printStackTrace();
}
}
}