1

Надеюсь, что я что-то делаю не так, но если мои подозрения верны и это ошибка, я отправлю сообщение об ошибке.

У меня есть файл SVG (первоначально нарисованный Matplotlib, но я подозреваю, что это не имеет значения). Я масштабировал только некоторые пути по высоте (и обрезал их), теперь, когда я загружаю pdf в evince, gimp или gv * - но не в inkscape - ширина штриха также масштабируется по высоте, хотя у меня не было масштаба Штрих при масштабировании влияет на выбранный.

Открываем pdf в inkscape и экспортируем как .png:

открывая тот же pdf в Gimp:

некоторые немасштабированные пути также видны слева.

Что я могу с этим поделать? Мне действительно нужно работать над svg, а не возвращаться к обработке данных и изменению кода в matplotlib, и мне нужно масштабировать до целого числа, печатая, а не перетаскивая.

Редактировать: * Я только что установил Foxit на моем Windows VM - так же, как все, кроме Inkscape

Edit2: вот минимальный (ish) svg, который показывает проблему (действительно, без загрузки SVG?):

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   version="1.1"
   width="86.874992"
   height="33.008114"
   viewBox="0 0 69.499992 26.406493"
   id="svg2">
  <metadata
     id="metadata1778">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <defs
     id="defs4"
     style="stroke-linecap:square;stroke-linejoin:round">
    <style
       type="text/css"
       id="style6" />
  </defs>
  <path
     d="m 73.4966,215.574 2.6784,0.104 5.9148,0.341 11.9412,-0.054 21.874,-0.079 9.597,-0.184 4.911,-0.321 2.901,-0.402 4.018,-0.785 0.446,-0.378 0.447,-0.689 0.446,-1.086 0.558,-2.019 0.67,-3.471 0.781,-5.406 1.227,-10.454"
     transform="translate(-72.968769,-190.125)"
     clip-path="url(#p19969a3f5c)"
     id="path722"
     style="fill:#ff0000;stroke:#0000ff;stroke-width:1;stroke-linecap:square;stroke-linejoin:round" />
  <defs
     id="defs1765">
    <clipPath
       id="p19969a3f5c">
      <rect
         width="446.39999"
         height="101.64706"
         x="72"
         y="165.17647"
         id="rect1774"
         style="stroke-linecap:square;stroke-linejoin:round" />
    </clipPath>
  </defs>
</svg>

* Чтобы продемонстрировать, растяните только по высоте, затем сохраните в формате PDF и откройте в выбранном вами средстве просмотра (кроме inkscape).

Обратите внимание, что я добавил заливку, чтобы доказать, что это просто путь, а не масштабируемый объект

Больше новой информации - если я удаляю клип, он масштабируется как надо *

1 ответ1

0

В конце я сделал то, что сказал в своем комментарии, но я все еще думаю, что должно быть реальное решение. У меня было только 4 пути в одном файле (на самом деле я видел это раньше, но соотношение сторон шкалы было не таким плохим, и у меня не было времени об этом беспокоиться).

Вот что я сделал:

  • Обратите внимание на идентификаторы объектов путей, которые я хотел редактировать
  • откройте файл .svg в jEdit
  • Найти каждый путь по очереди
  • работать над атрибутом d
  • заменить "" на "\n"
  • скопировать в libreoffice calc
  • умножьте 2-й столбец, за исключением первых 2 строк (только 2-й из которых был числовым) и последней строки на 20 (мой коэффициент масштабирования)
  • вернуться к JEdit
  • замените "\t" на "," (за исключением после "m", когда он был только что удален
  • замените "\n" на ""
  • наклеить на исходный путь

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .