SVG to PDF: Simple and Effective Conversion Techniques
SVG (Scalable Vector Graphics) является форматом векторной графики, который позволяет создавать изображения, масштабируемые без потери качества. PDF (Portable Document Format) является форматом документа, который позволяет сохранять текст, изображения и другие элементы внутри одного файла.
Для того чтобы экспортировать SVG в PDF, можно использовать различные способы:
1. С помощью онлайн-конвертеров, таких как CloudConvert. В этом случае нужно загрузить файл SVG на сайт и выбрать PDF в качестве формата конвертации. После этого можно скачать готовый PDF-файл.
2. С помощью программного обеспечения, такого как Adobe Illustrator или Sketch. В этом случае необходимо открыть файл SVG в программе и экспортировать его в формате PDF. В Adobe Illustrator можно использовать следующий код:
javascript
var doc = app.documents.add();
var file = File.openDialog("Select an SVG file", "*.svg");
doc.artboards[0].artboardRect = file.bounds;
var rect = doc.pathItems.rectangle(0, 0, doc.width, doc.height);
rect.fillColor = doc.swatches.itemByName("None");
var placed = doc.placedItems.add();
placed.file = file;
placed.position = [0, 0];
var pdfExportOptions = new PDFSaveOptions();
var pdfFile = new File(file.path + "/" + file.name.replace(/\.svg$/i, ".pdf"));
doc.saveAs(pdfFile, pdfExportOptions);
doc.close();
Этот код создает новый документ в Adobe Illustrator, открывает диалоговое окно выбора файла SVG, задает размеры рабочей области документа на основе размеров файла SVG, добавляет прямоугольник без заливки, размещает файл SVG на верхнем слое и экспортирует документ в формате PDF.
3. С помощью библиотеки SVG2PDF. В этом случае можно использовать следующий код на языке Java:
java
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import org.apache.batik.svggen.SVGGraphics2D;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws Exception {
File svgFile = new File("image.svg");
FileInputStream svgStream = new FileInputStream(svgFile);
Scanner scanner = new Scanner(svgStream, "UTF-8");
StringBuilder stringBuilder = new StringBuilder();
while (scanner.hasNextLine()) {
stringBuilder.append(scanner.nextLine());
}
scanner.close();
XmlMapper xmlMapper = new XmlMapper();
SVGGraphics2D svgGraphics2D = new SVGGraphics2D(0, 0, svgFile.getWidth(), svgFile.getHeight());
xmlMapper.readValue(stringBuilder.toString(), org.w3c.dom.svg.SVGDocument.class).getRootElement().setPresentationAttribute("transform", "translate(0," + svgFile.getHeight() + ") scale(1,-1)");
xmlMapper.writeValue(svgGraphics2D.getOutputStream(), xmlMapper.readValue(stringBuilder.toString(), org.w3c.dom.svg.SVGDocument.class));
PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(new File("image.pdf")), "UTF-8");
svgGraphics2D.stream(page, outputStreamWriter);
outputStreamWriter.close();
document.save("image.pdf");
document.close();
}
}
Этот код считывает файл SVG в строковой форме, парсит его в объект SVGDocument с помощью XmlMapper, создает объект SVGGraphics2D с помощью Apache Batik, устанавливает преобразование для инвертации оси Y и масштабирования, рисует на странице PDF, сохраняет документ и закрывает его.
Таким образом, существуют разные способы экспорта SVG в PDF, в зависимости от используемых инструментов и языков программирования. В примерах кода показаны основные шаги, необходимые для конвертации файлов из одного формата в другой.