Pdf.js: Digitale Signaturen in pdf.js.

Erstellt am 13. Jan. 2012  ·  174Kommentare  ·  Quelle: mozilla/pdf.js

Hallo! Wir sind interessiert, wann oder ob Sie die Signaturdatenansicht (Xades, Pades & Cades) im PDF-Viewer (PDF.js) implementieren werden.

Mit freundlichen Grüßen

Alejandro Pinedo,
SOA-X

2-feature 4-annotations

Hilfreichster Kommentar

Verwenden Sie für alle oben genannten Personen den neuen + 1-Reaktionsknopf von GitHub, anstatt hier Kommentare hinzuzufügen.

Alle 174 Kommentare

Derzeit gibt es keine Pläne zur Implementierung dieser Funktion. Wir haben nicht viel gesehen, also war es keine Priorität. Wir sind jedoch immer auf der Suche nach weiteren Mitwirkenden. Daher würden wir uns über Patches freuen, um diese Funktion hinzuzufügen. Wenn Sie daran interessiert sind, es hinzuzufügen, können Sie bei Fragen unseren IRC-Kanal (#pdfjs irc.mozilla.org) besuchen.

Brendan

Hallo

Wie ist der aktuelle Stand der Implementierung dieser Funktion?

Vielen Dank

@ fermo111 Noch nicht implementiert, aber ich werde gerne jemanden coachen, der bereit ist, diese Aufgabe zu übernehmen.

@yurydelendik Ich bin daran interessiert, die Funktion zur Darstellung digitaler Signaturen von PDF-Dateien in pdf.js zu implementieren. Wie kann ich mit Ihnen Kontakt aufnehmen?

@wolvz finden Sie mich bitte im IRC irc.mozilla.org-Kanal #pdfjs (das ist am einfachsten) oder nehmen Sie an einer unserer öffentlichen Sitzungen teil , um Dinge zu koordinieren.

Ich versuche, SigWidgetAnnotation (wie TextAnnotation, LinkAnnotation) in annotation.js zu implementieren, um digitale Signaturen in pdf.js zu unterstützen.
Die Signatur wird im PDF-Viewer angezeigt, und ich kann die im DER-codierten PKCS7-Objekt eingebetteten Zertifikate bereits extrahieren und überprüfen ...
Jetzt gehe ich zum nächsten Schritt über, bei dem der Nachrichtenauszug der Datei überprüft wird.
Dafür muss ich Zugriff auf den Dateiinhalt haben ... Ich weiß nicht, ob es möglich ist oder nicht, über annotation.js darauf zuzugreifen, aber ich kann es nicht herausfinden. Das Beste, was ich tun konnte, war, den Inhalt in core.js zu erhalten, indem ich:

var contentStreamPromise = this.pdfManager.ensure (this, 'getContentStream', []);
var dataPromises = Promise.all ([contentStreamPromise]);
dataPromises.then (Funktion (Daten) {
var contentStream = data [0];
var content = contentStream.str.bytes;
Inhalt zurückgeben;
});

Kann mir bitte jemand erklären, wie ich den Dateiinhalt in annotation.js am besten abrufen kann?
Danke im Voraus...

wolvz,
Fortschritte in dieser Hinsicht?

@yurydelendik @wolvz
Ich bin sehr interessiert an der Funktion zur Anzeige digitaler Signaturen. Ich habe das Repository von wolvz geklont und den Code erstellt, aber wenn ich versuche, ihn zu verwenden, erhalte ich eine Ablehnung des Versprechens mit dem Fehler "require is not defined". Könnte jemand erklären, was diesen Fehler verursachen würde und wie ich ihn beheben könnte? Außerdem bin ich sehr bereit, die Arbeit an dieser Funktion fortzusetzen. Ich habe mit PDFs in Java über die iText-Bibliothek gearbeitet, aber mit ihnen in Javascript zu arbeiten, habe ich noch nie versucht. Könnte mich jemand zu einer Dokumentation / einem Tutorial führen, die / das mich in die richtige Richtung lenken könnte, damit ich herausfinden kann, wo ich anfangen soll, wenn ich versuche, diese Funktion weiter nach unten zu verschieben?

Ich bin verwirrt. Was ich in meiner pdf.js-Bibliothek tun muss, um die digitale Signatur pdf in pdfJS anzuzeigen

untitled

Diese Signatur und das Zertifikat werden beide im PDF-Format angezeigt. Wenn ich sie jedoch im PDF-Format öffne, wird sie dort nicht angezeigt.

@ mrpandya007 , die digitale Signatur wird nicht ausgeblendet haben , bis die Signaturüberprüfungsfunktion funktioniert.
Wenn ich mich recht erinnere, müssen Sie die Zeilen 389 bis 392 hier kommentieren, wenn Sie möchten, dass sie einfach angezeigt werden: https://github.com/mozilla/pdf.js/blob/master/src/core/annotation.js#L389
Ich bin mir allerdings nicht sicher und kann es momentan nicht testen.

@ Wolvz , Danke für die Antwort, aber es ist bereits kommentiert. Bitte schauen Sie sich das an. Die von Crystal Report generierte PDF-Signatur wird nicht angezeigt, aber das von DevExpress generierte PDF wird ordnungsgemäß angezeigt

Bitte antworten Sie mir ... was ich zu tun habe ... Ich kann Ihnen das PDF zum Testen geben

Es gibt noch keine gute Unterstützung für digitale Signaturen, daher muss dies implementiert werden.

Wie viele Tage wird es dauern, um dieses Problem der digitalen Signatur zu beheben, da wir von Ihrer Bibliothek abhängig sind.

Es kann lange dauern, da diese Funktion von jemandem entwickelt werden muss und derzeit Probleme mit höherer Priorität auftreten.

heading

Warum ich mit einem solchen Problem von "=" in Überschriften konfrontiert bin, nur in pdf.js, nachdem ich die Datei heruntergeladen habe, ist sie verschwunden.
jede Lösung bitte. Es kommt nur in telerik generierten pdf vor.

@ mrpandya007 Bitte

Ich bin auch auf das gleiche Problem gestoßen. Obwohl ich nicht unbedingt die Signaturvalidierung benötige, würde dies in meinem Fall ausreichen, um nur das Signaturbild anzuzeigen. Vielleicht ist es besser, das Bild anzuzeigen und mit einem kleinen Text zu versehen, der so etwas wie "Signaturvalidierung nicht implementiert. Signaturstatus unbekannt" enthält, bis die Signaturvalidierung implementiert ist, anstatt das Bild nicht anzuzeigen. Zumindest visuell würde das PDF also zeigen, was Sie erwarten würden.

Gibt es einen Zeitplan, wann dieses Problem behoben wird? Oder sollten wir ein anderes Produkt in Betracht ziehen?
pdfjsissue

Soweit ich weiß, arbeitet noch niemand daran. Wenn also jemand bereit ist, daran zu arbeiten, können Sie gerne eine PR einreichen.

Hallo,
Eine PDF.JS-Version, die nur digitale Signaturfelder anzeigen kann, sollte für viele Benutzer ausreichen ... Gibt es eine "Gabel", die dies kann?
Grüße

@DORNINEM Sie müssen nur den Code
Aber trotzdem, hier ist die Gabel, nach der Sie gefragt haben: https://github.com/wolvz/pdf.js

@ Wolvz !! Vielen Dank.
Ich frage mich, warum diese Funktion nicht in der offiziellen Version enthalten ist, da sie sehr gut funktioniert. Ich habe mit einigen meiner signierten PDF-Dateien (von 1 bis 6 verschiedenen Signaturfeldern) getestet und das Ergebnis ist perfekt!
Ich bin mir wirklich sicher, dass es wirklich notwendig ist, diese Felder anzuzeigen und nicht die Signatur zu validieren. Die Signaturüberprüfung erfolgt am besten auf der Serverseite, da manchmal Zertifikate erforderlich sind, die nicht in einem lokalen Zertifikat-Repository installiert sind.

Hallo,

Jemand kann erklären, welche Zeile wir kommentieren oder auskommentieren müssen, damit pdf.js die digitale Signatur anzeigen kann?

Danke für alle Informationen :)

@maximlefebvre Laut https://github.com/wolvz/pdf.js/commit/7df3f4fe6e21b888358fd7718cb15e3c266ba066 sollte dies ausreichen, damit PDF.js die Signatur anzeigt. Beachten Sie jedoch, dass dies vom PDF.js-Team nicht als stabile Lösung überprüft wurde (daher befindet es sich noch nicht in der offiziellen Codebasis), sondern möglicherweise als temporäre Lösung.

