ÐаÑиÑнеÑе Tab в PDF ÑоÑмÑлÑÑ, изгÑаден Ð¾Ñ Ð²Ð°ÑÐ¸Ñ ÐºÐ¾Ð´, и кÑÑÑоÑÑÑ Ñе Ñе озове на две полеÑа ÑазÑÑоÑние Ð¾Ñ Ð¼ÑÑÑоÑо, кÑдеÑо ÑÑÑбва, или Ñе пÑопÑÑне изÑÑло вÑоÑаÑа колона, или Ñе Ñе вÑÑне в наÑалоÑо Ñлед ÑÑеÑоÑо поле вмеÑÑо Ñлед ÑеÑвÑÑÑоÑо. ЧовекÑÑ, попÑÐ»Ð²Ð°Ñ ÑакÑÑÑа вÑв ваÑÐ¸Ñ Ð²Ð¸Ð·ÑализаÑоÑ, оÑаква клавиаÑÑÑаÑа да пÑемине пÑез ÑоÑмÑлÑÑа по ÑÑÑÐ¸Ñ Ð½Ð°Ñин, по койÑо ÑабоÑи вÑв вÑеки Ñеб ÑоÑмÑлÑÑ. ÐогаÑо Ñова не Ñе ÑлÑÑи, Ñой поÑÑга кÑм миÑкаÑа, ÑÑÑÑи ÑледваÑоÑо поле и ÑÐ¸Ñ Ð¾ ÑеÑава, Ñе инÑÑÑÑменÑÑÑ Ð²Ð¸ не е завÑÑÑен. ÐÑедвидимоÑо пÑеминаване пÑез полеÑаÑа е ÑазликаÑа Ð¼ÐµÐ¶Ð´Ñ Ð²Ð¸Ð·ÑализаÑÐ¾Ñ Ð·Ð° вÑвеждане на данни, койÑо поÑÑебиÑелиÑе пÑоÑÑо ÑолеÑиÑаÑ, и ÑакÑв, на койÑо Ð¸Ð¼Ð°Ñ Ð´Ð¾Ð²ÐµÑие, и Ñова завиÑи изÑÑло Ð¾Ñ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ð½ÐµÑо на пÑÐ°Ð²Ð¸Ð»Ð½Ð¸Ñ API за ÑокÑÑ, вмеÑÑо да имиÑиÑаÑе вÑвеждане Ð¾Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑаÑа ÑÑÑ ÑимÑлиÑани ÑÑакваниÑ.
ÐÑимеÑиÑе по-Ð´Ð¾Ð»Ñ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ñ PDFium Component â?базиÑан на PDFium VCL/LCL ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ Ð·Ð° Delphi, C++Builder и Lazarus. ÐавигаÑиÑÑа е едно Ð¾Ñ ÑÑиÑе неÑа, коиÑо визÑализаÑоÑÑÑ Ð½Ð° ÑоÑмÑлÑÑи ÑÑÑбва да изпÑлнÑва пÑавилно; дÑÑгиÑе две â?пÑавилноÑо оÑваÑÑне на ÑоÑмÑлÑÑа и запазванеÑо на попÑлнениÑе ÑÑойноÑÑи, Ñака Ñе дейÑÑвиÑелно да Ñе поÑвÑÑ, Ñа меÑÑаÑа, кÑдеÑо Ñе кÑиÑÑ Ð¿Ð¾Ð²ÐµÑеÑо изненади. ÐаÑова и ÑÑиÑе Ñеми Ñа Ñазгледани по-долÑ.
ÐÑваÑÑне на ÑоÑмÑлÑÑ: FormFill, FormType, и вÑпÑоÑÑÑ Ð·Ð° XFA
ÐоÑÑÑпÑÑ Ð´Ð¾ полеÑаÑа изиÑква подÑиÑÑемаÑа за попÑлване на ÑоÑмÑлÑÑи, ÑпÑавлÑвана Ð¾Ñ ÑвойÑÑвоÑо FormFill, да бÑде акÑивиÑана пÑеди оÑваÑÑнеÑо на докÑменÑа. След каÑо Ñе акÑивиÑа, FormType ви показва Ñ ÐºÐ°ÐºÑв Ñип ÑоÑмÑлÑÑ Ñи имаÑе ÑабоÑа, а оÑговоÑÑÑ Ð¿ÑÐ¾Ð¼ÐµÐ½Ñ Ð½Ð°Ð±Ð¾Ñа Ð¾Ñ ÑÑнкÑии, коиÑо можеÑе да гаÑанÑиÑаÑе:
Pdf.FileName := FormPath;
Pdf.FormFill := True; // enable before Active; required for any field access
Pdf.Active := True;
case Pdf.FormType of
ftNone:
DisableFormPanel('This document has no interactive form');
ftAcroForm:
BuildFieldList; // full field navigation and editing available
ftXfaFull:
ShowXfaNotice; // XFA renders from its own XML template;
// treat field editing as limited
end;
ÐÑ Ñова ÑÐ»ÐµÐ´Ð²Ð°Ñ Ð´Ð²Ðµ пÑакÑиÑеÑки бележки. AcroForm е ÑÑандаÑÑниÑÑ Ð¼Ð¾Ð´ÐµÐ» на ÑоÑмÑлÑÑ Ð¿Ð¾ ISO 32000 и е Ñова, кÑм коеÑо Ñа наÑоÑени вÑиÑки пÑедÑÑавени ÑÑк пÑиложни пÑогÑамни инÑеÑÑейÑи (API). XFA докÑменÑиÑе вгÑÐ°Ð¶Ð´Ð°Ñ ÑобÑÑвена аÑÑ
иÑекÑÑÑа за XML ÑоÑмÑлÑÑи, Ñака Ñе обеÑаванеÑо на пÑлно ÑедакÑиÑане на XFA на ÐºÐ»Ð¸ÐµÐ½Ñ Ñлед бÑÑза демонÑÑÑаÑÐ¸Ñ Ð½Ð° AcroForm е ангажименÑ, за койÑо Ñе ÑÑжалÑваÑе. ÐÑоÑаÑа бележка Ñе оÑнаÑÑ Ð´Ð¾ ÑÑÑаниÑниÑе еÑекÑи: задаванеÑо на FormFill на True иниÑиализиÑа и JavaScript кода в докÑменÑа. ÐÑи визÑализаÑÐ¾Ñ Ð·Ð° вÑвеждане на данни Ñова е абÑолÑÑно вÑÑно, ÑÑй каÑо ÑкÑипÑовеÑе за изÑиÑление Ñа Ñова, коеÑо поддÑÑжа обÑаÑа ÑÑма акÑÑална, докаÑо поÑÑебиÑелÑÑ Ð¿Ð¸Ñе. РпÑозоÑÐµÑ Ð·Ð° пÑедваÑиÑелен пÑеглед на Ñайлове Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑÑен пÑоизÑ
од Ñова обаÑе е гÑеÑно. СÑаÑиÑÑа за ÑигÑÑен пÑедваÑиÑелен пÑеглед на PDF Ñазглежда дÑÑгаÑа ÑÑÑана на Ñози компÑÐ¾Ð¼Ð¸Ñ Ñ Ð½Ð°ÑÑÑойкаÑа FormFill := False.
ÐÑеминаване Ñ ÐºÐ»Ð°Ð²Ð¸Ñа Tab, коеÑо оÑвежда поÑÑебиÑелиÑе Ñам, кÑдеÑо оÑакваÑ
Ðа Ñе вÑÑнем на пÑоблема Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑаÑа Ð¾Ñ ÑамоÑо наÑало. ÐзкÑÑениеÑо е да Ñе ÑимÑлиÑа Tab ÑÑез изкÑÑÑвено кликване Ñ Ð¼Ð¸ÑкаÑа вÑÑÑ
Ñ Ð¿ÑавоÑгÑлника на ÑледваÑÐ¸Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ, коеÑо Ñе пÑÐ¾Ð²Ð°Ð»Ñ Ð² моменÑа, в койÑо дадено поле Ñе ÑкÑолиÑа извÑн екÑана или два компоненÑа Ñе заÑÑÑпÑÑ. ÐмеÑÑо Ñова API за ÑокÑÑ Ð¿ÑемеÑÑва ÑокÑÑа на ÑÐ°Ð¼Ð¸Ñ ÑоÑмÑлÑÑ Ð´Ð¸ÑекÑно, без геомеÑÑиÑни догадки. ÐÐµÑ Ð¿Ð¾Ð²Ð¸ÐºÐ²Ð°Ð½Ð¸Ñ Ð¿Ð¾ÐºÑÐ¸Ð²Ð°Ñ Ñази ÑÑнкÑиÑ: FocusFormField по индекÑ, FocusNextFormField и FocusPreviousFormField за пÑеминаване, FocusedFormFieldIndex за ÑеÑене на ÑекÑÑаÑа позиÑÐ¸Ñ Ð¸ ClearFormFieldFocus за пÑлно пÑемаÑ
ване на ÑокÑÑа.
procedure TFormViewer.HandleTabKey(Shift: TShiftState);
begin
if ssShift in Shift then
PdfView.FocusPreviousFormField
else
PdfView.FocusNextFormField;
UpdateFieldStatus; // e.g. "Field 4 of 17: InvoiceDate"
end;
Ðдно поведение, коеÑо може да обÑÑка ÑазÑабоÑÑиÑиÑе, е заÑиклÑнеÑо (wrap). ÐÑеминаванеÑо ÑабоÑи ÑпоÑед Ñеда на клавиÑа Tab на ÑекÑÑаÑа ÑÑÑаниÑа и Ñе вÑÑÑи в ÑикÑл: пÑеминеÑе Ñлед поÑледноÑо поле и Ñе Ñе вÑÑнеÑе на пÑÑвоÑо. РдвеÑе ÑÑнкÑии за ÑÑÑпка вÑÑÑÐ°Ñ Ð½Ð¾Ð²Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð° полеÑо, или -1, когаÑо ÑÑÑаниÑаÑа не ÑÑдÑÑжа полеÑа. Това заÑиклÑне е за вÑÑка ÑÑÑаниÑа оÑделно, а не за ÑÐµÐ»Ð¸Ñ Ð´Ð¾ÐºÑменÑ, коеÑо ознаÑава, Ñе пÑеминаванеÑо кÑм ÑледваÑаÑа ÑÑÑаниÑа е ваÑа задаÑа, а не на библиоÑекаÑа. СÑавнеÑе вÑÑнаÑÐ¸Ñ Ð¸Ð½Ð´ÐµÐºÑ Ñ Ñози, Ð¾Ñ ÐºÐ¾Ð¹Ñо ÑÑе запоÑнали, забележеÑе кога е напÑавил пÑлен кÑÑг и пÑоменеÑе Ñами PageNumber, ако ÑоÑмÑлÑÑÑÑ ÑÑÑбва да Ñе ÑеÑе каÑо една непÑекÑÑнаÑа поÑледоваÑелноÑÑ. ÐÑопÑÑнеÑе Ñази пÑовеÑка и ÑоÑмÑлÑÑ Ð¾Ñ Ð´Ð²Ðµ ÑÑÑаниÑи ÑиÑ
о Ñе блокиÑа кÑÑÑоÑа на пÑÑваÑа ÑÑÑаниÑа.
ÐÑеминаванеÑо ÑÑава наиÑÑина полезно, когаÑо оÑÑаналаÑа ÑаÑÑ Ð¾Ñ Ð¿Ð¾ÑÑебиÑелÑÐºÐ¸Ñ Ð¸Ð½ÑеÑÑÐµÐ¹Ñ ÑеагиÑа на него. СÑбиÑиеÑо OnFormFieldEnter Ñе задейÑÑва пÑи пÑиÑÑигане на ÑокÑÑа, а вÑв визÑализаÑоÑа OnFormFieldFocusChange ÑÑобÑава Ð½Ð¾Ð²Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð° полеÑо, Ñака Ñе ÑÑÑаниÑниÑÑ Ð¿Ð°Ð½ÐµÐ» да може да Ñе ÑинÑ
ÑонизиÑа Ñ Ñова, коеÑо ÑокÑ-жо е избÑано Ð¾Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑаÑа. ÐогаÑо Ñе нÑждаеÑе Ð¾Ñ Ð¾Ð±ÑаÑноÑо ÑÑпоÑÑавÑне (Ð¾Ñ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð½Ð° екÑана кÑм поле), индекÑиÑаноÑо ÑвойÑÑво FormFieldAt извÑÑÑва ÑеÑÑ Ð·Ð° ÑÑвпадение (hit-testing) за подÑказки и панели за ÑедакÑиÑане пÑи ÑÑакване. ÐÑиÑко Ñова ноÑи и ÑкÑиÑо пÑедимÑÑво за доÑÑÑпноÑÑÑа: ÑÑй каÑо ÑокÑÑÑÑ Ñледва ÑобÑÑÐ²ÐµÐ½Ð¸Ñ Ñед на полеÑаÑа в докÑменÑа, пÑÑÑÑ, койÑо конÑигÑÑиÑаÑе за клавиÑа Tab, ÑÑвпада Ñ Ð¿ÑÑÑ, койÑо ÑоÑÑÑеÑÑÑ Ð·Ð° ÑеÑене на екÑана ÑÑобÑава, без никакви допÑлниÑелни ÑÑилиÑ.
ÐоказванеÑо на именаÑа на полеÑаÑа вмеÑÑо необÑабоÑениÑе им индекÑни номеÑа изиÑква оÑе едно ÑвойÑÑво. FormFieldInfo[] вÑÑÑа Ð·Ð°Ð¿Ð¸Ñ TPdfFormFieldInfo за вÑеки индекÑ, ÑÑдÑÑÐ¶Ð°Ñ Ð¸Ð¼ÐµÑо на полеÑо, Ñипа, ÑазмеÑа на ÑÑиÑÑа, оÑмеÑнаÑоÑо ÑÑÑÑоÑние, ÑÑойноÑÑÑа за екÑпоÑÑиÑане и ÑленÑÑвоÑо в гÑÑпи â?коеÑо е ÑоÑно Ñова, коеÑо ÑÑÑбва да Ñе показва в ÑпиÑÑка за навигаÑÐ¸Ñ (âÐолÐ?4 Ð¾Ñ 17: InvoiceDateâ?вмеÑÑо â?â?. ÐÑÑпиÑе Ð¾Ñ Ñадио бÑÑони (Radio groups) Ñа ÑлÑÑай, за койÑо Ñи ÑÑÑÑва да имаÑе ÑпеÑиален ÑеÑÑов Ñайл. ÐÑколко компоненÑа Ð¼Ð¾Ð³Ð°Ñ Ð´Ð° ÑподелÑÑ ÐµÐ´Ð½Ð¾ и ÑÑÑо име на поле, Ñака Ñе ÑпиÑÑк, Ñглобен без ÑÑобÑазÑване Ñ Ñова, показва една и ÑÑÑа гÑÑпа нÑколко пÑÑи и обÑÑква поÑÑебиÑелиÑе.
ÐаÑо попÑлнениÑе ÑÑойноÑÑи Ñе Ð¿Ð¾ÐºÐ°Ð·Ð²Ð°Ñ Ð¿Ñазни и повикванеÑо, коеÑо ÑеÑава пÑоблема
ÐÑÑгоÑо оплакване, коеÑо ÑеÑÑо пÑлни ÑпиÑÑÑиÑе Ñ ÑÐµÑ Ð½Ð¸ÑеÑка поддÑÑжка, е по-ÑÑевожно Ð¾Ñ Ð½ÐµÐ¿Ñавилно ÑабоÑеÑÐ¸Ñ ÐºÐ»Ð°Ð²Ð¸Ñ Tab: ÑоÑмÑлÑÑÑÑ Ñе попÑлва пÑогÑамно, клиенÑÑÑ Ð³Ð¾ оÑваÑÑ Ð² Acrobat и вÑÑко поле изглежда пÑазно. ÐликнеÑе в дадено поле и ÑÑойноÑÑÑа Ð¼Ñ Ð²ÐµÐ´Ð½Ð°Ð³Ð° Ñе поÑвÑва. ÐанниÑе Ñа вÑв Ñайла пÑез ÑÑлоÑо вÑеме. Това, коеÑо липÑва, е визÑализаÑиÑÑа на данниÑе, а пÑиÑинаÑа Ñи ÑÑÑÑва да Ñе ÑазбеÑе веднÑж, заÑоÑо обÑÑнÑва ÑÑл ÐºÐ»Ð°Ñ Ð¾Ñ Ð¿Ñоблеми.
ТекÑÑовоÑо поле на AcroForm ÑÑÑ ÑанÑва ÑÑойноÑÑÑа Ñи в запиÑа /V Ð¾Ñ ÑеÑника на полеÑо (ISO 32000-1 §12.7.3.3). Това, коеÑо визÑализаÑоÑÑÑ Ð´ÐµÐ¹ÑÑвиÑелно изÑеÑÑава, е неÑо оÑделно: поÑокÑÑ Ð·Ð° вÑнÑен вид на компоненÑа под /AP (§12.5.5), малÑк пÑедваÑиÑелно ÑендиÑан оÑкÑÑ Ð¾Ñ ÑÑдÑÑжание. Ðко запиÑеÑе /V и оÑÑавиÑе /AP непÑоменено, двеÑе ÑÑойноÑÑи Ñе ÑазминаваÑ. СÑойноÑÑÑа ÑÑÑеÑÑвÑва, но ÑендиÑанаÑа веÑÑÐ¸Ñ Ðµ оÑÑаÑÑла или липÑва. Acrobat вÑзÑÑановÑва вÑнÑÐ½Ð¸Ñ Ð²Ð¸Ð´ на полеÑо, когаÑо Ñо полÑÑи ÑокÑÑ, коеÑо напÑлно обÑÑнÑва заÑо ÑÑойноÑÑиÑе Ñе поÑвÑÐ²Ð°Ñ Ñамо пÑи ÑÑакване. СÑаÑиÑÑ Ñлаг NeedAppearances, койÑо изиÑкваÑе Ð¾Ñ Ð²Ð¸Ð·ÑализаÑоÑиÑе да ÑегенеÑиÑÐ°Ñ Ð²ÑнÑÐ½Ð¸Ñ Ð²Ð¸Ð´ вмеÑÑо ваÑ, никога не е ÑабоÑил еднакво навÑÑкÑде и е пÑÐµÐ¼Ð°Ñ Ð½Ð°Ñ Ð² PDF 2.0, а ÑÑÑвÑÑиÑе за пеÑÐ°Ñ Ð¸ генеÑаÑоÑиÑе на миниаÑÑÑи го игноÑиÑÐ°Ñ Ð½Ð°Ð¿Ñлно. Те изÑеÑÑÐ°Ð²Ð°Ñ Ñамо /AP, Ñака Ñе ако /AP е пÑазен, Ñе оÑпеÑаÑÐ²Ð°Ñ Ð¿Ñазна кÑÑиÑ.
ÐÑиÑвоÑванеÑо на ÑÑойноÑÑ ÑÑез FormField[i] запиÑва Ñамо /V. ÐÑо заÑо попÑлванеÑо на ÑоÑмÑлÑÑ Ðµ поÑледоваÑелноÑÑ Ð¾Ñ ÑÑи ÑÑÑпки, а ÑÑÑпкаÑа, коÑÑо ÑазÑабоÑÑиÑиÑе ÑеÑÑо пÑопÑÑкаÑ, е ÑÑеднаÑа:
procedure TFormViewer.FillAndSave(const Values: array of WString;
const OutputPath: string);
var
i: Integer;
begin
for i := 0 to Pdf.FormFieldCount - 1 do
Pdf.FormField[i] := Values[i]; // writes /V only
// Rebuild the /AP appearance streams; without this the form
// looks blank in Acrobat until each field is clicked
Pdf.GenerateFormAppearances;
Pdf.SaveAs(OutputPath);
end;
ÐеÑодÑÑ GenerateFormAppearances е ÑÑлоÑо ÑеÑение. Той вÑзÑÑановÑва поÑока за вÑнÑен вид на вÑеки ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ Ð²Ñз оÑнова на ÑекÑÑиÑе ÑÑойноÑÑи, ÑÑиÑÑове и подÑавнÑване, Ñака Ñе визÑализаÑоÑи без обÑабоÑка на ÑокÑÑ, ÑÑÑвÑÑ Ð·Ð° пеÑÐ°Ñ Ð¸Ð»Ð¸ генеÑаÑоÑи на миниаÑÑÑи да изобÑазÑÐ²Ð°Ñ Ð¿Ñавилно попÑлненоÑо ÑÑÑÑоÑние. ÐзвикайÑе го веднÑж Ñлед ÑÑлаÑа гÑÑпа Ð¾Ñ Ð¿Ñомени, а не за вÑÑко поле пооÑделно. ÐенеÑиÑанеÑо на вÑнÑен вид извÑÑÑва Ñеално оÑоÑмÑне на оÑоÑмлениеÑо и повикваниÑÑа за вÑÑко поле излиÑно биÑ
а наÑоваÑили ÑиÑÑемаÑа пÑи големи ÑоÑмÑлÑÑи.
РегенеÑиÑанеÑо на вÑнÑÐ½Ð¸Ñ Ð²Ð¸Ð´ е ÑÑÑо Ñака моменÑÑÑ, в койÑо Ñе пÑÐ¸Ð»Ð°Ð³Ð°Ñ ÑÑиÑÑовеÑе и подÑавнÑванеÑо, коеÑо е изÑоÑник на допÑлниÑелна изненада. ÐовиÑÑ Ð¿Ð¾Ñок Ñазполага вÑÑка ÑÑойноÑÑ Ð² пÑавоÑгÑлника на компоненÑа, използвайки ÑÑиÑÑа, ÑазмеÑа и подÑавнÑванеÑо на полеÑо. СÑойноÑÑ, коÑÑо Ñе ÑÑбиÑа ноÑмално вÑв ваÑÐ¸Ñ ÑеÑÑов ÑоÑмÑлÑÑ, може да бÑде изÑÑзана или ÑвиÑа в копиеÑо на клиенÑа, кÑдеÑо ÑÑÑоÑо поле е по-ÑÑÑно. ÐолеÑаÑа Ñ Ð°Ð²ÑомаÑиÑен ÑÐ°Ð·Ð¼ÐµÑ (ÑÐ°Ð·Ð¼ÐµÑ Ð½Ð° ÑÑиÑÑа нÑла) ÑÐ²Ð¸Ð²Ð°Ñ ÑекÑÑа, за да Ñе ÑÑбеÑе; Ñези Ñ ÑикÑиÑан ÑÐ°Ð·Ð¼ÐµÑ Ð¿ÑоÑÑо го изÑÑзваÑ. РдваÑа ÑлÑÑÐ°Ñ Ñа валидни ÑпоÑед ÑпеÑиÑикаÑиÑÑа и единÑÑÐ²ÐµÐ½Ð¸Ñ ÑигÑÑен наÑин да ÑазбеÑеÑе какво пÑави даден ÑоÑмÑлÑÑ Ðµ да ÑазгледаÑе ÑегенеÑиÑÐ°Ð½Ð¸Ñ Ð¸Ð·Ñ Ð¾Ð´, а не Ñамо низа, койÑо ÑÑе запиÑали. ÐогаÑо нÑкой ÑÑобÑи за оÑÑÑзан ÑекÑÑ Ð² кÑÐ°Ñ Ð½Ð° кÑÑиÑÑа, Ñова поÑÑи винаги е пÑиÑинаÑа.
ТÑеÑиÑайÑе пÑовеÑкаÑа каÑо ÑаÑÑ Ð¾Ñ Ð·Ð°Ð²ÑÑÑванеÑо на ÑабоÑаÑа, а не каÑо закÑÑнÑла идеÑ. ÐÑвоÑеÑе запиÑÐ°Ð½Ð¸Ñ Ñайл в Acrobat и поÑвÑÑдеÑе, Ñе ÑÑойноÑÑиÑе Ñа видими, пÑеди да докоÑнеÑе коеÑо и да е поле. След каÑо го оÑпеÑаÑаÑе в PDF или в изобÑажение Ð¾Ñ Ð´ÑÑг визÑализаÑоÑ, койÑо игноÑиÑа логикаÑа на ÑоÑмÑлÑÑа изÑÑло, и Ñе ÑвеÑеÑе, Ñе ÑÑойноÑÑиÑе Ñе Ð·Ð°Ð¿Ð°Ð·Ð²Ð°Ñ Ð¸ Ñам. Тези две пÑовеÑки заедно ÑлавÑÑ Ð²Ñеки ваÑÐ¸Ð°Ð½Ñ Ð½Ð° Ñазминаване Ð¼ÐµÐ¶Ð´Ñ /V и /AP.
ÐонÑигÑÑаÑии на полеÑа, коиÑо пÑÐµÐ¼Ð¸Ð½Ð°Ð²Ð°Ñ Ð´ÐµÐ¼Ð¾Ñо, но Ñе пÑовалÑÑ Ð½Ð° пÑакÑика
ЧиÑÑиÑе демо ÑоÑмÑлÑÑи кÑиÑÑ ÑедиÑа гÑаниÑни ÑлÑÑаи, коиÑо не Ñе ÑÑеÑÐ°Ñ Ð² клиенÑÑкиÑе Ñайлове. ЧеÑиÑи Ð¾Ñ ÑÑÑ Ñа пÑиÑина за повеÑеÑо ÑÑобÑÐµÐ½Ð¸Ñ Ð¾Ñ Ñипа âÑабоÑеÑе на Ð¼Ð¾Ñ ÐºÐ¾Ð¼Ð¿ÑÑÑÑâ?
- СÑойноÑÑи за екÑпоÑÑиÑане на квадÑаÑÑеÑа за оÑмеÑка (Checkbox). СÑÑÑоÑниеÑо âвклÑÑеноâ?не винаги е
Yes. Ðаден ÑоÑмÑлÑÑ Ð¼Ð¾Ð¶Ðµ да деÑиниÑа ÑобÑÑвена ÑÑойноÑÑ Ð·Ð° екÑпоÑÑиÑане и запиÑванеÑо на гÑеÑен низ оÑÑÐ°Ð²Ñ ÐºÑÑийкаÑа визÑално неоÑмеÑнаÑа, докаÑо ваÑиÑÑ ÐºÐ¾Ð´ е Ñбеден, Ñе Ñ Ðµ задал. ЧеÑеÑе ÑÑойноÑÑÑа за екÑпоÑÑиÑане оÑFormFieldInfo[], вмеÑÑо да пÑавиÑе пÑедположениÑ. - ÐÑÑпи Ñадио бÑÑони ÑÑÑ Ñподелено име. Ðдно поле, нÑколко компоненÑа. СÑойноÑÑÑа, коÑÑо пÑиÑвоÑваÑе, опÑÐµÐ´ÐµÐ»Ñ ÐºÐ¾Ð¹ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ Ñе ÑÑиÑа за избÑан, Ñака Ñе кодÑÑ Ð½Ð° поÑÑебиÑелÑÐºÐ¸Ñ Ð¸Ð½ÑеÑÑейÑ, коÑоÑÑй пÑедполага, Ñе едно име ÑÑоÑвеÑÑÑва на един пÑавоÑгÑлник, завÑÑÑва Ñ Ð¸Ð·ÑеÑÑаване на ÑокÑÑÐ½Ð¸Ñ Ð¿ÑÑÑÑен вÑÑÑ Ñ Ð³ÑеÑÐ½Ð¸Ñ Ð±ÑÑон.
- ÐзÑиÑлÑеми полеÑа. ÐбÑиÑе ÑÑми, поддÑÑжани Ð¾Ñ JavaScript в докÑменÑа, Ñе акÑÑализиÑÐ°Ñ Ð² оÑÐ³Ð¾Ð²Ð¾Ñ Ð½Ð° ÑÑбиÑÐ¸Ñ Ð² полеÑаÑа. ÐÑогÑамноÑо попÑлване, коеÑо Ð·Ð°Ð¾Ð±Ð¸ÐºÐ°Ð»Ñ Ñези ÑÑбиÑиÑ, ÑÑÑбва или да задейÑÑва пÑеизÑиÑлÑване, или диÑекÑно да пÑезапиÑе изÑиÑлÑемиÑе полеÑа. ФоÑмÑлÑÑ, в койÑо оÑделниÑе позиÑии и кÑайнаÑа ÑÑма не ÑÑвпадаÑ, е по-Ð»Ð¾Ñ Ð¾Ñ Ð²ÑÑко дÑÑго ÑеÑение.
- СкÑиÑи задÑлжиÑелни полеÑа. ÐинамиÑниÑе ÑоÑмÑлÑÑи ÑкÑÐ¸Ð²Ð°Ñ Ð¿Ð¾Ð»ÐµÑа, коиÑо вÑе оÑе Ñа маÑкиÑани каÑо задÑлжиÑелни. РеÑеÑе пÑедваÑиÑелно дали ваÑаÑа валидаÑÐ¸Ñ Ð·Ð°ÑиÑа видимоÑÑÑа или необÑабоÑÐµÐ½Ð¸Ñ Ñлаг за задÑлжиÑелно поле, и Ñлед Ñова запиÑеÑе Ñова ÑеÑение нÑкÑде, кÑдеÑо поддÑÑжкаÑа може да го намеÑи.
Ðдна Ñазлика Ñи ÑÑÑÑва да Ñе изÑÑни оÑÑано: генеÑиÑанеÑо на вÑнÑен вид не е Ñливане (flattening). GenerateFormAppearances пÑави ÑÑойноÑÑиÑе видими навÑÑкÑде, каÑо оÑÑÐ°Ð²Ñ Ð¿Ð¾Ð»ÐµÑаÑа ÑедакÑиÑÑеми. СливанеÑо вгÑажда вÑнÑÐ½Ð¸Ñ Ð²Ð¸Ð´ в ÑÑаÑиÑноÑо ÑÑдÑÑжание на ÑÑÑаниÑаÑа и пÑемаÑ
ва инÑеÑакÑивноÑÑÑа завинаги â?коеÑо е подÑ
одÑÑо за аÑÑ
ивно копие, но гÑеÑно за ÑоÑмÑлÑÑ, койÑо ÑледваÑиÑÑ Ñовек ÑÑÑбва да попÑлни. Ðко FormType оÑÑиÑа ftXfaFull вмеÑÑо ftAcroForm, ниÑо Ð¾Ñ Ð¸Ð½ÑеÑÑейÑа за ÑедакÑиÑане ÑÑк не Ñе пÑилага леÑно, ÑÑй каÑо докÑменÑÑÑ Ñе ÑендиÑа Ð¾Ñ ÑобÑÑвен XML Ñаблон; ÑазпознайÑе Ñози ÑлÑÑай и ÑведомеÑе поÑÑебиÑелÑ, вмеÑÑо да го оÑÑавÑÑе да оÑкÑие Ñова огÑаниÑение Ñам.
ÐодÑиÑÑемаÑа за попÑлване на ÑоÑмÑлÑÑи, пÑеминаванеÑо пÑез ÑокÑÑа и генеÑиÑанеÑо на вÑнÑен вид, показани ÑÑк, Ñа ÑаÑÑ Ð¾Ñ PDFium Component за Delphi, C++Builder, и Lazarus/FPC. Ðко ваÑиÑÑ Ð²Ð¸Ð·ÑализаÑÐ¾Ñ Ð¾Ð±ÑабоÑва и ÑеÑензенÑÑки маÑкиÑÐ°Ð½Ð¸Ñ Ð·Ð°ÐµÐ´Ð½Ð¾ Ñ Ð´Ð°Ð½Ð½Ð¸ Ð¾Ñ ÑоÑмÑлÑÑи, ÑÑаÑиÑÑа за пÑеглед на аноÑаÑии Ñазглежда Ñози ÑÑÑеден модел.