2016-04-08 7 views
0

So habe ich eine PDF, die im laufenden Betrieb erstellt wurde, indem eine Vorlage geöffnet, die Werte für bestimmte Felder geändert und dann gespeichert.IE10/Edge PDF zeigt keine korrekten Werte

Works:

  • Wenn ich die Datei in Chrome zu öffnen, habe ich die richtigen Werte.
  • Wenn ich die Datei auf der Festplatte speichern und mit Adobe Reader DC (oder was auch immer genannt wird) öffnen, bekomme ich die richtigen Werte.

funktioniert nicht:

  • Wenn ich das Dokument in IE 10 öffnen, in Rand öffnet sich und zeigt "default" Werte für die Felder.
  • Wenn ich die Datei auf der Festplatte speichern und öffnen mit IE, zeigt es "Standard" -Werte.
  • Wenn ich die Datei mit "PDF Reader - Document Viewer und Manager" öffne, zeigt es "Standard" -Werte.

Ich verwende Windows 10, die Anwendung, die ich arbeite, ist in ASP.Net getan. Es funktioniert genauso, wenn ich FileStreamResult, FilePathResult oder File zurückgebe.

Und ich bin mir jetzt ziemlich sicher, dass das Problem Microsoft-Produkte und nicht mein Code ist.

Eine Idee, warum Microsoft-Produkte meine PDFs nicht richtig öffnen können? Müssen sie auf eine bestimmte Art und Weise abgeflacht werden?

Edit (mehr Informationen als in den Kommentaren angefragt):

  • Die Dokumente werden mit PDFsharp erstellt.
  • Sie haben Felder, die dynamisch durch Werte ersetzt werden (d. H. [MyFieldA] wird durch "ActualValueA" ersetzt).
  • Sobald die Druckfelder werden mit den tatsächlichen Werten ersetzt, wird die Datei mit File.WriteAllText(fileName,fileText); geschrieben, in dem fileText durch File.ReadAllText(fileTemplateName);

Bild des Vergleichs von Feldern erhalten wird, die wackelig sind: Comparison

+1

Sie müssen weitere Details hinzufügen, wie Sie Ihre Dokumente erstellen und wie Sie die Daten füllen, die unter IE scheinbar fehlen. –

+0

@WiktorZychla Ich habe einige weitere Informationen am Ende des Beitrags hinzugefügt. Ich gehe zum ersten Mal in den Prozess der Dokumenterstellung und aktualisiere die Informationen so, wie ich sie finde. Eine Theorie, die von einem Mitarbeiter postuliert wurde, war, dass die Dokumentvorlagen in Acrobat 5 erstellt wurden, mit denen IE10/Edge nicht ausreichend umgehen kann, weil ein anderer Mitarbeiter Probleme mit Vorlagen hatte, die in Acrobat 6 erstellt wurden (die mit IE10 kompatibel sind) /Kante). – Bardicer

+0

Bitte teilen Sie ein Beispiel-PDF, um das Problem für die Analyse zu veranschaulichen. – mkl

Antwort

0

So fand ich die Lösung für das Problem, und es scheint, dass es eine zweifache Sache sein könnte.

Ein Teil des Puzzles, glaube ich, war der MemoryStream, mit dem das PDF erstellt wurde. Es wurde in einem inneren Bereich deklariert, in einem PdfReader.Open-Aufruf in einer Zuweisung zu einer Variablen verwendet, die in einem äußeren Bereich deklariert wurde, und dann wurde der Bereich beendet, während die Variable noch verwendet wurde. Ich habe die memorystream-Deklaration in den äußeren Bereich verschoben, in dem sich die var-Deklaration befand, sodass sie sich im selben Bereich befinden. Außerdem wurde der Speicherstrom nicht mit einem memoryStream.Close() Aufruf oder in einem using (var memoryStream = new MemoryStream()) { } Block geschlossen. Also habe ich einen Anruf an memoryStream.Close() hinzugefügt.

Das andere Stück ist, dass die PDF-Vorlage Formularfelder einige Standardanzeigewerte hatten. Es scheint, dass Microsoft stuff (Edge, PDF Viewer) die eingefügten Werte möglicherweise nicht abrufen kann und stattdessen die Standardanzeigewerte der Felder liest und diese anzeigt. Nachdem alle Standardanzeigewerte entfernt wurden, begann Edge, die PDF-Datei zu öffnen und Werte korrekt anzuzeigen.

Da diese beiden Teile im Tandem erstellt wurden, kann ich nicht mit Sicherheit sagen, dass sie beide eine gleichwertige Rolle spielen, aber dies sind die einzigen zwei Änderungen, die vorgenommen wurden, um Werte korrekt darzustellen. Mein Bauchgefühl ist, dass das Problem bei den Standard-Anzeigewerten und Edge liegt.

+1

Zur ersten möglichen Ursache: Da Sie in Ihrer Frage kein brauchbares Stück Code gezeigt haben, hätte niemand einen Hinweis in diese Richtung geben können, ohne wild zu raten. Zur zweiten möglichen Ursache: PDF-Formularfelder können zusätzlich zum reinen Feldwert einen Aussehensstrom (bezüglich eines Layout-Feldinhaltes) bereitstellen. Ein Betrachter kann dann wählen, diesen vorgestalteten Aussehenstrom anzuzeigen oder einen von Grund auf neu zu erzeugen, indem er den einfachen Feldwert verwendet. Wahrscheinlich sind solche Aussehensströme Ihre * Standardanzeigewerte *. Vorsicht, es gibt Vorschaubilder, die nicht von Grund auf neu erstellt werden können. – mkl

+0

Das ist sehr wahrscheinlich. Ich bin blindlings auf diesen Käfer gestoßen, da ich vorher nicht in diesem Bereich gearbeitet habe. Ich bin zufällig der "Bug Bulldog" der Gruppe, der es nicht loslassen kann, bis es gelöst ist. – Bardicer