You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Itext 5.5.13.3是否支持PDF透明背景?求实现方法及文档

iText 5.5.13.3 透明/无背景PDF实现方案

一、版本支持说明

iText 5.5.13.3完全支持PDF内容的透明度设置,包括图片水印的透明效果、无背景的PDF页面导出,这属于PDF标准的透明度特性范畴,该版本对这部分特性的实现是完善的。

二、图片透明度(水印场景)实现方法

给图片添加透明度的核心是通过PdfGState设置透明度参数,再将图片与该状态关联后写入PDF:

import com.itextpdf.text.Document;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfGState;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.FileOutputStream;

public class TransparentWatermark {
    public static void main(String[] args) throws Exception {
        Document document = new Document();
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("watermark_demo.pdf"));
        document.open();
        
        // 加载目标图片
        Image watermarkImg = Image.getInstance("your_watermark.png");
        // 调整图片位置(示例:页面居中)
        watermarkImg.setAbsolutePosition(
            (document.getPageSize().getWidth() - watermarkImg.getWidth()) / 2,
            (document.getPageSize().getHeight() - watermarkImg.getHeight()) / 2
        );
        
        // 获取背景层内容流,设置透明度状态
        PdfContentByte contentByte = writer.getDirectContentUnder();
        PdfGState gState = new PdfGState();
        // 设置透明度值:0=完全透明,1=完全不透明
        gState.setFillOpacity(0.3f);
        contentByte.setGState(gState);
        
        // 将透明图片写入PDF背景层
        contentByte.addImage(watermarkImg);
        
        document.close();
        writer.close();
    }
}
  • 关键逻辑:PdfGState的setFillOpacity控制填充透明度,写入getDirectContentUnder()可实现背景水印效果,若需前景水印则改用getDirectContent()。

三、无背景PDF页面实现

若要导出透明背景的PDF页面,只需禁用iText默认添加的白色页面背景:

import com.itextpdf.text.Document;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.FileOutputStream;

public class TransparentPage {
    public static void main(String[] args) throws Exception {
        Document document = new Document(PageSize.A4);
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("transparent_page.pdf"));
        document.open();
        
        // 阻止iText自动添加白色页面背景
        writer.setPageEmpty(false);
        
        // 在此添加PDF内容(文本、图片等),页面背景将保持透明
        
        document.close();
        writer.close();
    }
}

四、官方参考依据

iText 5的官方API文档中,透明度相关的核心说明集中在以下类:

  • com.itextpdf.text.pdf.PdfGState:负责配置图形状态,包括透明度、颜色混合模式等参数
  • com.itextpdf.text.pdf.PdfContentByte:用于直接操作PDF内容流,实现图形状态与内容的绑定

内容的提问来源于stack exchange,提问作者Meta Ace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 19:48:25