我正在使用以下代码摄取 AWT 图像(从 PDF,通过 PDFBox):
private java.awt.Graphics2D graphics;
public void drawImage(java.awt.Image awtImage, java.awt.geom.AffineTransform at) {
graphics.setComposite(getGraphicsState().getStrokeJavaComposite());
graphics.setClip(getGraphicsState().getCurrentClippingPath());
graphics.drawImage( awtImage, at, null );
}
并希望将图像捕获/输出为 SVG。我一直在使用 Batik 库,它生成以下形式的 svg
<image x="0" y="0" transform="matrix(0.144,0,0,0.1439,251.521,271.844)"
clip-path="url(#clipPath2)" width="1797" xlink:href="data:image/png;
base64,iVBORw0KGgoAAAANSUhEUgAABwUAAAV4CAMAAAB2DvLsAAADAFBMVEX////+/v56
enpWVlZbW1taWlpZWVnHx8eRkZFVVVWMjIysrKxXV1dYWFhqamr5+fnMzMxeXl7c
3NyUlJR/f3+3t7cAAACGhob29vYpKSliYmJPT083Nzf8/PyBgYENDQ3s7OwwMDD1
...
RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
RPQP/R8CiIK+y8Q6KQAAAABJRU5ErkJggg==" height="1400"
preserveAspectRatio="none" stroke-width="0" xmlns:xlink="http://www.w3.org/1999/xlink"/>
我有自己的 SVG 库,并且想向我的 SVGImage 类添加方法以生成类似的内容。我是否需要将 AffineTransformation 应用于数据,如果需要如何?
如果有人指出可以做到这一点的适当(F/OSS)方法或库,我将不胜感激。数据应该是内联的(如上面的示例)并且符合 XML。
更新:在没有任何答案或评论的情况下,我不得不编写自己的实现。这并不完全是微不足道的,可能不是健壮的或最好的解决方案。我将其作为答案附加 - 如果它有缺陷或可以改进,请发表评论。