Wir sind an der Implementierung der Signaturprüfung interessiert. Es scheint, dass @wolvz mit der Arbeit begonnen hat, diese aber nicht abgeschlossen hat. Teilcode , an dem wir arbeiten könnten?

@wolvz , können Sie uns bitte helfen, indem Sie eine kleine Notiz machen, um Ihr Repo zu verstehen. Ich kann nicht verstehen, wie ich mit der Überprüfung Ihres Codes beginnen soll. Wir versuchen, die Signatur zu implementieren, und können möglicherweise Ihr Projekt abschließen und der Community helfen.

Wir haben sowohl die Signatur- als auch die Signaturüberprüfung von PDFs im Browser mithilfe von https: // pkijs implementiert . Eine Demo zur frühzeitigen Signaturüberprüfung finden Sie hier: https://pkijs.org/examples/PDFexample.html Wir haben PDFjs jedoch noch nicht integriert wird das in nicht allzu ferner Zukunft tun. Wir beabsichtigen, das meiste davon als OSS freizugeben und alle Änderungen an PDFjs zurückzugeben, die für eine reibungslose Integration erforderlich sind.

Super, danke @rmhrisk! Ich bin mir jedoch nicht sicher, wie ich eine CA-Bundle-Datei erstellen soll. Haben Sie Details dazu? Ich würde mir vorstellen, wenn dies in pdf.js integriert ist, wäre es mehr "Plug and Play", wenn es standardmäßig mit Adobe Root CA geliefert wird und die Zertifikatkette überprüfen kann, oder? Und haben Sie einen erwarteten Zeitplan für die Integration von pdf.js? Ihre Arbeit wird sehr geschätzt!

Hier gibt es eine: http://curl.haxx.se/ca/cacert.pem und eine, die unter Beispielen in das Repository eingecheckt wurde.

Hier können Sie ein Tool erstellen: https://github.com/PeculiarVentures/tl-create

Ich kann derzeit keine ETA teilen, wir sind auf Ressourcen beschränkt und dies ist uns wichtig, aber wir müssen zuerst einige komplexere Teile fertigstellen.

Ich habe das von Ihnen verlinkte Zertifikat sowie einige Zertifikate ausprobiert, die ich mit Adobe Reader aus der PDF-Datei extrahiert habe. Es wird jedoch immer die Fehlermeldung "TypeError: Eigenschaft 'Signatur_Zeitstempel' von undefiniert kann nicht gelesen werden" (in Safari / Chrome Stable / Chrome) angezeigt Kanarienvogel).

Ich habe in der kommenden Woche etwas Zeit, also lassen Sie mich wissen, ob ich beim Zusammenführen in pdf.js in irgendeiner Weise helfen kann.

Dieses Beispiel unterstützt derzeit nur grundlegende Signaturen, keine Zeitstempel oder LTV. Fühlen Sie sich frei, mich bei rmh bei unmitigatedrisk dot com anzupingen

Ah ich sehe. Als Referenz wurde es schließlich in Chrome / Firefox (aber nicht in Safari, das anscheinend nur WebCrypto mit diesem CA-Bundle und dieser PDF-Datei zum Laufen gebracht .

Ja, das ist nicht nur das Problem mit dem Präfix, sondern sie unterstützen auch nur genug Webcrypto, um Netflix-DRM-Fälle zu behandeln. Zum Beispiel können Sie den öffentlichen Schlüssel nicht für ein von Ihnen generiertes Schlüsselpaar exportieren!? Dies ist eine gute Ressource zur Überprüfung der Browserunterstützung - https://diafygi.github.io/webcrypto-examples/

@viveksjain Können Sie bestätigen, wie Sie es in Chrome / Firefox zum

Ich habe versucht, das Entwicklungs-Plugin in Firefox zu verwenden, aber es scheint immer noch keine Signaturen anzuzeigen.
http://mozilla.github.io/pdf.js/extensions/firefox/pdf.js.xpi

@complience er hat den Beispielcode unter https://pkijs.org/examples/PDFexample.html erhalten , der nicht als PDFjs funktioniert

Hallo @complience , ich habe einen Proof-of-Concept unter https://github.com/viveksjain/pdf.js/tree/sig-verify-support. Sie können es versuchen, indem Sie git clone --recursive https://github.com/viveksjain/pdf.js.git . Mit ein bisschen mehr Arbeit sollte es für eine Pull-Anfrage in dieses Repo bereit sein, aber ich hatte einfach noch keine Zeit.

@ Vivksjain schön! Was wird noch benötigt, bevor es für eine Pull-Anfrage bereit ist?

+1 Erfreut über diese Funktionalität.

Ja, dies ist ein großer Mehrwert für die Community und öffnet die Tür für viele Anwendungsfälle. Vielen Dank!!

+1 für diese Funktionalität

+1 für diese Funktionalität

Verwenden Sie für alle oben genannten Personen den neuen + 1-Reaktionsknopf von GitHub, anstatt hier Kommentare hinzuzufügen.

+ 1 für diese Funktionalität

👍 + 1 für diese Funktionalität

Verwenden Sie erneut den Reaktionsknopf von GitHub im oberen Kommentar, um diese Funktionalität zu verbessern. Dies hilft uns, das Problem zu priorisieren. Das Hinzufügen von "+1" -Kommentaren führt zu unnötigen Benachrichtigungen für die Entwickler.

"TypeError: Eigenschaft 'Signatur_Zeitstempel' von undefiniert kann nicht gelesen werden" unter Verwendung des Zweigs von @viveksjain

+1. Warten auf diese Funktion! ..

Wann wird diese Funktionalität verfügbar sein? Was ist mit dem Fortschritt von viveksjain passiert?

@complience Hallo, ich habe einen Proof-of-Concept unter https://github.com/viveksjain/pdf.js/tree/sig-verify-support. Sie können es versuchen, indem Sie den Git-Klon --recursive https://github.com/viveksjain/pdf.js.git verwenden. Mit ein bisschen mehr Arbeit sollte es für eine Pull-Anfrage in esta repo bereit sein, aber ich hatte einfach noch keine Zeit.

@lexcorp Leider wurde dies nach meiner vorherigen Nachricht für mich zu einer niedrigeren Priorität. Ich werde sehen, ob ich es schaffen kann, aber keine Versprechungen machen werde, die ich nicht halten kann ...

Ich versuche diese Version zu kompilieren: https://github.com/viveksjain/pdf.js/tree/sig-verify-support
Wenn ich den Befehl eingebe :
Ich erhalte die Meldung: ### Erweiterungs-Build-Nummer abrufen
Und der Kompilierungsprozess wird nicht ausgeführt

Wie kann ich diesen Fehler beheben?
Ich mache etwas falsch
Warum nicht die Zusammenstellung beenden?

@lexcorp Wenn es noch Interesse gibt, ist zumindest meine Version so aktualisiert, dass sie kompiliert werden kann. : +1:

Hallo Vivek, ja ich bin immer noch interessiert, danke ...

2016-12-12 12:55 GMT-06: 00 Gustavo Zambonin [email protected] :

@lexcorp https://github.com/lexcorp Wenn noch Interesse besteht, unter
Zumindest ist meine Version so aktualisiert, dass sie kompiliert werden kann. 👍

- -
Sie erhalten dies, weil Sie erwähnt wurden.
Antworte direkt auf diese E-Mail und sieh sie dir auf GitHub an
https://github.com/mozilla/pdf.js/issues/1076#issuecomment-266518165 ,
oder schalten Sie den Thread stumm
https://github.com/notifications/unsubscribe-auth/AFfB-LbmIVIrJLnxwJlm8aDITDKh5tWLks5rHZi5gaJpZM4BlvMP
.

Hey Gustavo, danke ...

2016-12-12 12:55 GMT-06: 00 Gustavo Zambonin [email protected] :

@lexcorp https://github.com/lexcorp Wenn noch Interesse besteht, unter
Zumindest ist meine Version so aktualisiert, dass sie kompiliert werden kann. 👍

- -
Sie erhalten dies, weil Sie erwähnt wurden.
Antworte direkt auf diese E-Mail und sieh sie dir auf GitHub an
https://github.com/mozilla/pdf.js/issues/1076#issuecomment-266518165 ,
oder schalten Sie den Thread stumm
https://github.com/notifications/unsubscribe-auth/AFfB-LbmIVIrJLnxwJlm8aDITDKh5tWLks5rHZi5gaJpZM4BlvMP
.

Gibt es ein Problem, warum die Unterstützung für digitale Signaturen nicht in pdf.js übernommen wird?

Bitte folgen Sie der Diskussion in # 7702.

Ich bin daran interessiert, von Leuten über ihre Anwendungsfälle für die Überprüfung der Signatur in PDFjs zu hören. Bitte senden Sie mir eine E-Mail mit Ihrem Anwendungsfall an ryan atuliarventures.com.

Ich wäre auch daran interessiert, Ihre Anwendungsfälle für die Anmeldung in PDFjs zu hören. Wenn Sie sich für dieses Szenario interessieren, würde ich auch gerne Ihren Anwendungsfall hören.

Der Zweig sig-verify-support von pdf.js unterstützt IE und Firefox nicht perfekt, da WebCrypto nicht verfügbar ist. Haben Sie eine Idee, damit umzugehen?

Hallo Leute - Funktioniert die Überprüfung der digitalen Signatur bereits?

Gleiche Frage hier: Sollen digitale Signaturen mit dem neuesten stabilen Build funktionieren, der von https://mozilla.github.io/pdf.js/getting_started/#download heruntergeladen werden kann?

FWIW: Ich habe die derzeit verfügbare Beta-Version getestet und kann keine Signaturen sehen. Das einzige, was mir auffällt, ist die folgende Zeile in der Browserkonsole:

Warning: Unimplemented widget field type "Sig", falling back to base field type

Nein, digitale Signaturen sind noch nicht implementiert. Jeder, der bereit ist, daran zu arbeiten, kann gerne eine Pull-Anfrage stellen. Vielen Dank.

Ich möchte an dieser Funktionalität arbeiten. Kann mir jemand Richtlinien zu internen Komponenten von PDF.js geben?

Es gibt einige erste oben erwähnte Arbeiten, die Sie möglicherweise verwenden können. Lesen Sie unbedingt das Wiki, um Informationen zum Codestil und zum Testen zu erhalten.

@wolvz : hi welcher teil in viewer.js wäre das unkommentar? Ihr Repository scheint die ursprüngliche Quelle für pdf.js zu sein

Die meisten Benutzer würden jedoch die stabilen Versionsdateien verwenden.

Da das Adobe Acrobat-Plugin mit der Veröffentlichung von Mozilla Firefox 59 ESR veraltet sein wird, sind Funktionen wie das Anzeigen digitaler Signaturen in pdf.js für Unternehmensbenutzer jetzt wirklich erforderlich.

Wir haben eine digitale Signaturlösung basierend auf PKIjs und PDFjs implementiert, mit der digitale Signaturen überprüft und erstellt werden können. Sie können ein Beispiel dafür sieht das US Digital Signature Gesetz sehen hier .

image

Der Viewer vertraut derzeit den Zertifizierungsstellen in der eIDAS-Vertrauensliste sowie den Mozilla-vertrauenswürdigen S / MIME-Emittenten.

Wenn Sie auf Probleme stoßen, senden Sie mir eine E-Mail mit Beispieldateien an

@rmhrisk Kannst du ein Github-Repo mit einem Beispielcode versehen?

@xrkolovos Die große Mehrheit der für die Unterzeichnung und Überprüfung erforderlichen Arbeiten wurde aus offenen Quellen durchgeführt. Es enthält https://github.com/PeculiarVentures/PKI.js , https://github.com/PeculiarVentures/ASN1.js , https://github.com/PeculiarVentures/xadesjs/ , https://github.com / PeculiarVentures / tl-create und https://github.com/PeculiarVentures/webcrypto-liner.

Am Ende haben wir auch unsere eigene PDF-Bibliothek erstellt (obwohl wir PDFjs zum Rendern verwenden), damit wir die vielen verschiedenen Arten von Signaturen erstellen können, die PDF zulässt. Diese Bibliothek wird irgendwann veröffentlicht, ist aber zu diesem Zeitpunkt noch nicht für den öffentlichen Gebrauch bereit.

Die Quelle für unseren Betrachter wird nicht veröffentlicht, aber mit den oben genannten Bibliotheken könnte jemand die Überprüfung in seinem eigenen Betrachter reproduzieren. Wir haben hier ein grundlegendes Beispiel dafür: https://pkijs.org/examples/PDFexample.html Es müsste nur in Ihre Viewer integriert werden.

Wann wird es mit pdf.js zusammengeführt?

@Aarbel Zum jetzigen Zeitpunkt weiß ich nicht, wann wir die Zeit finden werden, das, was wir haben, umzugestalten, damit es leicht zusammengeführt werden kann, aber wir möchten sehen, wie sich das Auffinden in PDFjs verifiziert. Vor diesem Hintergrund hat das PDFjs-Team zuvor Bedenken hinsichtlich der Größe geäußert, die diese Funktion aufgrund der erforderlichen Abhängigkeiten darstellen würde. Solange dies ein Problem darstellt, ist es nicht sinnvoll, die technische Zeit für diese Arbeit aufzuwenden.

IMHO würde eine Nichtimplementierung vor der Veröffentlichung von Firefox 59 (ESR) das Ende von Firefox im Unternehmen bedeuten, wenn Chrome oder Edge digitale Signaturen lesen können.

@FrenchHope weder Chrome von Firefox kann digitale Signaturen überprüfen.

Irgendwelche Updates zu dieser Funktionalität?

@Snuffleupagus @yurydelendik @timvandermeij ? :) :)

