<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: изменение свойств редактируемых полей файла pdf]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=17842</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=17842&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: изменение свойств редактируемых полей файла pdf».]]></description>
		<lastBuildDate>Tue, 27 Jun 2023 12:00:31 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: изменение свойств редактируемых полей файла pdf]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=158608#p158608</link>
			<description><![CDATA[<p><strong>Malcev</strong><br />Перепроверил, это у меня ошибка была, извиняюсь. Ваш вариант работает, и он попроще <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> Спасибо.</p>]]></description>
			<author><![CDATA[null@example.com (NickName)]]></author>
			<pubDate>Tue, 27 Jun 2023 12:00:31 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=158608#p158608</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: изменение свойств редактируемых полей файла pdf]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=158606#p158606</link>
			<description><![CDATA[<p>Я ничего под adobe не кодил и поэтому их апи не читал.<br />Но у меня показывает разные input при закоментированном и не закоментированном field.comb:<br /></p><div class="codebox"><pre><code>fileName:=a_scriptdir &quot;\test.pdf&quot;
arr := ComObjArray(VT_VARIANT:=12, 4)
arr[0] := 100
arr[1] := 200
arr[2] := 300
arr[3] := 400
gApp:=ComObjCreate(&quot;AcroExch.app&quot;)
avDoc:=ComObjCreate(&quot;AcroExch.AVDoc&quot;)
avDoc.Open(fileName, &quot;&quot;)
gApp.show()
pdDoc:=avDoc.GetPDDoc()
jso:=pdDoc.GetJSObject
field:=jso.addField(&quot;fieldName&quot;,&quot;text&quot;,0,arr)
; field.comb:=ComObj(0xB, -1)
field.charLimit:=10</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Mon, 26 Jun 2023 14:53:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=158606#p158606</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: изменение свойств редактируемых полей файла pdf]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=158603#p158603</link>
			<description><![CDATA[<p><strong>Malcev</strong><br />Ваш код не вызывает ошибки, но и результата не даёт, т.е. поле остаётся с ограничением по количеству символов, но не становится comb.</p>]]></description>
			<author><![CDATA[null@example.com (NickName)]]></author>
			<pubDate>Mon, 26 Jun 2023 11:22:28 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=158603#p158603</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: изменение свойств редактируемых полей файла pdf]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=158586#p158586</link>
			<description><![CDATA[<p>Из ахк так неправильно:<br /></p><div class="codebox"><pre><code>field.comb:=true</code></pre></div><p>Отправляйте так:<br /></p><div class="codebox"><pre><code>ComObj(0xB, -1)</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 24 Jun 2023 21:34:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=158586#p158586</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: изменение свойств редактируемых полей файла pdf]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=158574#p158574</link>
			<description><![CDATA[<p><strong>teadrinker</strong><br />Спасибо, это решение помогло.<br />Опишу подробнее с какими нюансами столкнулся.<br />1. При попытке открыть pdf файл у меня появилась ошибка: &quot;Произошла ошибка при открытии данного документа.&quot; и дальше какие-то кракозябры. Я подумал, что следует в скрипте указать кодировку, но это неверно. Затем задумался: &quot;у меня ведь acrobat на английском, почему ошибка на русском?&quot; Сменил в настройках reader язык на русский и смог дочитать ошибку: &quot;Синтаксическая ошибка в имени файла, имени папки или метки тома.&quot; В общем, в пути к файлу нужно указывать слэши, а не обратные слэши <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />2. При сохранении файла нужно указывать параметр PDSave с каким-то из возможных флагов.&nbsp; В документе acrobat sdk iac guide представлены следующие варианты:<br /></p><div class="codebox"><pre><code>PDSaveIncremental = 0x0000, /* write changes only */
PDSaveFull = 0x0001, /* write entire file */
PDSaveCopy = 0x0002, /* write copy w/o affecting current state */
PDSaveLinearized = 0x0004, /* write the file linearized for
** page-served remote (net) access. */
PDSaveBinaryOK = 0x0010, /* OK to store binary in file */
PDSaveCollectGarbage = 0x0020 /* perform garbage collection on
** unreferenced objects */</code></pre></div><p>При попытке передать параметр &quot;0x0001&quot; в pdDoc.Save возникала ошибка. Так же как и со всеми остальными. Решение: параметр нужно передавать в десятичном виде, т.е. в данном случае - 1. <br />3. Тоже касается значений boolean - вместо true, нужно 1.<br />В конечном счёте получился следующий код:<br /></p><div class="codebox"><pre><code>#NoEnv
#Include ActiveScript.ahk
js := new ActiveScript(&quot;JScript&quot;)
code = 
(
    var newFieldName=&quot;newF&quot;;
    var oldFieldName=&quot;oldF&quot;;
    var fileName=&quot;C:/test.pdf&quot;;
    var newFileName=&quot;C:/Users/Intel/Desktop/Новая папка/test.pdf&quot;
    var gApp = new ActiveXObject(&quot;AcroExch.App&quot;);
    var avDoc = new ActiveXObject(&quot;AcroExch.AVDoc&quot;);  
    avDoc.Open(fileName, &quot;&quot;);
    var pdDoc = avDoc.GetPDDoc();
    var jso=pdDoc.GetJSObject();
    var fdPage=jso.getField(oldFieldName).Page;
    var fdRect=jso.getField(oldFieldName).rect;
    var field=jso.addField(newFieldName,&quot;text&quot;,fdPage,fdRect);
    field.comb=true;
    field.charLimit=10;
    jso.removeField(oldFieldName);
    pdDoc.Save(1,newFileName);
    avDoc.Close(1)
)
js.Exec(code)</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (NickName)]]></author>
			<pubDate>Fri, 23 Jun 2023 08:59:05 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=158574#p158574</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: изменение свойств редактируемых полей файла pdf]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=158569#p158569</link>
			<description><![CDATA[<p>Тогда возможно это получится сделать только в контексте реального джаваскрипта. Из AHK джаваскрипт можно запустить с помощью <a href="https://github.com/Lexikos/ActiveScript.ahk/tree/for-v1#jsrt">JsRT</a>.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Thu, 22 Jun 2023 19:36:19 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=158569#p158569</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: изменение свойств редактируемых полей файла pdf]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=158568#p158568</link>
			<description><![CDATA[<p><strong>teadrinker</strong><br />Спасибо за отклик, но, к сожалению, оба варианта приводят к той же самой ошибке.</p>]]></description>
			<author><![CDATA[null@example.com (NickName)]]></author>
			<pubDate>Thu, 22 Jun 2023 18:02:35 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=158568#p158568</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: изменение свойств редактируемых полей файла pdf]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=158567#p158567</link>
			<description><![CDATA[<p>Попробуйте так:<br /></p><div class="codebox"><pre><code>field.comb := -1</code></pre></div><p>Или так:<br /></p><div class="codebox"><pre><code>VarSetCapacity(var, 24, 0)
vref := ComObject(0x400B, &amp;var)
vref[] := -1
field.comb := vref</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Thu, 22 Jun 2023 16:46:27 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=158567#p158567</guid>
		</item>
		<item>
			<title><![CDATA[AHK: изменение свойств редактируемых полей файла pdf]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=158565#p158565</link>
			<description><![CDATA[<p>Доброго времени суток.<br />Суть задачи. Имеется файл pdf с полями для ввода текста. Необходимо изменить названия этих полей. В документации acrobat sdk api reference не описано способа программно изменять названия полей. На их форуме предлагается решение в виде чтения номера страницы, типа поля и его координат (rect), а затем добавления нового поля с новым именем и такими же координатами с последующим удалением &quot;старого&quot; поля. В принципе эта операция делается без проблем. Однако вновь созданное поле обладает свойствами по-умолчанию, а не такими же как у изначального (что не удивительно). Меня конкретно интересует свойство comb, т.е. комбинация символов. В документации приведён пример реализации того, что мне нужно:<br /></p><div class="codebox"><pre><code>var f = myDoc.addField(&quot;Name.Last&quot;, &quot;text&quot;, 0,[ inch, Bbox[1]-inch, 3*inch, Bbox[1]- inch - 14 ] );
	f.comb = true; // Declare this is a comb field
	f.charLimit = 10; // Max number of characters</code></pre></div><p>Как видно из примера, после свойства comb должно быть charLimit. Свойство comb установить не удаётся никак вообще. Применить charLimit получается, но поле не становится comb, а просто приобретает ограничение на количество символов. Как уже только ни пробовал и как в интернетах ни копался - всё без толку. Буду благодарен, если кто-то сможет помочь или хотя бы что-то посоветовать. Привожу код примера для ahk:<br /></p><div class="codebox"><pre><code>fileName:=&quot;test.pdf&quot;
newFieldName:=&quot;newF&quot;
oldFieldName:=&quot;oldF&quot;
gApp:=ComObjCreate(&quot;AcroExch.app&quot;)
avDoc:=ComObjCreate(&quot;AcroExch.AVDoc&quot;)
If avDoc.Open(fileName, &quot;&quot;) 
{
	gApp.show()
	pdDoc:=avDoc.GetPDDoc()
	jso:=pdDoc.GetJSObject
	fdPage:=jso.getField(oldFieldName).Page
	fdRect:=jso.getField(oldFieldName).rect
	field:=jso.addField(newFieldName,&quot;text&quot;,fdPage,fdRect) ; До этого момента всё работает как задумано
	field.comb:=true	; Error:  0x80070057 - Параметр задан неверно. Specifically: comb
	field.charLimit:=10	; код срабатывает, но результат не тот, который ожидался
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (NickName)]]></author>
			<pubDate>Thu, 22 Jun 2023 15:26:40 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=158565#p158565</guid>
		</item>
	</channel>
</rss>
