2012-02-16 3 views
2

Как и подход в Convert SVG to PDF Преобразование svg2pdf успешно выполняется под окнами, а текстовые элементы можно найти в полученном pdf формате. Он создает pdf-файлы (с -Djava.awt.headless = true, чтобы избежать исключений из-за отсутствия оконного сервера X11) под linux (Ubuntu), но текстовые элементы не доступны для поиска, а иногда даже кодируются как изображения.batik: svg to pdf на linux (нет X-сервера)

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

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

+0

Нечетные. Все ли шрифты доступны на обеих машинах? Вы пытались использовать стандартные PDF-шрифты (Times New Roman, ...) или используете пользовательские шрифты TrueType? –

+0

@AaronDigulla Я не управляю шрифтами, потому что они происходят из файлов pptx случайной сортировки. Цикл: pptx-> svg_files-> pdf_files-> one_pdf_file. Но доступность шрифтов была моей первой заботой. Могу ли я каким-то образом скопировать шрифты из окна win-> linux? –

+0

из (предложенный @Rok Kralj) imagemagick's 'ident-list format' cmd. Я вижу, что коллекция шрифтов TrueType полностью отсутствует из моего linux-окна.Это, похоже, проблема с батиком –

ответ

2

решаемые следуя рецепту здесь:

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

основные этапы:

  1. компилировать ФОП с муравьиной все
  2. копия ФОП-транскодер-allinone.jar под названием PDF-транскодер .jar в путь к классам
  3. copy xmlgraphics-commons-1.4.jar из каталога lib fop в путь к классам
0

установить imagemagick. Затем позвоните:

convert doc.svg doc.pdf 

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

+0

Sory, typo .. :) –

+0

спасибо за указание, давая ему попробовать .. –

+0

hm, преобразование создает примитивное определение примитивного рисунка 'Dialog '' '@ draw.c/DrawImage/3140. –

1

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

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

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

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

    appendedfontpath=/usr/share/fonts/truetype 
    
+0

Это действительно полезно, спасибо большое. Я копирую шрифты в данный момент и буду включать их также, так как некоторые преобразования под linux имели дополнительные пробелы между буквами –

0

Попробуйте добавить определения (с 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".

Смежные вопросы