Wie in https://github.com/mozilla/pdf.js/pull/7702#pullrequestreview -4866355 erläutert, besteht der erste Schritt darin, eine abstrakte API zu erstellen, mit der jede benutzerdefinierte PKI / Krypto in PDF.js integriert werden kann.

@rmhrisk Ich

Viele Unternehmen migrieren jetzt auf Windows 10 ...

Weder Edge noch IE.

@rmhrisk IE kann mit Adobe Acrobat Reader ActiveX.

Bearbeiten: Edge kann die digitale Signatur anzeigen, informiert Sie jedoch nicht wie Adobe Acrobat Reader über die Gültigkeit der Signatur.

ActiveX ist veraltet und wird möglicherweise nicht mehr funktionieren.

Rand Schneet die digitale Signatur nicht, sondern zeigt das Bild in einer Anmerkung an, unabhängig vom Status der Signatur.

Hallo, wie ist der aktuelle Status dieser Funktion?

Es wird gerade nicht daran gearbeitet, aber kürzlich hat jemand Interesse an dem obigen Code im IRC gezeigt. Der erste Schritt wäre wirklich https://github.com/mozilla/pdf.js/issues/1076#issuecomment -374244765.

Hallo, haben Sie ein voraussichtliches Datum wie Dic 2018 oder 2019, um diese API zu veröffentlichen?
Danke übrigens für den PDF-Viewer, funktioniert hervorragend

Ich wollte das oben erwähnte einfache Update implementieren ... Die folgenden Zeilen auskommentieren:

// Hide signatures because we cannot validate them.
          if (data.fieldType === 'Sig') {
              _this2.setFlags(AnnotationFlag.HIDDEN);
          }

Dies verursacht jedoch einen Fehler in der Konsole (von util.js: 418). Weiß jemand, was dieses Problem verursacht (abgesehen von der Tatsache, dass die Signatur jetzt angezeigt wird)?

Error:

Uncaught (in promise) DOMException: Failed to execute 'postMessage' on 'DedicatedWorkerGlobalScope': function nonSerializableClosure() {
          return nonSerializable; // creating closure on some variable
        } could not be cloned.
    at eval (http://localhost:8888/src/shared/util.js:418:20)

@brianholle
Ich habe es versucht und wenn du es auskommentierst

 if (data.fieldType === 'Sig') {
      warn('unimplemented annotation type: Widget signature');
     // this.setFlags(AnnotationFlag.HIDDEN);
    }

in gebauten pdf.worker.js funktioniert es dann.

Es wäre schön, zumindest eine Option dafür bereitzustellen. In unserem Fall wissen wir beispielsweise bereits, dass die Signatur gültig ist, da wir die Signaturen zuvor validieren.

@ Strazovan Danke und stimmte zu. Ich habe ein Flag erstellt, das in default_preferences.json gesetzt werden kann. Ich kann diese Änderungen posten, wenn Sie interessiert sind!

@brianholle Hallo, ich folge deinem Beispiel. Mit diesem Code versehen, wird Chrom normal angezeigt, aber das digital signierte Bild im IE-Browser verdeckt den Text.

@hanxiaodao Sie sagen das, wenn Sie den

 if (data.fieldType === 'Sig') {
      warn('unimplemented annotation type: Widget signature');
      // this.setFlags(AnnotationFlag.HIDDEN);
 }

Sie haben Probleme bei der Anzeige im IE?

@brianholle Vielen Dank für Ihre Antwort. Ich folge Ihrem Beispiel ,, aber es gab ein Problem in IE 11. Das rote Kapitel der digitalen Signatur verdeckt den Textinhalt.
Dies ist der Effekt auf Chrom.
chrome pic
Dies ist der Effekt auf IE11.
ie11_pic

Können wir von den Betreuern Schätzungen erhalten, ob Anstrengungen zur Überprüfung der Unterschriften unternommen werden?

Es ist momentan keine Priorität für uns, aber wenn jemand dazu beitragen möchte (siehe die obigen Kommentare, wie es implementiert werden sollte), dann sind wir bereit, dies in PDF.js zu integrieren.

Wir sind auch daran interessiert, digitale Signaturen anzuzeigen, die nicht verifiziert werden können. Bitte sehen Sie sich ein Beispiel an.
Verpf-Erklärg-Bundesdatenschutz-Sig.pdf

wenn ich kommentiere:
if (data.fieldType === 'Sig') {
// this.setFlags (AnnotationFlag.HIDDEN);
}}

