概述
最近因工作需要,想要實現將SVG格式轉換成PDF,同時還希望能夠將SVG格式的文檔內容完整地插入到已有的PDF中。經過多方位調查和測試,發現Spire.PDF for Java控件能夠實現以上兩種功能。現將演示代碼分享出來,方便有需求的人蔘考。
在運行代碼前,需要將產品依賴包導入IDEA中。導入方式有兩種:其一,在官網上下載最新版Spire.PDF for Java 3.10.5產品包,解壓後將lib文件夾下的Spire.Pdf.jar手動導入IDEA中;其二(推薦使用),在IDEA中創建一個Maven項目,然後在pom.xml文件中鍵入以下代碼,最後點擊“Import Changes”即可。
<repositories>
<repository>
<id>com.e-iceblue</id>
<url>http://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId> e-iceblue </groupId>
<artifactId>spire.pdf</artifactId>
<version>3.10.5</version>
</dependency>
</dependencies>
最終導入效果如下圖所示:
代碼示例:
示例SVG文檔如下:
【示例1】插入SVG到PDF
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.graphics.PdfTemplate;
import java.awt.geom.Point2D;
public class InsertSVG {
public static void main(String[] args) {
//加載示例SVG文檔
PdfDocument doc1 = new PdfDocument();
doc1.loadFromSvg("C:\\Users\\Test1\\Desktop\\Sample.svg");
//加載示例PDF文檔
PdfDocument doc2 = new PdfDocument();
doc2.loadFromFile("C:\\Users\\Test1\\Desktop\\Test.pdf");
//將SVG文檔內容插入到PDF文檔中
PdfTemplate template = doc1.getPages().get(0).createTemplate();
template.draw(doc2.getPages().get(0).getCanvas(),new Point2D.Float());
//保存結果文檔
doc2.saveToFile("output/InsertSVG.pdf", FileFormat.PDF);
}
}
效果圖:
【示例2】將SVG轉換成PDF
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
public class SVGToPDF {
public static void main(String[] args) {
//加載示例SVG文檔
PdfDocument doc = new PdfDocument();
doc.loadFromSvg("C:\\Users\\Test1\\Desktop\\Sample.svg");
//保存爲PDF文檔
doc.saveToFile("output/ToPDF.pdf", FileFormat.PDF);
}
}
效果圖:
總結
Spire.PDF for Java除了支持將SVG轉換成PDF外,還支持其他許多轉換功能,比如,將PDF轉換成PDF/A, Word, Excel, HTML, SVG, XPS等。有其他轉換需求的朋友也可以一試。