батик: SVG в PDF на Linux (без X-сервера) - PullRequest
2 голосов
/ 16 февраля 2012

Аналогично подходу в Преобразование SVG в PDF преобразование svg2pdf успешно выполняется под окнами, а текстовые элементы доступны для поиска в полученном PDF-файле.Он также создает pdfs (с -Djava.awt.headless = true, чтобы избежать исключений из-за отсутствия оконного сервера X11) в Linux (Ubuntu), но текстовые элементы не доступны для поиска и иногда даже кодируются как изображения.

Можно ли также сохранить текст в pdf под linux, мне не хватает некоторых параметров времени выполнения?

UPD: могу ли я каким-то образом заставить batik (SVGGraphics2D или SVGConverter) вернуться к шрифту по умолчанию, если определенный шрифтне был найден?

Ответы [ 4 ]

2 голосов
/ 17 февраля 2012

Решено по следующему рецепту:

http://batik.2283329.n4.nabble.com/Placing-SVG-Text-into-PDF-td3778127.html

основные шаги:

  1. скомпилируйте fop с муравьем all
  2. copy fop-transcoder-allinone.jar с именем pdf-transcoder.jar в путь к классам
  3. скопировать xmlgraphics-commons-1.4.jar из каталога lib fop в путь к классам
1 голос
/ 20 февраля 2012

Если вы хотите скопировать шрифт из Windows в Linux, вам нужно только скопировать файл .ttf в нужное место (примечание: некоторые шрифты защищены авторским правом, и вам нужно разрешение на их установку).Нет необходимости помещать их в какой-либо реестр.

Чтобы сделать их доступными в Java, у вас есть две опции:

  1. Вы можете установить переменную среды JAVA_FONTS перед запуском batik

  2. Открыть font.properties файл в каталоге jre/lib, неудобно и установить соответствующий каталог шрифтов:

    appendedfontpath=/usr/share/fonts/truetype
    
0 голосов
/ 25 апреля 2014

Попробуйте добавить определения (с URL) для тех шрифтов, которые вы хотите использовать:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="745" height="300" xml:space="preserve" xmlns:xml="http://www.w3.org/XML/1998/namespace">
    <desc>TEST</desc>
    <defs>
        <style type="text/css">
            @font-face {
                font-family: "font";
                src: url('COMPLETE URL TO TTF FILE eg. http://example.com/font.ttf') format('truetype');
            }
        </style>
    </defs>
    <g transform="translate(174.5 53)">
        <text font-family="font" font-size="40" font-weight="normal" style="stroke: none; stroke-width: 1; stroke-dasharray: ; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: #333; opacity: 1;" transform="translate(-98.5 39)">
            <tspan x="0" y="-26" fill="#333">TEXT THAT YOU WANT TO DISPLAY</tspan>
        </text>
    </g>
</svg>

У меня была такая же проблема. Одна вещь, которую я забыл в svg, была type = "text / css" .

0 голосов
/ 16 февраля 2012

установить imagemagick.Затем вызовите команду convert:

convert doc.svg doc.pdf

, которая преобразуется в PDF.

...