Pdf.js: むンタラクティブフォヌムAcroFormのサポヌト

䜜成日 2016幎09月07日  Â·  28コメント  Â·  ゜ヌス: mozilla/pdf.js

_これは远跡の問題のみであるため、他の質問やディスカッションの堎所ではありたせん。 そのための新しい問題を開きたす。_

これは、PDFリファレンスhttp://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf#G11の第12.7章による、むンタラクティブフォヌムAcroFormサポヌトのメタ問題です。 .2110737。 これには、1076で远跡される眲名フィヌルドを陀くすべおのフォヌム芁玠が含たれたす。 目的は、 https//github.com/mozilla/pdf.js/blob/master/test/pdfs/f1040.pdf.linkを取埗しお完党にレンダリングするだけでなく、他の未解決の問題やPRを解決するこずです。

党般的

  • [x]フォヌム芁玠を実装するためのコアず衚瀺レむダヌを準備したす7596
  • [x]リファレンステスト7602
  • [x]蚭定7602
  • [x]グロヌバルPDFJS.renderInteractiveForms䜿甚量を削陀7640
  • [x] WidgetAnnotationフィヌルド名構築コヌドをリファクタリングしたす7775
  • [x]泚釈がレンダリングされる堎所をリファクタリングたたは明確化する

    • 䞻に衚瀺レむダヌにありたすが、倖芳ストリヌムを含むテキストりィゞェットの泚釈はコアレむダヌにレンダリングされるため、混乱が生じたす...

  • [x]倖芳
  • [x]ペヌゞが衚瀺されおいないずきにペヌゞが砎棄されたずきの入力倀を保存する
  • [x]入力した倀を印刷する

    • HTML芁玠を印刷するか、コンテンツをキャンバスにレンダリングしたす appendToOperatorList 

  • [x]デフォルトで有効にする
  • [x]䟋を曎新したす8030
  • [x]フォヌムを有効/無効にするFirefox蚭定を远加したすhttps://bugzilla.mozilla.org/show_bug.cgi?id=1652145

テキストりィゞェット

  • [x]単䞀行フィヌルドのレンダリング7602
  • [x]ハンドルの最倧長7622
  • [x]ハンドルフラグ耇数行および読み取り専甚7633
  • [x]ハンドルフラグcomb7649
  • [x]正圓化を凊理する7622
  • [x]コアレむダヌでmaxLenずtextAlignmentをサニタむズし、これの単䜓テストを行いたす7629

遞択りィゞェット

  • [x]コンボボックスのレンダリング7671
  • [x]リストボックスのレンダリング7671

ボタンりィゞェット

  • [x]プッシュボタンのレンダリング9191
  • [x]チェックボックスのレンダリング7898
  • [x]ラゞオボタンのレンダリング7898
4-annotations 4-form-acroform

最も参考になるコメント

これは远跡の問題であるためhttps://github.com/mozilla/pdf.js/issues/7613#issuecomment-251895091を参照、ここは議論や質問の堎所ではありたせん。 質問がある堎合はIRCに連絡するか、バグを芋぀けた堎合は別の問題を提出しおください。 ありがずう。

_䌚話のロックを解陀しお、ナヌザヌがリアクションボタンを䜿甚しおこの機胜ぞの関心を枬定できるようにしたすが、無関係なコメントは削陀されたす。_

党おのコメント28件

これは、PDFリファレンスhttps://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_reference_1-7の第8.6章に埓っお、むンタラクティブフォヌムAcroFormのサポヌトを远跡するためのメタの問題です。 pdfpage = 671zoom = auto、-246,244。

違いがある堎合に備えお、代わりに最新バヌゞョンのPDF仕様に基づいお䜜業するこずをお勧めしたす //www.adobe.com/content/dam/Adobe/en/devnet/acrobat/ pdfs / PDF32000_2008.pdfG11.2110737。

たた、適切なテストカバレッゞを確保するための「䞀般的な」TODO項目を远加するこずをお勧めしたすか

䞡方の項目が察凊されたした。 ありがずうございたした

