<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: изменение свойств редактируемых полей файла pdf]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=17842&amp;type=atom" />
	<updated>2023-06-27T12:00:31Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=17842</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: изменение свойств редактируемых полей файла pdf]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=158608#p158608" />
			<content type="html"><![CDATA[<p><strong>Malcev</strong><br />Перепроверил, это у меня ошибка была, извиняюсь. Ваш вариант работает, и он попроще <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> Спасибо.</p>]]></content>
			<author>
				<name><![CDATA[NickName]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=43214</uri>
			</author>
			<updated>2023-06-27T12:00:31Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=158608#p158608</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: изменение свойств редактируемых полей файла pdf]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=158606#p158606" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2023-06-26T14:53:47Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=158606#p158606</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: изменение свойств редактируемых полей файла pdf]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=158603#p158603" />
			<content type="html"><![CDATA[<p><strong>Malcev</strong><br />Ваш код не вызывает ошибки, но и результата не даёт, т.е. поле остаётся с ограничением по количеству символов, но не становится comb.</p>]]></content>
			<author>
				<name><![CDATA[NickName]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=43214</uri>
			</author>
			<updated>2023-06-26T11:22:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=158603#p158603</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: изменение свойств редактируемых полей файла pdf]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=158586#p158586" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2023-06-24T21:34:32Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=158586#p158586</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: изменение свойств редактируемых полей файла pdf]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=158574#p158574" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[NickName]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=43214</uri>
			</author>
			<updated>2023-06-23T08:59:05Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=158574#p158574</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: изменение свойств редактируемых полей файла pdf]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=158569#p158569" />
			<content type="html"><![CDATA[<p>Тогда возможно это получится сделать только в контексте реального джаваскрипта. Из AHK джаваскрипт можно запустить с помощью <a href="https://github.com/Lexikos/ActiveScript.ahk/tree/for-v1#jsrt">JsRT</a>.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2023-06-22T19:36:19Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=158569#p158569</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: изменение свойств редактируемых полей файла pdf]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=158568#p158568" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong><br />Спасибо за отклик, но, к сожалению, оба варианта приводят к той же самой ошибке.</p>]]></content>
			<author>
				<name><![CDATA[NickName]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=43214</uri>
			</author>
			<updated>2023-06-22T18:02:35Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=158568#p158568</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: изменение свойств редактируемых полей файла pdf]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=158567#p158567" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2023-06-22T16:46:27Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=158567#p158567</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: изменение свойств редактируемых полей файла pdf]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=158565#p158565" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[NickName]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=43214</uri>
			</author>
			<updated>2023-06-22T15:26:40Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=158565#p158565</id>
		</entry>
</feed>
