Как добавить SVG в PDF с помощью iText7 - PullRequest
0 голосов
/ 27 апреля 2018

Мне нужно добавить SVG-изображение в PDF-файл.

Возможно ли это с помощью iText7?

Использование iText5:

BufferedReader in = new BufferedReader(new InputStreamReader(svgUrl.openStream()));
String xmlParser = XMLResourceDescriptor.getXMLParserClassName();

SVGDocument svgDoc = new SAXSVGDocumentFactory(xmlParser).createSVGDocument(null, in);
in.close();


// Try to read embedded height and width
float svgWidth = Float.parseFloat(svgDoc.getDocumentElement().getAttribute("width").replaceAll("[^0-9.,]",""));
float svgHeight = Float.parseFloat(svgDoc.getDocumentElement().getAttribute("height").replaceAll("[^0-9.,]",""));

PdfTemplate svgTempl = PdfTemplate.createTemplate(writer, svgWidth, svgHeight);
Graphics2D g2d = svgTempl.createGraphics(svgWidth,svgHeight);          

GraphicsNode chartGfx = (new GVTBuilder()).build(new BridgeContext(new UserAgentAdapter()), svgDoc);
chartGfx.paint(g2d);
g2d.dispose();

Image img = new ImgTemplate(svgTempl);

Я узнал об этом на следующей странице: PdfPTable и PdfTemplate

есть способ создать что-то похожее на шаблон:

PdfFormXObject svgTempl = new PdfFormXObject(new Rectangle(svgWidth, svgHeight));

Как я могу создать Graphics2D?

1 Ответ

0 голосов
/ 27 апреля 2018

По совпадению, мы выпускаем нашу реализацию SVG сегодня. Пока мы не поддерживаем полный набор функций, мы все еще работаем над этим во втором квартале и за его пределами, но вы уже можете использовать его. Артефакт находится на Maven . Хранилище находится на Github . А документация есть в нашей общедоступной вики .

Примеры кода будут размещены на веб-сайте, но это очень простой API, аналогичный тому, как работает pdfHtml. Существует служебный класс SvgConverter, который предлагает несколько способов преобразования в PDF или PDF XObjects.

PdfDocument doc = new PdfDocument(
  new PdfWriter(pdfOutputStream, 
    new WriterProperties().setCompressionLevel(0)));
doc.addNewPage();
SvgConverter.drawOnDocument(svg, doc, 1);
doc.close();

Источник: я разработчик iText, работаю над реализацией SVG

...