Wie funktioniert Anmerkungen Akrobat kodieren hinzugefügt als Haftnotizen zu PDF-Dateien?

StackOverflow https://stackoverflow.com/questions/375321

  •  22-08-2019
  •  | 
  •  

Frage

Wir haben das Lesen und Schreiben von Sticky Notes / Anmerkungen / Kommentare zu PDF-Dateien über ein ActiveX-Steuerelement in unserer Anwendung für eine Reihe von Jahren. Wir haben vor kurzem mit Unicode-Unterstützung Delphi2009 aufgewertet. Die folgenden Probleme verursacht.

Wenn wir nennen

CAcroPDAnnot.GetContents

Die Ergebnisse scheinen ziemlich seltsam zu sein, und wir verlieren unsere Unicode Chars. Es ist nicht wie als Ansi String Speichern, die bei der Rückkehr in der Regel führen würde ????? stattdessen bekommen wir einen String wie

, És „ú,É • -Z ×, ð,Ð, ¢, ½,ç

Für eine Reihe von japanischen Schriftzeichen.

Allerdings, wenn ich die Kommentare in der pdf zu einer Daten-Datei über das Menü im pdf speichere selbst geschrieben wird als so etwas wie

Datei

0kL0Oeå0k~¨ª0'0r0D0_0 ‰

Dieser kann den Export und wieder importiert in ein Akrobat pdf sein und die richtigen Unicode-Zeichen neu erstellen. Doch sobald ich CAcroPDAnnot.GetContents in meinem Code nennen, ist es sonst wieder als etwas kommen.

  1. Ist CAcroPDAnnot.GetContents gebrochen?
  2. Gibt es ein Codierschema ich bewusst sein sollten?
  3. Gibt es eine Alternative ich in der Lage sein könnte, zu tun?

Danke

War es hilfreich?

Lösung

  

, És „ú,É • -Z ×, ð,Ð, ¢, ½,ç

Das ist die Zeichenfolge:

に 行 く 日 に 風邪 を ひ い た ら

in CP-932 aka Shift-JIS-Codierung, eine schreckliche, aber bedauerlicherweise immer noch populäre Codierung in Japan.

Sie sind zu interpretieren es zur Zeit in als CP-1252 (Windows Westeuropa). Wenn Sie Ihre PDF-Lese Komponente automatisch für Sie nicht konvertieren, müssen Sie einen Weg finden, zu erkennen, was das Dokument kodiert, ist in und wandelt es manuell.

Ich weiß nicht, was Delphi Codierungen für das Lesen bietet, aber haben Sie die Codierungen für Shift-JIS in Windows installiert ist, in der Systemsteuerung -> Ländereinstellungen -> „Dateien installieren für ostasiatische Sprachen“ Option? Wenn nicht, das könnte erklären, warum es automatisch zu konvertieren wäre andernfalls vielleicht.

Andere Tipps

Sie sind nicht genau uns eine Menge Informationen zu geben, mit zu arbeiten.

Ich nehme an, Sie sprechen über die „Acrobat.CAcroPDAnnot“ Klasse Methode getContents hier. Welche Version von Acrobat verwenden Sie? Haben Sie vielleicht Versionen eingeschaltet (oder ein Update ausgeführt wird) um die Zeit der Programmierung mit Delphi 2009?

gestartet

Dann: Wie haben Sie das Objekt instanziiert? Wenn eine * _TLB.pas Datei aus dem DLL erzeugt verwenden, sind Sie sicher, dass es immer noch passt es? (Versuchen Sie es erneut zu erzeugen, wenn unsicher).

Drittens: Wie rufen Sie die Methode? Welche Art von Variable zuweisen Sie das Ergebnis?

Was auch helfen könnte, ist, wenn Sie eine Probe einer Anmerkung zur Verfügung stellen könnten (vorzugsweise mit Nicht-ASCII-Zeichen); und für diese Anmerkung:

  • , was es sollte aussehen (und, wie es im Inneren Reader sieht)
  • , was es gibt, wenn eine Pre-2009-Version von Delphi * mit
  • , was gibt es bei der Verwendung von Delphi 2009 *

(* vorzugsweise der HEX-Byte-Codes der (ansi / breit) Strings, aber Ausgabe von dem Strg-F7 Inspektoren sollte tun)

Dann vielleicht jemand eine aussagekräftigere Antwort geben könnte.

Ok, einer der wichtigsten Unterschiede zwischen Delphi 2009 und den früheren Versionen ist, dass der Standard-String-Typ ist ein Unicode-String. Das bedeutet, dass wenn Sie die gleiche ActiveX-Komponente wie in früheren Versionen verwenden, können Sie Unicode-Strings in ASCII-Strings sind vorbei, und das ist in der Regel keine gute Idee.

Es gibt ein paar Lösungen für dieses Problem:

  • Versuchen Sie, wenn Sie Ihre activeX Komponente aktualisieren können, so dass es vollständig Unicode-Strings unterstützt.
  • Verwenden Sie Ansistring und nicht die Zeichenfolge mit der ActiveX-Komponente zu kommunizieren. In diesem Fall können Sie immer noch die alte Schnittstelle verwenden, aber Sie sind immer noch die gleichen Beschränkungen gebunden.
  • Verwenden Sie eine andere Steuerung, die pdf erstellt. Es gibt eine Menge zu finden, aber bereit sein, einen großen Teil Ihrer Software zu ändern. (Einige Steuerelemente sind XML-basierte und Verwendung Codierung).
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top