Error:

message_handler.js:87 Uncaught (in promise) DOMException: Failed to execute 'postMessage' on 'DedicatedWorkerGlobalScope': #<DedicatedWorkerGlobalScope> could not be cloned.
    at eval (http://localhost:8888/src/shared/message_handler.js:87:21)

und warum nicht den "div. annotationLayer" rendern?

Hahaa, ich kenne dieses ... es hängt mit # 10350 zusammen. Sie müssen diese Zeile also kommentieren:
// this.setFlags (AnnotationFlag.HIDDEN);
und fügen Sie diese Zeile danach hinzu:
data.fieldValue = null;

Wie konfiguriere ich pdf oder pdf_viewer, um die util.js zu aktivieren, die den Schalter für das angezeigte Siegel steuern? In der Datei util.js gibt es einige AnnotationFlag-Optionen wie INVISIBLE 0x01 、 HIDDEN 0x02. Ich ändere den AnnotionFlag in pdf.worker.js von HIDDEN auf PRINT. Kann ich sie ohne diese Weise konfigurieren?

Sollte eine sehr schöne Funktion sein. Hoffentlich wird dies bald ein Feature sein!

Kennt jemand eine zuverlässige Problemumgehung? Das Bearbeiten von erstellten Dateien funktioniert möglicherweise nur lokal oder zu Testzwecken, jedoch nicht mehr.

Ist pdfjs ein totes Projekt? Warum implementieren sie seit so vielen Jahren nicht die meistgesuchten Funktionen?

image

Ich möchte erreichen, dass ich irgendwo in PDF.js eine kleine Benachrichtigung anzeigen kann, dass die digitalen Signaturen nicht validiert sind. Ich bekomme das auf Chrome, aber nicht auf den anderen Browsern. Es ist alles andere als der beste Fall, aber wir möchten diese Signaturen wirklich zeigen, auch wenn sie nicht zu 100% validiert sind. Ich habe versucht, den Code pdf.worker.js an der Stelle zu ändern, an der this.setFlags (AnnotationFlag.HIDDEN); stand auf. Ich habe eine "document.getElementbyId" -Konstruktion hinzugefügt, in der ich meinen Container anzeige, wenn 1 oder mehr Signaturen vorhanden sind. Aber alle Browser (außer Chrome) erkennen "Dokument" nicht. Gibt es eine Option, um dem Dokument eine Eigenschaft oder etwas hinzuzufügen und diese in der viewer.js zu verwenden? Es gibt mehr Konstruktionen mit getElementbyId. Jede Hilfe wäre großartig.

Wir haben kürzlich unseren Viewer, der die Signaturüberprüfung unterstützt, in eine Webkomponente und einen Iframe verpackt. Weitere Informationen zur Verwendung finden Sie hier: https://verify.ink/

rmhrisk das ist toll !!!

@brianholle Vielen Dank für Ihre Antwort. Ich folge Ihrem Beispiel ,, aber es gab ein Problem in IE 11. Das rote Kapitel der digitalen Signatur verdeckt den Textinhalt.
Dies ist der Effekt auf Chrom.
chrome pic
Dies ist der Effekt auf IE11.
ie11_pic
Ich habe die gleiche Frage im IE, haben Sie das gelöst?

Unsere Organisation besteht aus mehr als 2000 Personen. Alle verwenden Chrome und nicht Firefox, da Firefox die Signaturen von PDFs nicht korrekt anzeigen kann.
Ich denke, dies sollte eine Priorität für Mozilla sein.

@ Wolvz : Irgendwelche Fortschritte auf deiner Seite?

+1

+1

Wir haben kürzlich unseren Viewer, der die Signaturüberprüfung unterstützt, in eine Webkomponente und einen Iframe verpackt. Weitere Informationen zur Verwendung finden Sie hier: https://verify.ink/

@rmhrisk
Ryan, hast du darüber nachgedacht, eine Version dieses Visualisierers für die Community zu öffnen?

Wir haben eine digitale Signaturlösung basierend auf PKIjs und PDFjs implementiert, mit der digitale Signaturen überprüft und erstellt werden können. Sie können ein Beispiel dafür sieht das US Digital Signature Gesetz sehen hier .

image

Der Viewer vertraut derzeit den Zertifizierungsstellen in der eIDAS-Vertrauensliste sowie den Mozilla-vertrauenswürdigen S / MIME-Emittenten.

Wenn Sie auf Probleme stoßen, senden Sie mir eine E-Mail mit Beispieldateien an

@rmhrisk
Ryan, hast du darüber nachgedacht, eine Version dieses Visualisierers für die Community zu öffnen?

@lexcorp haben wir https: /verify.ink erstellt, damit Sie unseren Viewer einfach einbetten können, war eine Webkomponente.

Das Hinzufügen ist einfach:

<html>
  <body>
    <verify-viewer  url="https://verify.ink/assets/documents/electronic_records_and_signatures_in_commerce.pdf"  show-signature-if-present="true"  notify-if-not-signed="true"  sign="true"  download="true"></verify-viewer><script type="module" src="https://verify.ink/webcomponent/index.js"></script>
    </body>
</html>

Wir haben kürzlich Unterstützung für benutzerdefinierte Root-Stores hinzugefügt:
https://verify.ink/guides#root -certificates

Aus den verschiedenen Threads für digitale Signaturen habe ich den Eindruck gewonnen, dass der Hauptgrund für den fehlenden Fortschritt darin besteht, dass Signaturen nicht als Voraussetzung für die Anzeige überprüft werden können.

Wäre es sinnvoll, die beiden Anwendungsfälle "Signatur überprüfen" und "Signatur anzeigen" zu unterscheiden?

Ich denke, es gibt viele Anwendungsfälle, in denen die Anzeige selbst nicht verifizierter Signaturen (falls erforderlich mit einer Warnung, die vom jeweiligen Projektteam hinzugefügt wurde) alles ist, was erforderlich und ausreichend ist. Wenn dies mit geringfügigen Änderungen des Codes bereits möglich ist, warum ist das nicht eine offizielle Funktion, die ein- oder ausgeschaltet werden kann?

Das Problem beim Anzeigen der Signatur, wenn sie ungültig ist, besteht darin, dass Sie den Benutzern den Eindruck vermitteln, dass sie gültig ist.

Digitale Signaturen sollen im Gegensatz zu ihren synthetischen nassen Gegenstücken sowohl die Authentizität einer Signatur als auch die damit verbundene Absicht bezeichnen.

Indem Sie das Signaturbild anzeigen, ohne es zu validieren, schlagen Sie dem Benutzer vor, dass es authentisch ist, wenn es nur eine Kopie eines Bildes sein könnte.

Aber nicht alle gültigen digitalen Signaturen werden visuell in einem PDF dargestellt, oder? PDF ermöglicht meines Wissens auch das Signieren ohne visuelle Darstellung.

Sollte der Benutzer der Bibliothek nicht entscheiden, ob sein Anwendungs- / Anwendungsfall die Anzeige gültiger / ungültiger Signaturen zulässt oder ob zusätzliche Maßnahmen wie Warnungen erforderlich sind? Ein Anwendungsfall, an den ich denke, ist das Markieren von Regionen in PDFs unter Berücksichtigung von Signaturregionen. Es kann immer noch informativen Charakter haben, obwohl für die endgültige Validierung andere Tools erforderlich sind. Ich sehe den Nachteil, eine Anzeige anzubieten, nicht als optionale Funktion.

Aber nicht alle gültigen digitalen Signaturen werden visuell in einem PDF dargestellt, oder? PDF ermöglicht meines Wissens auch das Signieren ohne visuelle Darstellung.

Beide Aussagen sind richtig 1) Nicht alle PDFs enthalten eine visuelle Darstellung (die meisten jedoch). 2) PDF ermöglicht eine dokumentweite Signatur. In diesem Fehler habe ich jedoch Interesse daran gesehen, die visuelle Signatur anzuzeigen, die mit einer digitalen Signatur und nicht mit einer dokumentweiten Signatur verbunden ist.

