0
iText7を使用してPDFファイルを生成しています。私はPDF文書にsvgファイルを追加する際に助けが必要です。 svgファイルは、URLを使用してリモートロケーションから取得する必要があります。IText7を使用してSVG画像をPDFに追加
iText7を使用してPDFファイルを生成しています。私はPDF文書にsvgファイルを追加する際に助けが必要です。 svgファイルは、URLを使用してリモートロケーションから取得する必要があります。IText7を使用してSVG画像をPDFに追加
私はこれをapache batikライブラリを使用して取得できました。ここに私がそれをした方法があります。 SvgImage
ためMavenの依存
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>batik-transcoder</artifactId>
<version>1.9</version>
</dependency>
カスタムITagWorker
import com.itextpdf.html2pdf.attach.ITagWorker;
import com.itextpdf.html2pdf.attach.ProcessorContext;
import com.itextpdf.html2pdf.html.node.IElementNode;
import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.layout.IPropertyContainer;
import com.itextpdf.layout.element.Image;
import org.apache.batik.transcoder.TranscoderInput;
import org.apache.batik.transcoder.TranscoderOutput;
import org.apache.batik.transcoder.image.JPEGTranscoder;
import java.io.ByteArrayOutputStream;
public class SvgImageWorker implements ITagWorker {
private Image img;
@Override
public void processEnd(IElementNode iElementNode, ProcessorContext processorContext) {
String url = iElementNode.getAttribute("src");
JPEGTranscoder jpegTranscoder = new JPEGTranscoder();
// Set the transcoding hints.
jpegTranscoder.addTranscodingHint(JPEGTranscoder.KEY_QUALITY, new Float(.8));
// Create the transcoder input.
try {
TranscoderInput input = new TranscoderInput(url);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(10000);
TranscoderOutput output = new TranscoderOutput(byteArrayOutputStream);
// Save the image.
jpegTranscoder.transcode(input, output);
img = new Image(ImageDataFactory.create(byteArrayOutputStream.toByteArray()));
byteArrayOutputStream.flush();
byteArrayOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public boolean processContent(String s, ProcessorContext processorContext) {
return false;
}
@Override
public boolean processTagChild(ITagWorker iTagWorker, ProcessorContext processorContext) {
return false;
}
@Override
public IPropertyContainer getElementResult() {
return img;
}
}
使用ApacheのバティックビットマップイメージにあなたのSVGファイルを変換して、PDF文書にそれを追加します。 –
共有できるコードサンプルはありますか?それは大きな助けになるでしょう。 –
実際のコードを書くことは、読者の練習として残されています。 –