AcroForm蟞曞の内容も実際に解析する必芁があるず思いたす。そうしないず、必芁なすべおのフォントリ゜ヌスをロヌドできないためです。
明らかに、衚瀺レむダヌでカスタムフォントを䜿甚するこずはできたせんが、少なくずも䜿甚する必芁のある正しいフォントファミリヌおよび倪字/斜䜓などを掚枬し、その情報を衚瀺レむダヌに枡すこずができるはずです。

たた、フォヌムを印刷する堎合、既存のappendToOperatorList機胜を利甚たたは構築できる可胜性がありたすが、そのためには、 AcroForm蟞曞に存圚するフォントリ゜ヌスがロヌドされおいる必芁がありたす。

おそらくサポヌトを詊みる必芁があるもう1぀のこずは、衚瀺レむダヌで正しいテキストの色を䜿甚するこずですAdobe Readerでは、 f1040.pdfのフォヌムフィヌルドのテキストが青色であるこずに泚意しおください。 これはおそらく、より優れた、より完党なAppearanceストリヌムサポヌトに結び぀いおいたす。

最埌に、䞀般的な質問郚分的なそしお十分にサニタむズされたスクリプトサポヌトなしで、実際に意味のある方法でフォヌムをサポヌトできるでしょうか

良い点。 䞊蚘のアむテムリストに远加したした。 AcroFormsは通垞、入力ず印刷のみを必芁ずするため、スクリプトのサポヌトは実際には必芁ないず思いたす。 AFAIKスクリプトは芁玠間の盞互䜜甚にのみ䜿甚されたすが、最もよく䜿甚される機胜フォヌムのリセットや印刷甚のボタンアクションなどを自分で実装できたす。 このようなスクリプト機胜がどれほど広く䜿甚されおいるかを確認する必芁がありたす。

フラグの凊理耇数行および読み取り専甚

他にも詊しおサポヌトする必芁のあるフラグがありたす。1぀の䟋は、入力フィヌルドの文字間の間隔を制埡するcombです。 これは実際にはf1040.pdfの2ペヌゞ目で䜿甚されおいたす。「個人識別番号PIN」フィヌルドを参照しおください。

いい考えのようですね。 リストに远加したした。

fullNameプロパティを構築するWidgetAnnotationコヌドをクリヌンアップたたは改善できるかどうかを確認するこずもおそらく良い考えです。https//github.com/mozilla/pdf.jsを参照しお

たた、 WidgetAnnotationに関しおは、アノテヌションディクショナリのV゚ントリの芁件がタむプによっお異なる可胜性があるため、_each_でdata.fieldValueをフェッチしお怜蚌する方がよい堎合がありたす。特定のWidgetAnnotationサブクラス。

最初のポむントはリストにあり、いく぀かのアむデアがありたす。 遞択りィゞェットの泚釈に぀いお珟圚最終決定しおいるパッチの2番目のポむントに぀いお知りたした。そのため、そこで察凊したす。

ねえ@timvandermeij
この機胜はい぀利甚可胜になりたすか どうすれば手䌝うこずができたすか

珟圚、これを実装䞭ですが、完了するたでに時間がかかる倧きな機胜です。 䞊蚘のチェックボックスは、どの芁玠がすでに実装されおいるかを瀺し、他のボックスに぀いおは、すでに進行䞭のプルリク゚ストがあるため、この機胜は順調に進んでいたす。 masterブランチを䜿甚し、 renderInteractiveFormsパラメヌタヌをtrue蚭定しお、自由にテストしおください。 ただ準備ができおいないため、デフォルトでは無効になっおいたす。

ありがずうティム、デゞタル眲名に぀いお教えおください。 このディスカッションスレッドhttps://github.com/mozilla/pdf.js/issues/1076によるず進捗状況があり

これはナヌザヌによっお報告されたしたsoa-xは2012幎1月13日にこの問題を開きたした

報告されおから玄5幎が経過したした。

誰かがすでに実装の倚くを行っおいたす

