<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.inkscape.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Y+scherbak</id>
	<title>Inkscape Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.inkscape.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Y+scherbak"/>
	<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/Special:Contributions/Y_scherbak"/>
	<updated>2026-05-15T20:45:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=User_talk:Y_scherbak&amp;diff=66415</id>
		<title>User talk:Y scherbak</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=User_talk:Y_scherbak&amp;diff=66415"/>
		<updated>2010-12-23T12:00:12Z</updated>

		<summary type="html">&lt;p&gt;Y scherbak: /* Автоматизация процесса изготовления этикетки  (inkscape + php + bat) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Автоматизация процесса изготовления этикетки  (inkscape + php + bat) ==&lt;br /&gt;
&lt;br /&gt;
Возникла задача создать этикетки для 134 типоразмеров изделий. Все этикетки изготавливались по шаблону. Захотелось упростить на будущее повтор процедуры и внесение изменений, а так же избежать механических ошибок. Посему было решено использовать скрипт, который на основе шаблона оформления и базы данных с вариантами надписей сгенерирует векторные файлы, а из них eps. Быстрее всего я пишу на PHP, потому скрипт на этом языке. О настройку и утановке PHP в заметке я писать не буду, так как об этом в сети полно материала.&lt;br /&gt;
&lt;br /&gt;
Данные решено было положить в csv, а в шаблоне оформления (template.svg) вместо текста написать специальные метки, которые потом будет заменять скрипт. Метки вида: #name, #d1.&lt;br /&gt;
&lt;br /&gt;
Inkscape умеет работать с командной строкой, в частности, экспортировать файлы:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EPS:&lt;br /&gt;
inkscape -f file.svg -E file.eps&lt;br /&gt;
PDF:&lt;br /&gt;
inkscape -f file.svg -A file.pdf&lt;br /&gt;
PNG:&lt;br /&gt;
inkscape -f file.svg -e file.png&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Значит, можно сгенерировать bat-фал, который преобразует необходимое число векторных файлов в eps, например.&lt;br /&gt;
&lt;br /&gt;
Создаем файл template.svg с метками #name, #d1, #d2, #pn&lt;br /&gt;
&lt;br /&gt;
Создаем файл eticetca.csv с полями name, d1, d2, pn:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;quot;11с31п&amp;quot;,15,15,40&lt;br /&gt;
&amp;quot;11с31п&amp;quot;,20,20,40&lt;br /&gt;
&amp;quot;11с31п&amp;quot;,25,20,40&lt;br /&gt;
&amp;quot;11с31п&amp;quot;,32,25,40&lt;br /&gt;
&amp;quot;11с31п&amp;quot;,40,32,40&lt;br /&gt;
&amp;quot;11с31п&amp;quot;,50,40,40&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
помещаем эти файлы в директорию на веб-сервере&lt;br /&gt;
&lt;br /&gt;
в этой же директории создаем папки svg/ и eps/ для хранения результатов.&lt;br /&gt;
&lt;br /&gt;
в эту же директорию, где лежат template.svg, eticetca.csv помещаем файл index.php:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
	/*&lt;br /&gt;
	*	script for automatic lables generation from svg template to eps&lt;br /&gt;
	*	version 1.0&lt;br /&gt;
	*	date 2010-12-23&lt;br /&gt;
	*	author Yuriu &amp;quot;zip&amp;quot; Scherbak&lt;br /&gt;
	*	email webdesigner@meta.ua&lt;br /&gt;
	*	&lt;br /&gt;
	*	inkscape &amp;gt; 0.47 required&lt;br /&gt;
	*	php &amp;gt; 5.1 required&lt;br /&gt;
	*	&lt;br /&gt;
	*/&lt;br /&gt;