Es könnte einen weiteren Fehler geben, der für die Unterstützung von dokumentweiten Signaturen eingereicht werden muss, der keine visuelle Darstellung hat, aber ich erinnere mich nicht an eine einzige Anfrage in einem der PDFjs-bezogenen Fehler, die bei digitalen Signaturen vorhanden sind.

Sollte der Benutzer der Bibliothek nicht entscheiden, ob sein Anwendungs- / Anwendungsfall die Anzeige gültiger / ungültiger Signaturen zulässt oder ob zusätzliche Maßnahmen wie Warnungen erforderlich sind?
Ich persönlich bin der Meinung, dass ein Anwendungsentwickler in der Lage sein sollte, mit seiner Anwendung zu tun, was er will.

Es stellt sich jedoch auch die Frage, was eine Bibliothek wie PDF.js ebenfalls tun soll. Meiner Meinung nach sollten Bibliotheksproduzenten es nicht einfach machen, eine Option offenzulegen, die unsicher ist, leicht missverstanden wird und zu schlechten Sicherheitsergebnissen für den Endbenutzer der Bibliothek führt.

Stellen Sie sich vor, wenn diese Funktion vollständig wäre, wäre sie während dieser Quarantäne von COVID-19 eine große Hilfe gewesen. Stellen Sie sich vor, wie viele Transaktionen, Verträge usw.

Sie könnten von zu Hause aus durchgeführt worden sein, aber ich habe gesehen, dass diese Funktionalität seit Jahren stagniert. Ich kenne den Grund nicht, aber ich bin der Meinung, dass sie in Kombination mit anderen Tools eine große Hilfe für die Zusammenarbeit sein kann. usw.

Ich bin vollkommen einverstanden. Digitale Signaturen werden in den kommenden Jahren immer mehr an Wert gewinnen. Mein Anwendungsfall ist ein Werkzeug für die Entwicklung medizinischer Geräte. Ohne digitale Signaturen wäre unsere tägliche Arbeit vom Home Office aus sehr viel schwieriger. Aus diesem Grund überlasse ich es dem Projekt, die Bibliothek zu verwenden, um einen Kompromiss zwischen Risiken und Kundennutzen zu finden oder zusätzliche Maßnahmen zu ergreifen, die für den jeweiligen Anwendungsfall geeignet sind.

Ich stimme auch voll und ganz zu, dass die digitale Signatur in der Tat ein großes fehlendes Merkmal ist.

Es stellt sich jedoch auch die Frage, was eine Bibliothek wie PDF.js ebenfalls tun soll. Meiner Meinung nach sollten Bibliotheksproduzenten es nicht einfach machen, eine Option offenzulegen, die unsicher ist, leicht missverstanden wird und zu schlechten Sicherheitsergebnissen für den Endbenutzer der Bibliothek führt.

Die Bibliothek wird von Entwicklern implementiert, die sich der Sicherheit bewusst sein sollten .
Wenn ich die Funktion habe, werde ich natürlich die Signatur anzeigen, aber auch die Signaturserverseite überprüfen und validieren, damit ich eine Warnung anzeigen kann, wenn die Signatur nicht gültig ist.

@rmhrisk
Planen Sie Open Source für die Community? Weil ich keinen einzigen Fall habe, in dem ich 1 / Dokumente im Internet verfügbar machen könnte 2 / Dritten den Zugriff auf Dokumente erlauben 3 / Dritten erlauben, Javascript in den Benutzerbrowser einzufügen.
Das wäre eine großartige Ergänzung zu pdfjs.

@rmhrisk
Planen Sie Open Source für die Community? Weil ich keinen einzigen Fall habe, in dem ich 1 / Dokumente im Internet verfügbar machen könnte 2 / Dritten den Zugriff auf Dokumente erlauben 3 / Dritten erlauben, Javascript in den Benutzerbrowser einzufügen.
Das wäre eine großartige Ergänzung zu pdfjs.

Wir öffnen alle Bibliotheken, mit denen wir unseren Viewer erstellt haben, als Open Source, und es gibt viele davon, und viele sind ziemlich kompliziert. Schauen Sie sich zum Beispiel PKIjs Stück an, das die Zertifikatvalidierung für den Viewer verwaltet. Wir bieten auch kommerzielle Lizenzen mit Support an.

Wir werden den Betrachter nicht als Open-Sourcing-Anbieter einsetzen, da diese Arbeit viel Zeit und Investitionen in Anspruch nahm und diese Zeit einen Wert hat. Wir freuen uns, andere bei der Verwendung der von uns erstellten Open-Source-Bibliotheken zu unterstützen, um dies zu ermöglichen.

Re: 1; Der Betrachter benötigt keine Dokumente im Internet.

Re: 2; Der Viewer muss nicht zulassen, dass Dritte auf die Dokumente zugreifen.

Re: 3; Es ist möglich, die Webkomponente zu hosten, damit Sie Aktualisierungen der Komponente überprüfen und steuern können.

Ich stimme auch voll und ganz zu, dass die digitale Signatur in der Tat ein großes fehlendes Merkmal ist.

Es stellt sich jedoch auch die Frage, was eine Bibliothek wie PDF.js ebenfalls tun soll. Meiner Meinung nach sollten Bibliotheksproduzenten es nicht einfach machen, eine Option offenzulegen, die unsicher ist, leicht missverstanden wird und zu schlechten Sicherheitsergebnissen für den Endbenutzer der Bibliothek führt.

Die Bibliothek wird von Entwicklern implementiert, die sich der Sicherheit bewusst sein sollten.
Wenn ich die Funktion habe, werde ich natürlich die Signatur anzeigen, aber auch die Signaturserverseite überprüfen und validieren, damit ich eine Warnung anzeigen kann, wenn die Signatur nicht gültig ist.

"Sollte sein" und "sind" sind zwei verschiedene Dinge. Das Anzeigen des Signaturbilds, wenn die Signatur ungültig oder nicht vertrauenswürdig ist, ist ein gutes Beispiel für die Art der Entscheidung, die jemand treffen könnte, ohne die Konsequenzen vollständig zu verstehen.

Stellen Sie sich vor, wenn diese Funktion vollständig wäre, wäre sie während dieser Quarantäne von COVID-19 eine große Hilfe gewesen. Stellen Sie sich vor, wie viele Transaktionen, Verträge usw.

Sie könnten von zu Hause aus durchgeführt worden sein, aber ich habe gesehen, dass diese Funktionalität seit Jahren stagniert. Ich kenne den Grund nicht, aber ich bin der Meinung, dass sie in Kombination mit anderen Tools eine große Hilfe für die Zusammenarbeit sein kann. usw.

Ich stimme voll und ganz zu, dass wir aus diesem Grund alle Bibliotheken erstellt und Open-Source-fähig gemacht haben, die unseren Betrachter ermöglicht haben. Aus diesem Grund können Benutzer unseren Viewer kostenlos verwenden.

Dank der Arbeit, die wir geleistet haben, könnte sicherlich jemand die Viewer-Arbeit, die wir mit weitaus weniger Aufwand geleistet haben, neu erstellen und die zugehörigen PRs an PDFjs senden. Wir würden uns sogar freuen, diese PRs im Code zu überprüfen.

Ich muss PDFs in meiner Angular CLI-App in einem Kontext anzeigen, in dem die Gültigkeit der Signatur nicht relevant ist und der einzige wichtige Teil eine genaue Anzeige ist.
Mein Testfall war das Beispiel-PDF mit einer digitalen Signatur von Adobe.
Da ich bereits viele Antworten ausprobiert habe, werde ich die Ergebnisse meiner Forschungen unten zusammenfassen.

Die häufigste Antwort, die ich gesehen habe, ist, die folgenden Zeilen in pdf.worker.js (Zeilen 48353 bis 48355) zu kommentieren:

if (data.fieldType === 'Sig') {
      //this.setFlags(AnnotationFlag.HIDDEN);
 }

Dies funktionierte jedoch nicht.