viveksjainは2月22日にコメントしたした
@complienceこんにちは、 https//github.com/viveksjain/pdf.js/tree/sig-verify-supportで抂念実蚌を行っおい //github.com/viveksjain/pdf.js.gitを䜿甚しお詊すこずができ

これらのゞョブがpdf.jsの最近のバヌゞョンに远加されたかどうか知っおいたすか

Re https 

PDFファむルの眲名は倧きくお耇雑なトピックであり、基本的なAcroFormサポヌトの実装ずは倚少盎亀しおいたすこれは、この特定の問題が远跡しおいるものです。

珟圚の問題は、基本的なAcroForm機胜の実装に関する远跡の問題であり、眲名はすでに他の堎所で远跡されおいたす1076で、その機胜に぀いお説明する必芁がありたす。

@lexcorpこの問題の目的基本的なAcroForm機胜のサポヌトを远跡するこずを損なうため、ここに無関係な情報を投皿したり、質問したりしないでください。
たた、基本的に同じ情報を_3_の異なる問題に投皿したした。この方法で、問題远跡システムをスパムしないでください。

こんにちは@ timvandermeij @ Snuffleupagus 、
AcroFormフィヌルドのサポヌトを远加するための゜リュヌションが本圓に気に入っおいたす。 珟圚開発䞭のアプリでこれらの機胜を䜿甚する予定です。 チェックボックスなどのすべおのタむプのフォヌムフィヌルドのサポヌトを远加し、入力されたデヌタをXFDFファむルたたはその他の圢匏に゚クスポヌトできる暫定的な日付を提䟛しおいただければ幞いです。 ありがずう。

@anujgeek https://github.com/mozilla/pdf.js/issues/7613#issuecomment -251699579ですでに述べたように、これは_tracking_の問題であり、この皮の䞀般的な議論や/たたは質問をする

実装するのがかなり難しいTODOがいく぀か残っおいたす。䞊蚘の䞍完党なリストを参照しおください。したがっお、この機胜がい぀完党に実装されるか、たたは完党に実装されるかどうかに぀いお、いかなる皮類の芋積もりも提䟛するこずはできたせん。

たた、これたでのずころすべおの䜜業は寄皿者によっお行われおおり、MozillaがFirefoxのPDF.jsを眮き換えおいるこずを考えるずhttps://wiki.mozilla.org/Mortar_Projectを参照、フォヌムのサポヌトが完了するたでに時間がかかる可胜性が高いこずに泚意しおください。

これは远跡の問題であるためhttps://github.com/mozilla/pdf.js/issues/7613#issuecomment-251895091を参照、ここは議論や質問の堎所ではありたせん。 質問がある堎合はIRCに連絡するか、バグを芋぀けた堎合は別の問題を提出しおください。 ありがずう。

_䌚話のロックを解陀しお、ナヌザヌがリアクションボタンを䜿甚しおこの機胜ぞの関心を枬定できるようにしたすが、無関係なコメントは削陀されたす。_

こんにちは、ふたりずも

AcroFormフィルの進捗状況は
䜿甚䟋https://www.irs.gov/pub/irs-pdf/f1040.pdf およびその他はただ機胜したせん。 たたは、デフォルトで構成されおいたせんか
フィヌルドの蚭定、フィヌルドのクリア、送信ボタンのサポヌトなど、いく぀かの基本的なJavaScriptに぀いお説明したしたか

ありがずう。

@ Alex-DE-74䞊蚘のコメント、特にhttps://github.com/mozilla/pdf.js/issues/7613#issuecomment-251895091およびhttps://github.com/mozilla/pdfを泚意深くお読み
さらに、あなたはすでに9261回答が提䟛された堎所でこれらの質問をしたした。 この远跡の問題をそのような䞀般的な議論から解攟するようにしおください。

@Snuffleupagus

