Лучший способ вставить качественные цифры в MS Word

6979
Jonny

Мне нужен способ вставлять высококачественные PDF-рисунки в Word без их искажений.

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

Я знаю, что вы можете вставлять PDF-файлы как объекты, а EPS-файлы - как изображения, но тогда эти цифры очень плохо отображаются в Word.

Мой текущий рабочий процесс, таким образом, заключается в экспорте рисунков в виде файлов PNG с разрешением 300 точек на дюйм с использованием Inkscape. Однако качество изображения все еще неудовлетворительное, и когда я увеличиваю DPI, видимого увеличения качества не наблюдается.

Кто-нибудь знает хороший способ вставить высококачественные графики в Word?

5
Каждый график, сгенерированный в формате PDF, может быть сгенерирован заново в другом формате, если у вас есть доступ к сценарию. С помощью Imagemagick вы можете указать размер [в пикселях] (http://www.a4papersize.org/a4-paper-size-in-pixels.php) и получить png с желаемым определением (например, 4961x7016 для A4 600 DPI) , Я настоятельно рекомендую вам вместо этого взглянуть на Latex (возможно, с графическим интерфейсом в качестве texmaker). Hastur 8 лет назад 0
Спасибо. Я очень хорошо знаком с латексом, но мне нельзя его использовать (вздох). С Inkscape я также могу указать точный вывод, но проблема все еще в том, что в Word рисунок не отображается должным образом, даже при 300 dpi. И увеличение dpi, кажется, не делает его лучше. Jonny 8 лет назад 1
Imagemagick: Попробуйте поиграться с `convert -density 600 file.pdf -resize 4961x7016 mypic.png`. Затем изменить размер, вырезать или что-то еще. Посмотрите ссылку, чтобы иметь размер пикселя А4, или поищите в интернете буквенный формат. Вы можете изменить 600 и 4961x ... в вашем лучшем матче. Посмотрите [здесь тоже] (http://superuser.com/a/776958/257269) Hastur 8 лет назад 0
Спасибо, но я думаю, что смысл, который я пытаюсь подчеркнуть, заключается в том, что Word искажает цифры, поэтому предварительная обработка не является проблемой. Я тем временем попробую Imagemagick. Я только что установил его. Jonny 8 лет назад 0

2 ответа на вопрос

3
Hastur

Бесконечная битва Word против PDF или Eps

С растровыми изображениями вы должны найти компромисс между разрешением и размером. Если вы знаете, что документ будет напечатан с разрешением 600 точек на дюйм, вы можете импортировать изображения с этим определением. Но если завтра у вас будет принтер высокой четкости, вам следует начать заново. Если вы увеличите DPI, ваш документ увеличится в размере, и вам потребуется больше ресурсов для вашей системы.

Если вы можете работать с векторным изображением, вы не будете сталкиваться с проблемами, связанными с определением изображения, но вы можете найти проблемы, связанные с установленным шрифтом, или у вас может быть файл большего размера, например, в случае, когда вы выводите 1 миллиард данных. ..

Когда вам нужно импортировать внутри слова файл, вы можете:

  • Перейти к источнику : вы можете заменить или добавить формат (и, в конечном итоге, размер), необходимый непосредственно в сценарии, который сгенерировал график. Читайте с сайта matplotlib [ 1 ] . Лучше, если вы сможете сохранить в формате векторной графики [ 1b ] .

    plt.savefig(pp, format='pdf')  plt.savefig(pp, format='png') plt.savefig(pp, format='svg') 

    или даже

    fig.savefig('test.pdf') fig.savefig('test.png') 
  • Используйте imagemagick [ 2 ] или Inkscape [ 2b ] или gimp [ 2b ], чтобы конвертировать PDF в PNG (или в другие растровые форматы, TIFF, JPG ...) или в SVG (или в другом векторном графическом формате).

    Это зависит от того, является ли это PDF-файл с векторной графикой [ 3 ] или нет.
    В первом случае вы должны найти редкие проблемы с рендерингом или шрифтами, но без проблем с определением.
    В последнем случае вы должны выбрать плотность и размеры для окончательного изображения.
    Прочитайте что-нибудь еще, например, по этому ответу [ 4 ] .
    Вы закончите писать что-то похожее на:

    convert file.pdf file.svg # If pdf with vector convert -density 600 file.pdf -resize 4961x7016 mypic.png # With fixed grid 

Примечание.
Если файл PDF был создан с растровыми изображениями с определенным определением, например, 300 DPI, вы не добьетесь большого успеха с любой программой, увеличивающей DPI до 400 или 600 ... :-)
Как правило большого пальца (обычно оно работает ) можно предположить, что в растровом pdf есть строка /image.
Так, например, в Linux вы можете запустить grepи посчитать вхождения этой строки:

grep -c -i "/image" *pdf MyRasterPdf.pdf:3 # > 0 if raster pdf MyVectorPdf.pdf:0 # = 0 if vector pdf 

И последнее, но не менее важное, рассмотрим LaTex, возможно, с графическим интерфейсом в качестве texmaker .

Спасибо. На данный момент Imagemagick доставляет мне неприятности, поэтому, когда у меня будет такая работа, я сделаю это. Jonny 8 лет назад 0
ОК, похоже, работает. Я думаю, что я также очень хорошо разбираюсь в качестве продукции. Я уверен, что это будет достаточно хорошо, даже если шрифты выглядят немного искаженными. Я буду ждать, чтобы увидеть, если Проф жалуется (-; Jonny 8 лет назад 0
?!?! :) ты что? Hastur 8 лет назад 0
Хаха, неважно. Но результат теперь выглядит намного лучше. Это действительно прекрасно. Примечание для людей, пытающихся использовать это в будущем, я думаю, что вам нужно установить ghostscript, чтобы конвертировать из Imagemagick для правильной работы. Jonny 8 лет назад 0
Мой рабочий процесс для импорта графиков matplotlib в Word был сохранен как SVG, открыт в Inkscape, сохранен как EMF, и открыт в Word. Таким образом, графики сохраняются в виде векторных изображений, поэтому они четкие и масштабируемые в Word. Armon 8 лет назад 1
1
chthonicdaemon

По состоянию на май 2018 года Microsoft Word в редакции Office 365 внесло два изменения, которые изменяют ответ на этот вопрос:

Это означает, что лучший способ работать с высококачественной графикой - создать в Matplotlib фигуру правильного размера (используя plt.figure(figsize=(width_in_inches, height_in_inches)), а затем экспортировать фигуру с помощью plt.savefig('filename.svg'). Вы можете вставить этот файл непосредственно в Word, и он будет корректно отображаться даже при конвертации в PDF.

Это видео показывает весь процесс и сравнивает форматы.

Похожие вопросы