[英]java itext7 watermark text is hiding behind images
我嘗試在 pdf 中使用 itext 添加水印。 使用此代碼可以毫無問題地工作:
import com.itextpdf.io.font.constants.StandardFonts;
import com.itextpdf.kernel.colors.ColorConstants;
import com.itextpdf.kernel.colors.PatternColor;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
import com.itextpdf.kernel.pdf.canvas.PdfPatternCanvas;
import com.itextpdf.kernel.pdf.colorspace.PdfPattern;
import com.itextpdf.kernel.pdf.colorspace.PdfPattern.Tiling;
import com.itextpdf.layout.Canvas;
import com.itextpdf.layout.element.Paragraph;
public class TestNewPdf {
@SuppressWarnings("resource")
public static void main(String[] args) throws Exception {
PdfReader reader = new PdfReader("F:/barcode/test.pdf");
PdfWriter writer = new PdfWriter("F:/barcode/outputTest.pdf");
PdfDocument pdfDocument = new PdfDocument(reader,writer);
PdfPattern.Tiling tiling = new Tiling(new Rectangle(220, 100));
new Canvas(new PdfPatternCanvas(tiling, pdfDocument), pdfDocument, tiling.getBBox()).add(new Paragraph("franco")
.setFontColor(ColorConstants.RED)
.setBold()
.setFont(PdfFontFactory.createFont(StandardFonts.HELVETICA_BOLD))
.setFontSize(10f)
.setRotationAngle(Math.PI / 10)
);
for (int i = 1; i <= pdfDocument.getNumberOfPages(); i++) {
PdfPage page = pdfDocument.getPage(i);
new PdfCanvas(page.newContentStreamBefore(), page.getResources(), pdfDocument)
.saveState()
.setFillColor(new PatternColor(tiling))
.rectangle(page.getCropBox())
.fill()
.restoreState();
}
pdfDocument.close();
}
}
但是當源 pdf 包含圖像或源 pdf 是掃描文件意味着 pdf 變得像圖像時,我在特定情況下遇到問題。
水印文本隱藏在圖像后面
有人可以幫我解決這個問題嗎
您使用page.newContentStreamBefore()
為您的水印添加內容 stream 。 因此,在繪制頁面時,首先繪制水印,然后在其上繪制內容。 對於通常的文本和稀疏矢量圖形來說,這很好,但對於覆蓋內容的整個區域,水印可能會被完全隱藏。
嘗試改用page.newContentStreamAfter()
。 但請注意,您可能不想再將水印文本加粗,甚至可能僅限於輪廓,因為標記現在涵蓋了內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.