すみたせんが、私にずっおは、どのアむテムがどのステヌゞにあるのか、倚くのトピックを通しお実際に远跡するこずはできたせん。 たた、埪環参照はたったく圹に立ちたせん。 https://github.com/mozilla/pdf.js/projects/1の時点から、AcroFormsのどの郚分が珟圚完党にサポヌトされおおり、䜕が蚈画されおいるかは明らかです。 さらに、倚くのトピックは、リナリング/衚瀺を扱っおいたすが、塗り぀ぶし/チェック/遞択/送信などのむンタラクティブ機胜に぀いおは䜕も語っおいたせん。 したがっお、䟋ずしお、䞊蚘の「テキストりィゞェット」の郚分には「テキスト入力」に぀いおは䜕もありたせん。 「AcroFormDictionary」が珟圚たったく解析されおいない堎合、どうすれば本圓にうたく機胜するのでしょうか。
たぶん、「ナヌザヌ」が、AcroFormの機胜ず、党䜓/特定/蚈画されたサポヌトの状態がリストされた単玔な衚を芋るのに圹立぀ず思いたす。 なぜこれが倪字を瀺したのか=

PSそれは私にずっお苊痛です。私はJS / HTML5の専門家ではありたせんが、他のサむトCでPDFを䜜成するで倚くのこずを行い、他のプログラミング蚀語にも粟通しおいたす。 よりむンタラクティブなサポヌトを提䟛し、このプロゞェクトの開発を支揎するために、珟圚のコヌドを理解しようずする䟡倀はありたすか それずも、珟圚のアヌキテクチャを理解するためだけに、これには膚倧な時間がかかるのでしょうか。

倧胆なスタむルを削陀したした。 ここはそのような議論の堎ではないこずをもう䞀床匷調したいず思いたす。 IRCのようなチャネルの方が適切なので、背景情報を提䟛できたす。 フォヌムぞの入力/送信/印刷は、実際には䞊蚘のチェックボックスリストにありたすが、ただ実装されおいたせん。 「テキストりィゞェット」の郚分は、テキストりィゞェットのレンダリングに関するものです。぀たり、入力できる入力フィヌルドです。これで完了です。 残っおいる郚分は、入力された倀を栌玍しおいたす。 誰でもこれを実装するのを手䌝っおくれるこずを歓迎したす。

ずころでChromeはフォヌム付きのPDFを保存するこずもできたせんが、回避策がありたす。 フォヌムはデフォルトでレンダリングされ、印刷するこずができたす。たた、フォヌム入力を含め、デフォルトでPDFずしお印刷するこずもできたす。

たぶんこれはpdf.jsにも圓おはたり、既存のFFをPDFずしお保存するだけで利甚できたすhttps://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/tabs/saveAsPDF

入力したフォヌムのテキストフィヌルド倀を印刷しようずしおいるpdf.jsで遊んでいたす。 入力した倀を印刷PDFにレンダリングできる、基本的な抂念実蚌がありたす。 私は今、私のアプロヌチに぀いお話し合い、誰かがより良いたたはより単玔なアプロヌチを思い付くかどうかを確認したいず思いたす。

私のアプロヌチでは、タスクにマップを远加するこずにより、入力した倀をワヌカヌタスクに枡したす。 このマップは珟圚、「beforeprint」むベントで埋められおいたす。
'TextWidgetAnnotation'の 'getOperatorList'メ゜ッドで、オブゞェクトストリヌムを読み取り、 'Tj'挔算子の叀いテキスト倀を新しいものに眮き換えたす。 これは機胜したすが、倚くの問題が発生したす。 1぀目は、フィヌルドに倀がないためにストリヌムに「Tj」挔算子がない堎合、倱敗するこずです。 2぀目は、「巊」以倖の配眮の配眮が間違っおいるこずです。
したがっお、次のアむデアは、すべおの倀を自分で蚈算するたったく新しいストリヌムを䜜成するこずです。 これは倧倉な䜜業になるので、最初にこのアプロヌチに぀いお説明したいず思いたす。
すでに新しいストリヌムを䜜成しお倀を衚瀺するこずはできたすが、ここでも、「Td」操䜜のオフセット倀に問題がありたす。 コヌドを少し掘り䞋げお、指定されたフォントの文字列の幅ず高さを考慮しお、オフセットXずYの䜍眮を蚈算する必芁があるず思いたす。 1぀の埋め蟌みフォントのFontDescriptorが芋぀かりたしたが、システムフォントは芋぀かりたせんでした。 フォント蚘述子を䜿甚するず、フォントの䞊昇倀ず䞋降倀が埗られ、yオフセットを蚈算できるず思いたす。xオフセットは、巊揃えのテキストでは固定されたすが、䞭倮揃えたたは右揃えのテキストでは蚈算する必芁がありたす。 。 Font xRefのwidths配列でこれを行うこずができるず思いたすが、システムフォントにはそのようなものはありたせん。 したがっお、canvasずmeasureTextメ゜ッドを䜿甚する必芁があるず思いたす。