Das Kommentieren der folgenden Zeilen in annotation.js direkt in pdfjs-dist hat ebenfalls nicht funktioniert (Zeilen 285 bis 287):

case 0:
        this.color = null;
        break;

Dies funktionierte auch nicht, obwohl ich nicht wusste, wie ich die angegebene Codezeile platzieren sollte:
(<any>window).pdfWorkerSrc = '<path_to_file>/pdf.worker.js';

Ich habe versucht, zumindest die Anmerkungen auf der Seite abzurufen , aber jede Seite hat ein leeres Array zurückgegeben:

page.getAnnotations().then(function(annotations) {
     console.log('annotations loaded');
     console.log(annotations);
     for (let i = 0; i < annotations.length; i++) {
          console.log(annotations[i].subtype);
      }
 }, function (reason) {
     console.log(reason);
}); 

Für meine App ist es wichtig, das PDF so anzuzeigen, wie es ist. Zumindest möchte ich in der Lage sein, die Begrenzungsrechtecke der Signatur so zu gestalten, dass an ihrer Stelle ein Platzhalter angezeigt wird.
Könnte mir jemand helfen?

Ich muss PDFs in meiner Angular CLI-App in einem Kontext anzeigen, in dem die Gültigkeit der Signatur nicht relevant ist und der einzige wichtige Teil eine genaue Anzeige ist.
Mein Testfall war das Beispiel-PDF mit einer digitalen Signatur von Adobe.
Da ich bereits viele Antworten ausprobiert habe, werde ich die Ergebnisse meiner Forschungen unten zusammenfassen.

Hallo, ich denke, Sie hatten es fast bei Ihrem ersten Versuch ... haben Sie dieses https://github.com/mozilla/pdf.js/issues/1076#issuecomment -446959325 ausprobiert?

Ich habe es einfach versucht: nichts hat sich geändert.
Irgendeine andere Idee?

Dieses Problem ist bereits seit einiger Zeit offen. Wie sieht der aktuelle Plan aus, um es anzugehen, und wie können wir helfen?

Wenn ich die Signatur zumindest nicht anzeigen kann, möchte ich ein Platzhalterrechteck dort anzeigen, wo es sein sollte.
(Einfach die x-, y-Koordinaten sowie die Breite und Länge der Signatur kennen)

Das Anzeigen der Signatur wäre natürlich immer noch das beste Szenario (auch hier muss ich sie in meinem speziellen Anwendungsfall nicht überprüfen).

Wäre es eine Option, eine Renderoption zum Anzeigen der nicht verifizierten Signaturen hinzuzufügen?
Auf diese Weise können die Benutzer von pdf.js entscheiden, ob sie das Risiko eingehen möchten, sie anzuzeigen oder nicht.

Das Anzeigen einer ungültig gemachten kryptografischen Signatur ist genauso schlecht wie das Anzeigen einer falsch validierten:
https://www.pdf-insecurity.org/

Was ist, wenn die Signatur zuvor von einem Backend-Service korrekt validiert wurde?
Dies würde bedeuten, dass die Signatur in Ordnung war, aber immer noch nicht in einer Client-Anwendung angezeigt werden konnte.

Eine Renderoption zum Anzeigen der Signatur oder nicht, würde es Benutzern von pdf.js ermöglichen, die Signatur irgendwie zu validieren und dann selbst zu entscheiden, ob sie angezeigt werden soll oder nicht.
Dies würde auch den Entwicklern von pdf.js-Entwicklern die Last nehmen, überhaupt eine Signaturüberprüfung durchzuführen, da dies wahrscheinlich nicht Teil einer PDF-Rendering-Bibliothek sein sollte.
Die strikte Nichtanzeige der Signatur schränkt die Anwendungsfälle von pdf.js ein.

Was ist, wenn die Signatur zuvor von einem Backend-Service korrekt validiert wurde?
Dies würde bedeuten, dass die Signatur in Ordnung war, aber immer noch nicht in einer Client-Anwendung angezeigt werden konnte.

Eine Renderoption zum Anzeigen der Signatur oder nicht, würde es Benutzern von pdf.js ermöglichen, die Signatur irgendwie zu validieren und dann selbst zu entscheiden, ob sie angezeigt werden soll oder nicht.
Dies würde auch den Entwicklern von pdf.js-Entwicklern die Last nehmen, überhaupt eine Signaturüberprüfung durchzuführen, da dies wahrscheinlich nicht Teil einer PDF-Rendering-Bibliothek sein sollte.
Die strikte Nichtanzeige der Signatur schränkt die Anwendungsfälle von pdf.js ein.

Die Validierung zwischen Server und Client ist in Ordnung. Das Freilegen einer Flagge, um die Signatur als gültig und validiert anzuzeigen, wäre eine Fußwaffe.

Die Validierung zwischen Server und Client ist in Ordnung. Das Freilegen einer Flagge, um die Signatur als gültig und validiert anzuzeigen, wäre eine Fußwaffe.

Wir haben es mit verifizierten Signaturen zu tun, können sie jedoch nicht (ohne Hacking) im Client-Browser mit pdf.js anzeigen
Welche andere Option zum Rendern von PDFs im Client-Browser würden Sie vorschlagen, um die visuelle Darstellung der verifizierten Signatur zu rendern?

Sie können Ihre PDFjs vor der Bereitstellung patchen, um das gewünschte Verhalten zu erzielen.

Das habe ich mit "Hacken" gemeint und genau dazu sind wir derzeit gezwungen :-(

Ich verstehe nicht, warum wir immer noch Fragen zum Thema selbst stellen: Die "Hacks" haben nicht einmal für mich funktioniert, und ich bin immer noch in der Not.

In meinem Anwendungsfall steht die Gültigkeit der Signaturen nicht in Frage. Ich muss sie jedoch anzeigen oder zumindest den Benutzer wissen lassen, dass "etwas da" ist, anstatt nur dieser leere Teil der Leinwand.
Es ist mir egal, ob die API einen großen roten Warnhinweis zu nicht verifizierten Signaturen enthält oder ob sie mich rechtlich dazu zwingt, zu sagen, dass sie nicht verifiziert werden kann, oder ob sie mich warnt, dass dies auf mein eigenes Risiko erfolgt.
... Ich muss nur die Signatur anzeigen.

Zumindest möchte ich wirklich die Position und Größe der Signaturen auf dem Dokument haben, damit ich an ihrer Stelle ein graues Kästchen mit der Aufschrift "Hey, Benutzer, dort soll eine Signatur sein" schreiben kann auf sie.

Derzeit kann der Benutzer nicht wissen, dass das Dokument an dieser Stelle signiert ist.
Ist das nicht eine noch schlechtere Art zu temperieren?

Wenn es einen Booleschen Wert gäbe, der es erlaubt, alle digitalen Signaturen des Dokuments als transparente graue Vorlagenfelder anzuzeigen, wäre dies ausreichend und diese Funktion würde kein ethisches / sicherheitstechnisches Problem aufwerfen.

(Ich möchte auch sagen, dass das Problem offenbar seit 2012 mit mehr als hundert Kommentaren allein in diesem Thread anhängig ist. Ich glaube nicht, dass ich der einzige bin, der auf diese Funktion wartet.)

Graue Kästchen scheinen eher ein Rendering-Fehler zu sein und eine bereitgestellte Support-Hotline sehr wahrscheinlich zu überlasten :-)
Wir haben einen funktionierenden Hack, der im Moment gut funktioniert, aber zugegebenermaßen sehr hässlich ist:

  1. Laden Sie die aktuelle, transpilierte und minimierte Version von pdfjs-dist herunter
  2. Patchen Sie die fraglichen Zeilen in der transpilierten Version.
  3. Als neues privates Paket für internes npm-repo freigeben.
  4. Verwenden Sie ein gepatchtes Paket anstelle des ursprünglichen pdfjs-dist-Pakets.

Ugliy richtig? Aber es funktioniert und rendert die eingebetteten Signaturen einwandfrei.

Graue Kästchen scheinen eher ein Rendering-Fehler zu sein und eine bereitgestellte Support-Hotline sehr wahrscheinlich zu überlasten :-)

Ja, ja, ja, ich meinte jede Vorlage / jedes Bild / jede Nachricht, die durch * ergänzt werden könnte. Das PDF enthält digitale Signaturen, die nicht überprüft werden konnten und als solche nicht angezeigt wurden. Alles, was der Benutzer verstehen könnte, wenn eine Nachricht dies erklärt.

  1. Patchen Sie die fraglichen Zeilen in der transpilierten Version.

