如何使用iText7将SVG添加至PDF?附iText5实现代码
当然可以用iText7实现SVG添加到PDF的需求!相比iText5,iText7专门推出了itext7-svg模块,让SVG的处理更加模块化、简洁。下面我会给你对应iText5实现的iText7版本代码,以及关键步骤的说明:
第一步:引入依赖
首先确保你的项目中包含iText7核心库和SVG处理模块(以Maven为例):
<dependency> <groupId>com.itextpdf</groupId> <artifactId>itext7-core</artifactId> <version>7.2.5</version> <type>pom</type> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>svg</artifactId> <version>7.2.5</version> </dependency>
第二步:实现代码示例
对应你提供的iText5代码,iText7的实现会更简洁,不需要手动解析SVG文档获取宽高(模块会自动处理,也支持自定义尺寸):
import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.layout.Document; import com.itextpdf.layout.element.Image; import com.itextpdf.svg.converter.SvgConverter; import java.io.InputStream; import java.net.URL; public class SvgToPdfExample { public static void main(String[] args) throws Exception { // 输出PDF路径 String pdfPath = "output.pdf"; // SVG资源URL URL svgUrl = new URL("your-svg-url-here"); // 初始化PDF文档 PdfDocument pdfDoc = new PdfDocument(new PdfWriter(pdfPath)); Document doc = new Document(pdfDoc); try (InputStream svgStream = svgUrl.openStream()) { // 将SVG转换为PdfFormXObject,iText7会自动解析SVG的宽高 Image svgImage = SvgConverter.convertToImage(svgStream, pdfDoc); // 如果需要自定义尺寸,可以手动设置(比如缩放) // svgImage.scaleToFit(500, 500); // 将SVG图片添加到PDF文档 doc.add(svgImage); } // 关闭文档 doc.close(); } }
关键说明
- 自动解析尺寸:
SvgConverter.convertToImage()方法会自动读取SVG根元素的width和height属性,无需像iText5那样手动解析XML文档。 - 自定义尺寸:如果SVG没有指定宽高,或者需要调整显示大小,可以通过
scaleToFit()、setWidth()/setHeight()等方法修改图片尺寸。 - 资源处理:iText7的SVG模块会自动处理SVG中的内嵌资源(如字体、图片),比iText5的兼容性更好。
如果你的SVG有特殊样式或复杂结构,iText7的SVG模块也支持大部分标准SVG特性,能很好地兼容常见的SVG文件。
内容的提问来源于stack exchange,提问作者Ap Tsi
相关产品推荐
相关产品推荐

