Можно ли экспортировать специальные символы / кириллические буквы в метки сюжета при экспорте графики в PDF? - PullRequest
7 голосов
/ 16 июня 2011

Я пытаюсь экспортировать список графики в виде отдельных кадров в формате PDF, чтобы затем скомпилировать векторную SWF-анимацию с помощью внешней утилиты (такой как pdf2swf). К сожалению, некоторые специальные символы (например, знак степени или тройные точки) повреждены в экспортированных файлах PDF. Это также судьба всех русских букв. Обратите внимание, что Mathematica растеризует графику в списке, когда она напрямую экспортируется из Mma в SWF, что в моем случае дает неудовлетворительные результаты.

Есть ли способ сохранить эти буквы в экспортированной графике?

Отдельную графику можно редактировать вручную в графических редакторах, но вряд ли это возможно для сотен кадров для видео. Некоторые символы могут быть сохранены с помощью следующей пользовательской функции:

ExportPDF[filename_, elem_, 
  opts : OptionsPattern[{Export, Outlines -> True}]] := Module[{$elem},
  $elem = Style[elem, Background -> None];
 If[OptionValue[Outlines] == True
   , $elem = 
    First@ImportString[ExportString[$elem, "PDF"], "PDF", 
      "TextMode" -> "Outlines"]
   ];
  Export[filename, $elem, FilterRules[{opts}, Options[Export]]]
 ]

К сожалению, это не всегда помогает.

Ответы [ 2 ]

6 голосов
/ 16 июня 2011

Один из обходных путей - экспорт в EMF вместо формата PDF:

Export["C:\\1.emf", 
 Plot[Sin[x], {x, 0, Pi}, PlotLabel -> 
   "\:0420\:0443\:0441\:0441\:043a\:0438\:0435 \:0431\:0443\:043a\:0432\:044b"]]

Вы можете дополнительно преобразовать EMF в PDF или SWF, если хотите.См. здесь общие советы по высококачественному экспорту ЭМП из Mathematica .

Еще один надежный способ, на первый взгляд, заключается в преобразовании только кириллического текста вконтуры и затем поместите его в графику с помощью Inset или Labeled:

plotLabel = 
  First@ImportString[ExportString[
    "\:0420\:0443\:0441\:0441\:043a\:0438\:0435 \:0431\:0443\:043a\:0432\:044b",
       "PDF"], "PDF"];
Labeled[Plot[Sin[x], {x, 0, Pi}], plotLabel, Top]

Или вы можете использовать выделенный текст непосредственно как PlotLabel:

Export["C:\\1.pdf", Plot[Sin[x], {x, 0, Pi}, PlotLabel -> plotLabel]]

YouМожно обобщить этот метод, написав простую процедуру:

cyrFix = First@ImportString[ExportString[#, "PDF"], "PDF"] &

Вы можете использовать его следующим образом:

Export["C:\\1.pdf", 
 Plot[Sin[x], {x, 0, Pi}, PlotLabel -> 
  cyrFix@"\:0420\:0443\:0441\:0441\:043a\:0438\:0435 \:0431\:0443\:043a\:0432\:044b"]]
0 голосов
/ 13 сентября 2011

Экспорт PDF в Mathematica не поддерживает одновременно кириллицу, только римские, греческие, японские и некоторые технические символы. Если вы используете Mac, вы можете выбрать File> Print> Save As PDF в качестве временного решения.

...