Ich verwende derzeit Angular CLI mit pdfjs-dist, das in meinen node_modules installiert ist, aber jede Lösung, die ich vor einigen Posts geschrieben habe, hat auf meiner Seite nicht funktioniert, und dies auch nicht:

Hallo, ich denke du hattest es fast bei deinem ersten Versuch ... hast du es mit # 1076 versucht

Habe ich etwas verpasst oder ist mein Fall zu spezifisch für dieses Update?

Wir haben die Erklärung in diesem Thread befolgt.
https://github.com/mozilla/pdf.js/issues/4743#issuecomment -163953288

Wir haben diesen Teil grundlegend geändert:

// Hide unsupported Widget signatures.
if (data.fieldType === 'Sig') {
   warn('unimplemented annotation type: Widget signature');
   this.setFlags(AnnotationFlag.HIDDEN);
}

Dazu:

// Hide unsupported Widget signatures.
if (data.fieldType === 'Sig') {
   warn('unimplemented annotation type: Widget signature');
}

Ich weiß, dass Sie das ganze "Wenn" entfernen könnten, aber wir wollten den kleinstmöglichen Patch.

Huch. Das ist in der Tat die Lösung, die auf meiner Seite nicht funktioniert hat.
Ich werde es erneut versuchen, wenn ich zum PDF zurückkehre, in dem ein Teil meiner App angezeigt wird.
Ich habe noch kein eigenes Paket erstellt, aber das Ändern der Datei direkt in node_modules / pdfjs-dist hat beim letzten Versuch nichts geändert.

Haben Sie beide Dateien pdf.worker.js und pdf.worker.min.js geändert
Dies war in unserem Ansatz notwendig.

Haben Sie beide Dateien pdf.worker.js und pdf.worker.min.js geändert
Dies war in unserem Ansatz notwendig.

Sie sprechen einen ausgezeichneten Punkt an, den ich vielleicht übersehen habe!
Ich werde das heute schnell versuchen und sehen, ob es funktioniert.

Hallo, ich mag deinen Ansatz, aber leider hat es bei mir nicht funktioniert
Ich habe die Zeilen folgendermaßen geändert:

Wir haben die Erklärung in diesem Thread befolgt.
# 4743 (Kommentar)

Wir haben diesen Teil grundlegend geändert:

// Hide unsupported Widget signatures.
if (data.fieldType === 'Sig') {
   warn('unimplemented annotation type: Widget signature');
   this.setFlags(AnnotationFlag.HIDDEN);
}

Dazu:

// Hide unsupported Widget signatures.
if (data.fieldType === 'Sig') {
   warn('unimplemented annotation type: Widget signature');
}

Ich weiß, dass Sie das ganze "Wenn" entfernen könnten, aber wir wollten den kleinstmöglichen Patch.

Dann habe ich es mit gulp generic und die erstellten Ressourcen verwendet.

Haben Sie beide Dateien pdf.worker.js und pdf.worker.min.js geändert
Dies war in unserem Ansatz notwendig.

Das pdf.worker.js wurde gebaut, aber Sie erwähnen pdf.worker.min.js , wie wird das gebaut und wo wird es gespeichert?
Was vermisse ich?

vielen Dank im Voraus

@ ll-priva Wir haben pdf.js nicht selbst erstellt.
Wie ich in Kommentar https://github.com/mozilla/pdf.js/issues/1076#issuecomment -658601553 sagte, haben wir tatsächlich die bereits erstellte Version von pdfjs-dist heruntergeladen und die gebündelten Versionen von pdf.worker.js gepatcht pdf.worker.min.js .

Meine Erklärung in https://github.com/mozilla/pdf.js/issues/1076#issuecomment -658609803 war wahrscheinlich etwas unklar, sorry.
Wir haben die beschriebene Lösung implementiert, indem wir das vorgefertigte Paket https://www.npmjs.com/package/pdfjs-dist gepatcht haben
Dann haben wir diese gepatchten Versionen von pdf.worker.js und pdf.worker.min.js , um ein privates pdfjs-dist -Paket in unser internes npm-Repository zu verschieben.
Last but not least haben wir diese gepatchte Version in unserem Produktionscode anstelle des offiziellen pdfjs-dist -Pakets verwendet.

Ich hoffe, das macht unseren Ansatz etwas klarer.

@PSpSynedra Vielen Dank. Das hat auch bei mir funktioniert

Ich bin zum ersten Mal seit ein paar Wochen wieder bei dieser Aufgabe, aber auf meiner Seite funktioniert sie immer noch nicht.
Ich habe im Moment kein eigenes privates Paket erstellt: Solange ich nicht neu erstellt habe, hätte das direkte Ändern der Dateien in node_modulespdfjs-dist funktionieren sollen (lokal, dann müsste ich die geänderten pdf.js tatsächlich als importieren Vermögenswert oder Paket).

Die Suche nach "Sig" im Ordner ergibt 4 verschiedene Dateiergebnisse:

  • pdfjs-dist \ buildpdf.worker.js
  • pdfjs-dist \ buildpdf.worker.min.js
  • pdfjs-dist \ es5 \ buildpdf.worker.js
  • pdfjs-dist \ lib \ core \ annotation.js

Ich habe alle diese 4 Vorkommen bearbeitet, um den Inhalt des "Wenn" zu entfernen, das das Signaturfeld gelöscht hat, und ein Flag gesetzt, um es auszublenden, wie oben erwähnt.
Es ist nichts anderes passiert: getAnnotations () gibt ein leeres Array zurück und die vorhandenen Signaturen werden immer noch nicht angezeigt.

Ich erhalte auch weiterhin diese Meldung in der Konsole, die nicht einmal ein Fehler oder eine Warnung ist (pdf.worker.js: 2965: 14):

Warnung: Nicht implementierter Widget-Feldtyp "Sig", der auf den Basisfeldtyp zurückgreift.

Wenn Sie sich den Code ansehen, bedeutet dies, dass annotation.js ihn in eine "Basis" -WidgetAnnotation einschließt. Dies bedeutet, dass die Nachricht kein Problem darstellt, sondern nur die Flags, die ich entfernt habe.

Vermisse ich etwas Ich habe die Datei min.js sowie die Datei js bearbeitet, die sich im Build-Ordner befinden und als solche verwendet werden sollten, also hätte alles funktionieren sollen ...
Was genau hast du @ ll-priva und @PSpSynedra gemacht ?

@Epsiom das habe ich gerade gemacht und es hat in ungefähr 5 Minuten für mich funktioniert: https://github.com/mozilla/pdf.js/issues/1076#issuecomment -446959325

Sie müssen sowohl die this.setFlags(AnnotationFlag.HIDDEN); auskommentieren als auch data.fieldValue=null hinzufügen. Die einzige Datei, die ich geändert habe, war pdf.worker.js , die in unserem Fall aus der pdfjs-dist-Bibliothek stammt und daher bereits minimiert ist

@Epsiom und andere, die hier
Ich hatte das gleiche Problem, bearbeitete PDF-Worker-Dateien ohne Ergebnis.

In meinem Fall verwende ich https://github.com/VadimDez/ng2-pdf-viewer , um PDF in einer eckigen App anzuzeigen. Dieses Modul lud den PDF-Worker direkt aus Cloudflare, nicht aus einer lokalen Datei. Überprüfen Sie daher, ob die Web-App die geänderte Datei pdf.worker.js tatsächlich verwendet. Sie können dies überprüfen, indem Sie in der Konsole auf das Feld "Nicht implementiertes Widget" vom Typ "Sig" klicken und die Maus auf den Dateinamen bewegen.

