iText7将SVG添加到PdfDocument中,并在PDF中正确对齐SVG图像

时间:2019-01-18 19:59:20

标签: image pdf svg pdf-generation itext7

我可以使用以下代码在SVG图片中添加SVG图片,但图片对齐方式会令人费解。我想将图像保留在狭窄的区域内(假设总是300 x 300尺寸)。如果图像较大,则应缩小/压缩并适合此尺寸。我们如何实现这一目标。

private creditCardService: CreditCardService

除了上述问题外,SvgConverter的drawOnDocument()方法还为我们提供了通过x和y坐标放置svg的控件。有没有更好的方法来处理位置? (如左上,右上)

1 个答案:

答案 0 :(得分:1)

在您的代码中,您正在处理非常底层的API。尽管您的任务很简单,并且这里使用低级API仍然足够,但是使用高级布局API可以更快地实现目标。

首先,您可以重用代码来创建PdfDocument并定义SVG图片的URL:

PdfDocument doc = new PdfDocument(new PdfWriter(new FileOutputStream(new File("D:\\test.pdf")),
        new WriterProperties().setCompressionLevel(0)));
String svgPath = "...svgPathHere";

然后,您可以将其从Image API中转换为layout对象,而不是立即在页面上绘制SVG图像,您可以对其进行配置:缩放以适合特定尺寸,设置固定位置(左下角),依此类推:

Image image = SvgConverter.convertToImage(new FileInputStream(svgPath), doc);
image.setFixedPosition(100, 200);
image.scaleToFit(300, 300);

要将所有内容捆绑在一起,请创建高级Document对象,然后在其中添加图片。不要忘记关闭Document实例。您不再需要关闭原始的PdfDocument

Document layoutDoc = new Document(doc);
layoutDoc.add(image);

layoutDoc.close();