&lt;br /&gt;
	// export command is:&lt;br /&gt;
	//inkscape.exe -E c:\eps\1.eps c:\svg\113115015025.svg &lt;br /&gt;
	&lt;br /&gt;
	header(&amp;quot;Content-Type: text/html; charset=utf-8&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	/*&lt;br /&gt;
	*  configuration section&lt;br /&gt;
	*/&lt;br /&gt;
	//path to inkscape binary&lt;br /&gt;
	$inkscape_path = &amp;quot;C:\\Program Files\\Inkscape\\inkscape.exe&amp;quot;;&lt;br /&gt;
	//variable name for msw batch file&lt;br /&gt;
	$inkscape_var = &amp;quot;%INKSCAPE%&amp;quot;;&lt;br /&gt;
	// path to script dir&lt;br /&gt;
	$script_path = &amp;quot;C:\\Program Files\\Apache Software Foundation\\Apache2.2\\htdocs\\lable\\&amp;quot;;&lt;br /&gt;
	//csv filename&lt;br /&gt;
	$csv_filename = &amp;quot;eticetca.csv&amp;quot;;&lt;br /&gt;
	//1st csv-field&lt;br /&gt;
	$name = &amp;quot;#name&amp;quot;;&lt;br /&gt;
	//2nd csv-field&lt;br /&gt;
	$d1 = &amp;quot;#d1&amp;quot;;&lt;br /&gt;
	//3d csv-field&lt;br /&gt;
	$d2 = &amp;quot;#d2&amp;quot;;&lt;br /&gt;
	//4s csv-field&lt;br /&gt;
	$pn = &amp;quot;#pn&amp;quot;;&lt;br /&gt;
	//svg template (must contain lables #name, #d1 etc which you wont to replace)&lt;br /&gt;
	$svg_template = &amp;quot;template.svg&amp;quot;;&lt;br /&gt;
	//msw bat file name&lt;br /&gt;
	$batch_filename = &amp;quot;svg2eps.bat&amp;quot;;&lt;br /&gt;
	//msw bat headers and vars declaration&lt;br /&gt;
	$batch_headers = &amp;quot;@echo on\n&amp;quot; . &amp;quot;set INKSCAPE=&amp;quot; . &amp;quot;\&amp;quot;&amp;quot; . $inkscape_path . &amp;quot;\&amp;quot;&amp;quot; . &amp;quot;\n\n&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	$svgdir = &amp;quot;svg&amp;quot;;&lt;br /&gt;
	$epsdir = &amp;quot;eps&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	// loading svg-template to str $svg_contents&lt;br /&gt;
  $svg_handle = fopen($svg_template, &amp;quot;r&amp;quot;);&lt;br /&gt;
  $svg_contents = fread($svg_handle, filesize($svg_template));&lt;br /&gt;
  fclose($svg_handle); &lt;br /&gt;
	&lt;br /&gt;
	// prepare bat file to generate&lt;br /&gt;
	if(file_exists($batch_filename))&lt;br /&gt;
	{&lt;br /&gt;
		unlink($batch_filename);&lt;br /&gt;
	}&lt;br /&gt;
	$batch_handle = fopen($batch_filename, &amp;quot;w+&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// writting batch headers&lt;br /&gt;
	if (fwrite($batch_handle, $batch_headers) === false)&lt;br /&gt;
	{&lt;br /&gt;
		echo &amp;quot;Cannot write to $batch_filename file. &amp;lt;br /&amp;gt;\n&amp;quot;;          &lt;br /&gt;
  }&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	if($csv_handler = fopen($csv_filename, &amp;quot;r&amp;quot;))&lt;br /&gt;
	{&lt;br /&gt;
		print(&amp;quot;&amp;lt;p&amp;gt;&amp;quot;);&lt;br /&gt;
		while(!feof($csv_handler))&lt;br /&gt;
		{&lt;br /&gt;
			//parsing svg template and making array&lt;br /&gt;
			$myField = fgetcsv($csv_handler, 1024);&lt;br /&gt;
			$fieldCount = count($myField);&lt;br /&gt;
			&lt;br /&gt;
			// making pathes&lt;br /&gt;
			$file_to = eregi_replace(&amp;quot;(с|п)&amp;quot;,&amp;quot;&amp;quot;,$myField[0]) . $myField[1] . $myField[2] . $myField[3];&lt;br /&gt;
			$file_svg_to = $file_to . &amp;quot;.svg&amp;quot;;&lt;br /&gt;
			$file_eps_to = $file_to . &amp;quot;.eps&amp;quot;;&lt;br /&gt;
			$path_svg_to = $svgdir . &amp;quot;/&amp;quot; . $file_svg_to;&lt;br /&gt;
			&lt;br /&gt;
			// replacing textlables from tempalte&lt;br /&gt;
			$new_text =(str_replace($name,$myField[0],$svg_contents));&lt;br /&gt;
			$new_text =(str_replace($d1,$myField[1],$new_text));&lt;br /&gt;
			$new_text =(str_replace($d2,$myField[2],$new_text));&lt;br /&gt;
			$new_text =(str_replace($pn,$myField[3],$new_text));&lt;br /&gt;
			print ($file_svg_to);&lt;br /&gt;
			print(&amp;quot;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
			print ($file_eps_to);&lt;br /&gt;
			print(&amp;quot;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
			//writting new-generated svg&lt;br /&gt;
			$handle = fopen($path_svg_to, &amp;quot;w+&amp;quot;);&lt;br /&gt;
			$writestring = $new_text;&lt;br /&gt;
			if (fwrite($handle, $writestring) === false)&lt;br /&gt;
			{&lt;br /&gt;
        echo &amp;quot;Cannot write to $path_svg_to file. &amp;lt;br /&amp;gt;&amp;quot;;          &lt;br /&gt;
      }&lt;br /&gt;
			fclose($handle);&lt;br /&gt;
			&lt;br /&gt;
			// writting data to batch&lt;br /&gt;
			$batch_string = $inkscape_var . &amp;quot; -E &amp;quot; . &amp;quot;\&amp;quot;&amp;quot; .&lt;br /&gt;
                                        $script_path . $epsdir . &amp;quot;\\&amp;quot;  . &lt;br /&gt;
                                        $file_eps_to . &amp;quot;\&amp;quot;&amp;quot; . &amp;quot; &amp;quot; . &amp;quot;\&amp;quot;&amp;quot; . &lt;br /&gt;
                                        $script_path . $svgdir . &amp;quot;\\&amp;quot;  . &lt;br /&gt;
                                        $file_svg_to . &amp;quot;\&amp;quot;&amp;quot; . &amp;quot;\n&amp;quot;;&lt;br /&gt;
			if (fwrite($batch_handle, $batch_string) === false)&lt;br /&gt;
			{&lt;br /&gt;
        echo &amp;quot;Cannot write to $batch_filename file. &amp;lt;br /&amp;gt;&amp;quot;;          &lt;br /&gt;
      }			&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		fclose($csv_handler);&lt;br /&gt;
		fclose($batch_handle);&lt;br /&gt;
		print(&amp;quot;&amp;lt;/p&amp;gt;&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		unlink($svgdir . &amp;quot;/&amp;quot; . &amp;quot;.svg&amp;quot;);&lt;br /&gt;
	} else {&lt;br /&gt;
		print (&amp;quot;runtime error&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
запускаем скрипт в броузере и получаем в той же директории файл svg2eps.bat, а в директории svg 134 этикетки (на это ушло 15-20 секунд)&lt;br /&gt;
&lt;br /&gt;
запускаем svg2eps.bat и через 1-2 минуты молучаем 134 этикетки, готовых к печати.&lt;br /&gt;
--[[User:Y scherbak|Y scherbak]] 11:53, 23 December 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Y scherbak</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=User_talk:Y_scherbak&amp;diff=66409</id>
		<title>User talk:Y scherbak</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=User_talk:Y_scherbak&amp;diff=66409"/>
		<updated>2010-12-23T11:54:16Z</updated>

		<summary type="html">&lt;p&gt;Y scherbak: /* Автоматизация процесса изготовления этикетки  (inkscape + php + bat) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Автоматизация процесса изготовления этикетки  (inkscape + php + bat) ==&lt;br /&gt;
&lt;br /&gt;
Возникла задача создать этикетки для 134 типоразмеров изделий. Все этикетки изготавливались по шаблону. Захотелось упростить на будущее повтор процедуры и внесение изменений, а так же избежать механических ошибок. Посему было решено использовать скрипт, который на основе шаблона оформления и базы данных с вариантами надписей сгенерирует векторные файлы, а из них eps. Быстрее всего я пишу на PHP, потому скрипт на этом языке. О настройку и утановке PHP в заметке я писать не буду, так как об этом в сети полно материала.&lt;br /&gt;
&lt;br /&gt;
Данные решено было положить в csv, а в шаблоне оформления (template.svg) вместо текста написать специальные метки, которые потом будет заменять скрипт. Метки вида: #name, #d1.&lt;br /&gt;
&lt;br /&gt;
Inkscape умеет работать с командной строкой, в частности, экспортировать файлы:&lt;br /&gt;
EPS:&lt;br /&gt;
inkscape -f file.svg -E file.eps&lt;br /&gt;
PDF:&lt;br /&gt;
inkscape -f file.svg -A file.pdf&lt;br /&gt;
PNG:&lt;br /&gt;
inkscape -f file.svg -e file.png&lt;br /&gt;
Значит, можно сгенерировать bat-фал, который преобразует необходимое число векторных файлов в eps, например.&lt;br /&gt;
&lt;br /&gt;
Создаем файл template.svg с метками #name, #d1, #d2, #pn&lt;br /&gt;
&lt;br /&gt;
Создаем файл eticetca.csv с полями name, d1, d2, pn:&lt;br /&gt;
...&lt;br /&gt;
&amp;quot;11с31п&amp;quot;,15,15,40&lt;br /&gt;
&amp;quot;11с31п&amp;quot;,20,20,40&lt;br /&gt;
&amp;quot;11с31п&amp;quot;,25,20,40&lt;br /&gt;
&amp;quot;11с31п&amp;quot;,32,25,40&lt;br /&gt;
&amp;quot;11с31п&amp;quot;,40,32,40&lt;br /&gt;
&amp;quot;11с31п&amp;quot;,50,40,40&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
помещаем эти файлы в директорию на веб-сервере&lt;br /&gt;
&lt;br /&gt;
в этой же директории создаем папки svg/ и eps/ для хранения результатов.&lt;br /&gt;
&lt;br /&gt;
в эту же директорию, где лежат template.svg, eticetca.csv помещаем файл index.php:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
	/*&lt;br /&gt;
	*	script for automatic lables generation from svg template to eps&lt;br /&gt;
	*	version 1.0&lt;br /&gt;
	*	date 2010-12-23&lt;br /&gt;
	*	author Yuriu &amp;quot;zip&amp;quot; Scherbak&lt;br /&gt;
	*	email webdesigner@meta.ua&lt;br /&gt;
	*	&lt;br /&gt;
	*	inkscape &amp;gt; 0.47 required&lt;br /&gt;
	*	php &amp;gt; 5.1 required&lt;br /&gt;
	*	&lt;br /&gt;
	*/&lt;br /&gt;
&lt;br /&gt;
	// export command is:&lt;br /&gt;
	//inkscape.exe -E c:\eps\1.eps c:\svg\113115015025.svg &lt;br /&gt;
	&lt;br /&gt;
	header(&amp;quot;Content-Type: text/html; charset=utf-8&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	/*&lt;br /&gt;
	*  configuration section&lt;br /&gt;
	*/&lt;br /&gt;
	//path to inkscape binary&lt;br /&gt;
	$inkscape_path = &amp;quot;C:\\Program Files\\Inkscape\\inkscape.exe&amp;quot;;&lt;br /&gt;
	//variable name for msw batch file&lt;br /&gt;
	$inkscape_var = &amp;quot;%INKSCAPE%&amp;quot;;&lt;br /&gt;
	// path to script dir&lt;br /&gt;
	$script_path = &amp;quot;C:\\Program Files\\Apache Software Foundation\\Apache2.2\\htdocs\\lable\\&amp;quot;;&lt;br /&gt;
	//csv filename&lt;br /&gt;
	$csv_filename = &amp;quot;eticetca.csv&amp;quot;;&lt;br /&gt;
	//1st csv-field&lt;br /&gt;
	$name = &amp;quot;#name&amp;quot;;&lt;br /&gt;
	//2nd csv-field&lt;br /&gt;
	$d1 = &amp;quot;#d1&amp;quot;;&lt;br /&gt;
	//3d csv-field&lt;br /&gt;
	$d2 = &amp;quot;#d2&amp;quot;;&lt;br /&gt;
	//4s csv-field&lt;br /&gt;
	$pn = &amp;quot;#pn&amp;quot;;&lt;br /&gt;
	//svg template (must contain lables #name, #d1 etc which you wont to replace)&lt;br /&gt;
	$svg_template = &amp;quot;template.svg&amp;quot;;&lt;br /&gt;
	//msw bat file name&lt;br /&gt;
	$batch_filename = &amp;quot;svg2eps.bat&amp;quot;;&lt;br /&gt;
	//msw bat headers and vars declaration&lt;br /&gt;
	$batch_headers = &amp;quot;@echo on\n&amp;quot; . &amp;quot;set INKSCAPE=&amp;quot; . &amp;quot;\&amp;quot;&amp;quot; . $inkscape_path . &amp;quot;\&amp;quot;&amp;quot; . &amp;quot;\n\n&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	$svgdir = &amp;quot;svg&amp;quot;;&lt;br /&gt;
	$epsdir = &amp;quot;eps&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	// loading svg-template to str $svg_contents&lt;br /&gt;
  $svg_handle = fopen($svg_template, &amp;quot;r&amp;quot;);&lt;br /&gt;
  $svg_contents = fread($svg_handle, filesize($svg_template));&lt;br /&gt;
  fclose($svg_handle); &lt;br /&gt;
	&lt;br /&gt;
	// prepare bat file to generate&lt;br /&gt;
	if(file_exists($batch_filename))&lt;br /&gt;
	{&lt;br /&gt;
		unlink($batch_filename);&lt;br /&gt;
	}&lt;br /&gt;
	$batch_handle = fopen($batch_filename, &amp;quot;w+&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// writting batch headers&lt;br /&gt;
	if (fwrite($batch_handle, $batch_headers) === false)&lt;br /&gt;
	{&lt;br /&gt;
		echo &amp;quot;Cannot write to $batch_filename file. &amp;lt;br /&amp;gt;\n&amp;quot;;          &lt;br /&gt;
  }&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	if($csv_handler = fopen($csv_filename, &amp;quot;r&amp;quot;))&lt;br /&gt;
	{&lt;br /&gt;
		print(&amp;quot;&amp;lt;p&amp;gt;&amp;quot;);&lt;br /&gt;
		while(!feof($csv_handler))&lt;br /&gt;
		{&lt;br /&gt;
			//parsing svg template and making array&lt;br /&gt;
			$myField = fgetcsv($csv_handler, 1024);&lt;br /&gt;
			$fieldCount = count($myField);&lt;br /&gt;
			&lt;br /&gt;
			// making pathes&lt;br /&gt;
			$file_to = eregi_replace(&amp;quot;(с|п)&amp;quot;,&amp;quot;&amp;quot;,$myField[0]) . $myField[1] . $myField[2] . $myField[3];&lt;br /&gt;
			$file_svg_to = $file_to . &amp;quot;.svg&amp;quot;;&lt;br /&gt;
			$file_eps_to = $file_to . &amp;quot;.eps&amp;quot;;&lt;br /&gt;
			$path_svg_to = $svgdir . &amp;quot;/&amp;quot; . $file_svg_to;&lt;br /&gt;
			&lt;br /&gt;
			// replacing textlables from tempalte&lt;br /&gt;
			$new_text =(str_replace($name,$myField[0],$svg_contents));&lt;br /&gt;
			$new_text =(str_replace($d1,$myField[1],$new_text));&lt;br /&gt;
			$new_text =(str_replace($d2,$myField[2],$new_text));&lt;br /&gt;
			$new_text =(str_replace($pn,$myField[3],$new_text));&lt;br /&gt;
			print ($file_svg_to);&lt;br /&gt;
			print(&amp;quot;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
			print ($file_eps_to);&lt;br /&gt;
			print(&amp;quot;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
			//writting new-generated svg&lt;br /&gt;
			$handle = fopen($path_svg_to, &amp;quot;w+&amp;quot;);&lt;br /&gt;
			$writestring = $new_text;&lt;br /&gt;
			if (fwrite($handle, $writestring) === false)&lt;br /&gt;
			{&lt;br /&gt;
        echo &amp;quot;Cannot write to $path_svg_to file. &amp;lt;br /&amp;gt;&amp;quot;;          &lt;br /&gt;
      }&lt;br /&gt;
			fclose($handle);&lt;br /&gt;
			&lt;br /&gt;
			// writting data to batch&lt;br /&gt;
			$batch_string = $inkscape_var . &amp;quot; -E &amp;quot; . &amp;quot;\&amp;quot;&amp;quot; . $script_path . $epsdir . &amp;quot;\\&amp;quot;  . $file_eps_to . &amp;quot;\&amp;quot;&amp;quot; . &amp;quot; &amp;quot; . &amp;quot;\&amp;quot;&amp;quot; . $script_path . $svgdir . &amp;quot;\\&amp;quot;  . $file_svg_to . &amp;quot;\&amp;quot;&amp;quot; . &amp;quot;\n&amp;quot;;&lt;br /&gt;
			if (fwrite($batch_handle, $batch_string) === false)&lt;br /&gt;
			{&lt;br /&gt;
        echo &amp;quot;Cannot write to $batch_filename file. &amp;lt;br /&amp;gt;&amp;quot;;          &lt;br /&gt;
      }			&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		fclose($csv_handler);&lt;br /&gt;
		fclose($batch_handle);&lt;br /&gt;
		print(&amp;quot;&amp;lt;/p&amp;gt;&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		unlink($svgdir . &amp;quot;/&amp;quot; . &amp;quot;.svg&amp;quot;);&lt;br /&gt;
	} else {&lt;br /&gt;
		print (&amp;quot;runtime error&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
запускаем скрипт в броузере и получаем в той же директории файл svg2eps.bat, а в директории svg 134 этикетки (на это ушло 15-20 секунд)&lt;br /&gt;
&lt;br /&gt;
запускаем svg2eps.bat и через 1-2 минуты молучаем 134 этикетки, готовых к печати.&lt;br /&gt;
--[[User:Y scherbak|Y scherbak]] 11:53, 23 December 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Y scherbak</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=User_talk:Y_scherbak&amp;diff=66403</id>
		<title>User talk:Y scherbak</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=User_talk:Y_scherbak&amp;diff=66403"/>
		<updated>2010-12-23T11:53:02Z</updated>

		<summary type="html">&lt;p&gt;Y scherbak: Автоматизация процесса изготовления этикетки  (inkscape + php + bat)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Автоматизация процесса изготовления этикетки  (inkscape + php + bat) ==&lt;br /&gt;
&lt;br /&gt;
Возникла задача создать этикетки для 134 типоразмеров изделий. Все этикетки изготавливались по шаблону. Захотелось упростить на будущее повтор процедуры и внесение изменений, а так же избежать механических ошибок. Посему было решено использовать скрипт, который на основе шаблона оформления и базы данных с вариантами надписей сгенерирует векторные файлы, а из них eps. Быстрее всего я пишу на PHP, потому скрипт на этом языке. О настройку и утановке PHP в заметке я писать не буду, так как об этом в сети полно материала.&lt;br /&gt;
&lt;br /&gt;
Данные решено было положить в csv, а в шаблоне оформления (template.svg) вместо текста написать специальные метки, которые потом будет заменять скрипт. Метки вида: #name, #d1.&lt;br /&gt;
&lt;br /&gt;
Inkscape умеет работать с командной строкой, в частности, экспортировать файлы:&lt;br /&gt;
EPS:&lt;br /&gt;
inkscape -f file.svg -E file.eps&lt;br /&gt;
PDF:&lt;br /&gt;
inkscape -f file.svg -A file.pdf&lt;br /&gt;
PNG:&lt;br /&gt;
inkscape -f file.svg -e file.png&lt;br /&gt;
Значит, можно сгенерировать bat-фал, который преобразует необходимое число векторных файлов в eps, например.&lt;br /&gt;
&lt;br /&gt;
Создаем файл template.svg с метками #name, #d1, #d2, #pn&lt;br /&gt;
&lt;br /&gt;
Создаем файл eticetca.csv с полями name, d1, d2, pn:&lt;br /&gt;
...&lt;br /&gt;
&amp;quot;11с31п&amp;quot;,15,15,40&lt;br /&gt;
&amp;quot;11с31п&amp;quot;,20,20,40&lt;br /&gt;
&amp;quot;11с31п&amp;quot;,25,20,40&lt;br /&gt;
&amp;quot;11с31п&amp;quot;,32,25,40&lt;br /&gt;
&amp;quot;11с31п&amp;quot;,40,32,40&lt;br /&gt;
&amp;quot;11с31п&amp;quot;,50,40,40&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
помещаем эти файлы в директорию на веб-сервере&lt;br /&gt;
&lt;br /&gt;
в этой же директории создаем папки svg/ и eps/ для хранения результатов.&lt;br /&gt;
&lt;br /&gt;
в эту же директорию, где лежат template.svg, eticetca.csv помещаем файл index.php:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
	/*&lt;br /&gt;
	*	script for automatic lables generation from svg template to eps&lt;br /&gt;
	*	version 1.0&lt;br /&gt;
	*	date 2010-12-23&lt;br /&gt;
	*	author Yuriu &amp;quot;zip&amp;quot; Scherbak&lt;br /&gt;
	*	email webdesigner@meta.ua&lt;br /&gt;
	*	&lt;br /&gt;
	*	inkscape &amp;gt; 0.47 required&lt;br /&gt;
	*	php &amp;gt; 5.1 required&lt;br /&gt;
	*	&lt;br /&gt;
	*/&lt;br /&gt;
&lt;br /&gt;
	// export command is:&lt;br /&gt;
	//inkscape.exe -E c:\eps\1.eps c:\svg\113115015025.svg &lt;br /&gt;
	&lt;br /&gt;
	header(&amp;quot;Content-Type: text/html; charset=utf-8&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	/*&lt;br /&gt;
	*  configuration section&lt;br /&gt;
	*/&lt;br /&gt;
	//path to inkscape binary&lt;br /&gt;
	$inkscape_path = &amp;quot;C:\\Program Files\\Inkscape\\inkscape.exe&amp;quot;;&lt;br /&gt;
	//variable name for msw batch file&lt;br /&gt;
	$inkscape_var = &amp;quot;%INKSCAPE%&amp;quot;;&lt;br /&gt;
	// path to script dir&lt;br /&gt;
	$script_path = &amp;quot;C:\\Program Files\\Apache Software Foundation\\Apache2.2\\htdocs\\lable\\&amp;quot;;&lt;br /&gt;
	//csv filename&lt;br /&gt;
	$csv_filename = &amp;quot;eticetca.csv&amp;quot;;&lt;br /&gt;
	//1st csv-field&lt;br /&gt;
	$name = &amp;quot;#name&amp;quot;;&lt;br /&gt;
	//2nd csv-field&lt;br /&gt;
	$d1 = &amp;quot;#d1&amp;quot;;&lt;br /&gt;
	//3d csv-field&lt;br /&gt;
	$d2 = &amp;quot;#d2&amp;quot;;&lt;br /&gt;
	//4s csv-field&lt;br /&gt;
	$pn = &amp;quot;#pn&amp;quot;;&lt;br /&gt;
	//svg template (must contain lables #name, #d1 etc which you wont to replace)&lt;br /&gt;
	$svg_template = &amp;quot;template.svg&amp;quot;;&lt;br /&gt;
	//msw bat file name&lt;br /&gt;
	$batch_filename = &amp;quot;svg2eps.bat&amp;quot;;&lt;br /&gt;
	//msw bat headers and vars declaration&lt;br /&gt;
	$batch_headers = &amp;quot;@echo on\n&amp;quot; . &amp;quot;set INKSCAPE=&amp;quot; . &amp;quot;\&amp;quot;&amp;quot; . $inkscape_path . &amp;quot;\&amp;quot;&amp;quot; . &amp;quot;\n\n&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	$svgdir = &amp;quot;svg&amp;quot;;&lt;br /&gt;
	$epsdir = &amp;quot;eps&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	// loading svg-template to str $svg_contents&lt;br /&gt;
  $svg_handle = fopen($svg_template, &amp;quot;r&amp;quot;);&lt;br /&gt;
  $svg_contents = fread($svg_handle, filesize($svg_template));&lt;br /&gt;
  fclose($svg_handle); &lt;br /&gt;
	&lt;br /&gt;
	// prepare bat file to generate&lt;br /&gt;
	if(file_exists($batch_filename))&lt;br /&gt;
	{&lt;br /&gt;
		unlink($batch_filename);&lt;br /&gt;
	}&lt;br /&gt;
	$batch_handle = fopen($batch_filename, &amp;quot;w+&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// writting batch headers&lt;br /&gt;
	if (fwrite($batch_handle, $batch_headers) === false)&lt;br /&gt;
	{&lt;br /&gt;
		echo &amp;quot;Cannot write to $batch_filename file. &amp;lt;br /&amp;gt;\n&amp;quot;;          &lt;br /&gt;
  }&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	if($csv_handler = fopen($csv_filename, &amp;quot;r&amp;quot;))&lt;br /&gt;
	{&lt;br /&gt;
		print(&amp;quot;&amp;lt;p&amp;gt;&amp;quot;);&lt;br /&gt;
		while(!feof($csv_handler))&lt;br /&gt;
		{&lt;br /&gt;
			//parsing svg template and making array&lt;br /&gt;
			$myField = fgetcsv($csv_handler, 1024);&lt;br /&gt;
			$fieldCount = count($myField);&lt;br /&gt;
			&lt;br /&gt;
			// making pathes&lt;br /&gt;
			$file_to = eregi_replace(&amp;quot;(с|п)&amp;quot;,&amp;quot;&amp;quot;,$myField[0]) . $myField[1] . $myField[2] . $myField[3];&lt;br /&gt;
			$file_svg_to = $file_to . &amp;quot;.svg&amp;quot;;&lt;br /&gt;
			$file_eps_to = $file_to . &amp;quot;.eps&amp;quot;;&lt;br /&gt;
			$path_svg_to = $svgdir . &amp;quot;/&amp;quot; . $file_svg_to;&lt;br /&gt;
			&lt;br /&gt;
			// replacing textlables from tempalte&lt;br /&gt;
			$new_text =(str_replace($name,$myField[0],$svg_contents));&lt;br /&gt;
			$new_text =(str_replace($d1,$myField[1],$new_text));&lt;br /&gt;
			$new_text =(str_replace($d2,$myField[2],$new_text));&lt;br /&gt;
			$new_text =(str_replace($pn,$myField[3],$new_text));&lt;br /&gt;
			print ($file_svg_to);&lt;br /&gt;
			print(&amp;quot;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
			print ($file_eps_to);&lt;br /&gt;
			print(&amp;quot;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
			//writting new-generated svg&lt;br /&gt;
			$handle = fopen($path_svg_to, &amp;quot;w+&amp;quot;);&lt;br /&gt;
			$writestring = $new_text;&lt;br /&gt;
			if (fwrite($handle, $writestring) === false)&lt;br /&gt;
			{&lt;br /&gt;
        echo &amp;quot;Cannot write to $path_svg_to file. &amp;lt;br /&amp;gt;&amp;quot;;          &lt;br /&gt;
      }&lt;br /&gt;
			fclose($handle);&lt;br /&gt;
			&lt;br /&gt;
			// writting data to batch&lt;br /&gt;
			$batch_string = $inkscape_var . &amp;quot; -E &amp;quot; . &amp;quot;\&amp;quot;&amp;quot; . $script_path . $epsdir . &amp;quot;\\&amp;quot;  . $file_eps_to . &amp;quot;\&amp;quot;&amp;quot; . &amp;quot; &amp;quot; . &amp;quot;\&amp;quot;&amp;quot; . $script_path . $svgdir . &amp;quot;\\&amp;quot;  . $file_svg_to . &amp;quot;\&amp;quot;&amp;quot; . &amp;quot;\n&amp;quot;;&lt;br /&gt;
			if (fwrite($batch_handle, $batch_string) === false)&lt;br /&gt;
			{&lt;br /&gt;
        echo &amp;quot;Cannot write to $batch_filename file. &amp;lt;br /&amp;gt;&amp;quot;;          &lt;br /&gt;
      }			&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		fclose($csv_handler);&lt;br /&gt;
		fclose($batch_handle);&lt;br /&gt;
		print(&amp;quot;&amp;lt;/p&amp;gt;&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		unlink($svgdir . &amp;quot;/&amp;quot; . &amp;quot;.svg&amp;quot;);&lt;br /&gt;
	} else {&lt;br /&gt;
		print (&amp;quot;runtime error&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
запускаем скрипт в броузере и получаем в той же директории файл svg2eps.bat, а в директории svg 134 этикетки (на это ушло 15-20 секунд)&lt;br /&gt;
&lt;br /&gt;
запускаем svg2eps.bat и через 1-2 минуты молучаем 134 этикетки, готовых к печати.&lt;br /&gt;
--[[User:Y scherbak|Y scherbak]] 11:53, 23 December 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Y scherbak</name></author>
	</entry>
</feed>