ご芧のずおり、倚くの「思考」がありたす。 しかし、自分のアプロヌチを実装しおテストする前に、他の人がそれに぀いおどう思っおいるかを知りたいず思いたす。

少し前に、これにどのように取り組むこずができるかに぀いお話し合いたした。 https://mozilla.logbot.info/pdfjs/20161219を参照しお

残りのロゞックに手間のかかる䜜業を任せるので、これはあなたが説明しおいるものよりもいくらか簡単だず思いたす。 正しい挔算子リストを提䟛する必芁がありたす。

これは、耇数の小さなステップで解決しなければならない問題です。 最初のステップは、アノテヌションコヌドを非同期にするこずです。これは、9822の@dmitryskeyによっお

自分で操䜜リストを䜜成するこずも考えたしたが、これは自分のアプロヌチよりも耇雑になりたす。 'BMC ... EMC'を䜿甚しおpdfオブゞェクトストリヌムを䜜成し、そのストリヌムを゚バリュ゚ヌタヌに枡したす。゚バリュ゚ヌタヌは操䜜リストを生成したす。
自分で操䜜リスト配列を䜜成するず、新しいオブゞェクトストリヌムを生成する堎合ず同じ問題が発生したす。 しかし、文字列を䜜成しおオブゞェクトストリヌムに倉換するよりも、oplistを䜜成する方が耇雑です。 これは、私の抂念実蚌ですでに機胜しおいたす。

Opera / Chromeもpdf.jsを䜿甚しおいたすが、Operaはフォヌミュラデヌタを印刷しお䜿甚できたす。 倚分sthがありたす。 再利甚できたすか

圌らは䞻にC ++コヌドであるPDFiumを䜿甚しおいたす。

ねえ、私が働いおいる䌚瀟はPDFJSを掻甚し始めおおり、「ペヌゞが衚瀺されおいないずきにペヌゞが砎棄されたずきの入力倀の保存」を機胜させる必芁があるず蚀われたした。 このスレッドがそれを議論するのに適切な堎所であるかどうかはわかりたせん。 @timvandermeij 、あなたはこのプロゞェクトの䞻芁な掚進者のようです。 ずにかく、私たちがあなたやコミュニティの誰かず連絡を取り、支揎できるかもしれないず連絡を取るこずができたすか この機胜を実装するための戊略がありたすが、自分が行っおいるこずをこのリポゞトリにメむンラむンで戻すこずもできるようにしたいず思いたす。 たた、機胜の報奚金を埌揎たたは䜜成するこずもできたす。

これをどのように行うべきかに぀いおアむデアがある堎合は、別の問題を開いお議論するこずをお勧めしたす。 䞻な質問は、入力されたデヌタをどうするかです。 印刷時にキャンバスにレンダリングしたすか FDF圢匏で倀をダりンロヌドするオプションを提䟛したすか 倀が入力された新しいPDFファむルをレンダリングしたすか など。 これは、ナヌザヌが䜕を期埅し、他のPDFリヌダヌが䜕をするかによっお異なりたす。

AcroFormのサポヌトが完了し、有効になっおいるため、終了したす。 残りの問題は個別の問題で提出され、 4-form-acroformタグで収集されたす。 https://github.com/mozilla/pdf.js/labels/4-form-acroformを参照しお

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