@konum Die Warnung stammt von " http: // localhost : 4200 / assets / vendor / pdf.worker.js", aber ich habe die beiden Zeilen dieser Datei bereits wie oben beschrieben auskommentiert:
if (data.fieldType === 'Sig') { //this.setFlags(AnnotationFlag.HIDDEN); //data.fieldValue = null; }

Immer noch keine digitale Signatur in Sicht ...

@Epsiom Hat auch bei mir nicht funktioniert. Ich schaue immer noch hinein.

@Epsiom Verwaltet, um die Signatur anzuzeigen. Fügen Sie dies in pdf.worker.js in Zeile 18480 hinzu
Fall "Sig":
neue SquareAnnotation (Parameter) zurückgeben;

Befindet sich der Schalter direkt über dieser Linie?
(0, _util.warn) ('Nicht implementierter Widget-Feldtyp "' + Feldtyp + '",' + "Zurückfallen auf Basisfeldtyp.");

@konum Hat bei mir nicht funktioniert:
ERROR Error: Uncaught (in promise): Object: {"message":"SquareAnnotation is not defined","stack":"AnnotationFactory_create<strong i="7">@http</strong>://localhost:4200/assets/vendor/pdf.worker.js:47999:7\nget annotations<strong i="8">@http</strong>://localhost:4200/assets/vendor/pdf.worker.js:48877:43\nLocalPdfManager_ensure/<<strong i="9">@http</strong>://localhost:4200/assets/vendor/pdf.worker.js:49204:21\nLocalPdfManager_ensure<strong i="10">@http</strong>://localhost:4200/assets/vendor/pdf.worker.js:49202:14\nPage_getOperatorList<strong i="11">@http</strong>://localhost:4200/assets/vendor/pdf.worker.js:48815:43\nwphSetupRenderPage/<<strong i="12">@http</strong>://localhost:4200/assets/vendor/pdf.worker.js:49883:13\n"} AnnotationFactory_create<strong i="13">@http</strong>://localhost:4200/assets/vendor/pdf.worker.js:47999:7 get annotations<strong i="14">@http</strong>://localhost:4200/assets/vendor/pdf.worker.js:48877:43 LocalPdfManager_ensure/<<strong i="15">@http</strong>://localhost:4200/assets/vendor/pdf.worker.js:49204:21 LocalPdfManager_ensure<strong i="16">@http</strong>://localhost:4200/assets/vendor/pdf.worker.js:49202:14 Page_getOperatorList<strong i="17">@http</strong>://localhost:4200/assets/vendor/pdf.worker.js:48815:43 wphSetupRenderPage/<<strong i="18">@http</strong>://localhost:4200/assets/vendor/pdf.worker.js:49883:13

@Epsiom Verwenden Sie die neueste Version von pdf.js? In pdf.worker.js sollte die SquareAnnotation-Klasse definiert sein.

@Epsiom nur um zu verdeutlichen, sollte nur this.setFlags(AnnotationFlag.HIDDEN); kommentiert werden. data.fieldValue = null; sollte hinzugefügt werden, wenn es nicht vorhanden ist, aber NICHT kommentiert werden.

Wir verwenden auch das Paket pdfjs-dist, daher haben wir dieses gemäß einem früheren Kommentar direkt geändert. Sind Sie sicher, dass der Code, den Sie ändern, tatsächlich ausgeführt wird? Wenn es sich in node_modules befindet, werden abhängig von Ihrem Build möglicherweise einige dieser Assets zwischengespeichert, und Sie verwenden Ihren geänderten Code möglicherweise nicht.

@kjhangiani Ich erinnere mich noch genau, dass ein zusätzliches console.log in der Konsole angezeigt wurde, sodass es eindeutig ausgeführt wird.
Ich werde versuchen, data.fieldValue = null; hinzuzufügen, wenn ich zu dieser Aufgabe zurückkomme, und prüfen, ob dies funktioniert.

Das Hinzufügen von data.fieldValue = null; zurück zum if (data.fieldType === 'Sig') -Block sowie eines console.log("TEST") für alle Fälle, und nichts passierte, während "TEST" nach dem üblichen Warning: Unimplemented widget field type "Sig", falling back to base field type. korrekt in der Konsole

Irgendeine andere Idee?

@Epsiom Verwaltet, um die Signatur anzuzeigen. Fügen Sie dies in pdf.worker.js in Zeile 18480 hinzu
Fall "Sig":
neue SquareAnnotation (Parameter) zurückgeben;

Befindet sich der Schalter direkt über dieser Linie?
(0, _util.warn) ('Nicht implementierter Widget-Feldtyp "' + Feldtyp + '",' + "Zurückfallen auf Basisfeldtyp.");

Das hat bei mir funktioniert, du hast meinen Tag gerettet, danke.

@yduybya Wie aktuell ist dein Projekt?
Gibt es eine Besonderheit?
Ich denke, ich muss meine Version von pdf.js aktualisieren und es erneut versuchen, obwohl es ziemlich neu ist.

Gibt es eine einfache Möglichkeit, pdf.js in einer Angular 9-App zu aktualisieren?
Ich habe die neue Datei pdf.worker.js hier gefunden (http://mozilla.github.io/pdf.js/build/pdf.worker.js), aber nur das Ersetzen dieser Datei hat (offensichtlich) nicht funktioniert.

Ich habe mein Projekt auf https://github.com/mozilla/pdf.js/issues/8836 und https://github.com/ashishyadav0019/pdfJS_angular4_Ts.git zurückgeführt , aber diese Projekte verwenden veraltete Dateien.

Die Dateien auf dem pdf.js-Github und auf pdfJS_angular4_Ts.git sind nicht korreliert.
Weiß jemand, wie man pdf.js in ein Angular 9-Projekt mit aktuellen Dateien korrekt importiert?

@Epsiom Für Angular 8 App) Ich denke, es sollte auf Angular 9 funktionieren) Ich verwende https://github.com/VadimDez/ng2-pdf-viewer.

Aus ng2-pdf-viewer-Dokumenten:
Standardmäßig wird der Worker von cdnjs.cloudflare.com geladen.
In Ihrem Code-Aktualisierungspfad zum Worker soll beispielsweise /pdf.worker.js sein
(Fenster wie jedes) .pdfWorkerSrc = '/pdf.worker.js';
Dies sollte festgelegt werden, bevor die PDF-Viewer-Komponente gerendert wird.

Wenn Sie dieses Projekt verwenden, wird Ihrem Projekt die Abhängigkeit pdfjs-dist hinzugefügt. Bearbeiten Sie die Knotenmodule / pdfjs-dist / build / pdf.worker.js mit dem Tipp squareAnnotation.

@konum Ich verwende pdf.js direkt und nicht ng2-pdf-viewer aus mehreren Gründen, indem ich mich davon inspirieren lasse: https://github.com/ashishyadav0019/pdfJS_angular4_Ts.git
Ich habe die pdfjs-dist-Abhängigkeit, aber es wird src/assets/vendor/pdf.worker.js verwendet.
Irgendeine Idee ?

@Epsiom Haben Sie versucht, die Dateien pdf.js und pdf.worker.js auf den neuesten Code zu aktualisieren?

@konum Genau das versuche ich zu tun, aber da pdf.js in Angular selten verwendet wird, benötigen die meisten Projekte anscheinend nur ng2-pdf-viewer und da die in der neuesten Version von pdf.js verwendeten Dateien unterschiedlich sind Der Vorgang ist auf den ersten Blick alles andere als offensichtlich.

Hallo,

Kommentieren this.setFlags (AnnotationFlag.HIDDEN); In pdf.worker.js unter v2.6.347 wird das Signaturbild nicht angezeigt.

Hat sich daran etwas geändert?

@lainosantos Ja, es gibt eine Änderung. Wenn Sie das Rendern von Formularen deaktivieren, werden die Signaturen erneut angezeigt.

@ Stephanrauh Danke.

PDFViewerApplicationOptions.set('renderInteractiveForms', false);

Gibt es eine Möglichkeit, Formulare zu aktivieren und Signaturen anzuzeigen?

@lainosantos Nein, aber ich habe eine renderInteractiveForms deaktiviert ist. Es verwendet Angular, aber ich denke, Sie können die Idee auch dann extrahieren, wenn Sie ein anderes Framework verwenden: https://medium.com/factory-mind/angular-pdf-forms-fa72b15c3fbd

Ich habe momentan dringendere Angelegenheiten und kann keine Zeit mit der Aufgabe verbringen, aber wenn es jemandem gelingt, eine aktuelle pdf.js-Version auf Angular 9 zu importieren, hätte er meinen tiefsten Dank.

@Epsiom Hier sind Sie: https://www.npmjs.com/package/ngx-extended-pdf-viewer :)

@stephanrauh ... Nun, außer dass ich kompatibel mit IE11 sein muss und nur die Leinwand direkt verwenden muss, um einen maßgeschneiderten PDF-Viewer zu haben, also kann ich das leider nicht verwenden.
Ich kann weder ng2-pdf-viewer noch etwas Ähnliches verwenden. Ich frage wirklich nach pdf.js an sich, was ein wirklich Nischenfall ist.

War diese Seite hilfreich?
5 / 5 - 1 Bewertungen

Verwandte Themen

sujit-baniya picture sujit-baniya  ·  3Kommentare

zerr0s picture zerr0s  ·  3Kommentare

anggikolo11 picture anggikolo11  ·  3Kommentare

aaronshaf picture aaronshaf  ·  3Kommentare

jigskpatel picture jigskpatel  ·  3Kommentare