Text in PDF wird beim Kopieren zu Kauderwelsch, zeigt aber fein an

2090
coldbreeze16

Wir sind eine kleine Gruppe, die die Verbreitung von Unicode in Indien fördert (hier sind alte Kodierungen tief verwurzelt). Ich habe jedoch ein Problem, wenn ich ein Dokument in Unicode-Text in einer beliebigen indischen Sprache in das PDF-Format konvertiere. Der Text wird wie beabsichtigt angezeigt, aber beim Einfügen der Kopie wird der Inhalt teilweise zum Kauderwelsch.

Ich verwende inDesign CC für das Setzen von Texten unter Win 7. Ich kann problemlos in das epub-Format exportieren. Das exportierte PDF hat jedoch dieses Problem. Ich habe auch versucht, auf Adobe PDF-Drucker und PrimoPDF zu drucken, es wurde nur noch schlimmer. Beim Auschecken von PDFs im Internet stellt sich heraus, dass dieses Problem in allen solchen Unicode-kodierten Indic PDF-Dateien (und wahrscheinlich allen komplexen ostasiatischen Skripts) besteht. Ist das ein Problem in den PDF-Spezifikationen?

Das PDF finden Sie hier http://www.rajbhasha.nic.in/pdf/dolebook-4.pdf

Kopieren Sie einen beliebigen Text und stimmen Sie mit dem Original überein. Sie sehen, dass Zeichen durch andere Zeichen ersetzt werden. Es hat sich unnötiger Leerraum eingeschlichen.

Jetzt fördern wir Unicode aus Gründen, dass das Kopieren und Suchen / Indexieren einfacher wird. Dieses Problem zerstört das völlig. Irgendwelche Ideen?

4
Ich kann bestätigen, dass das Kopieren / Einfügen Ihres Dokuments auf einem Mac auch die Zeichen ändert. Ich kann es nicht lesen, aber es gibt einige Unterschiede. Dies könnte darauf hindeuten, dass die Quellkonvertierung fehlerhaft ist. Werfen Sie stattdessen einen Blick auf [Calibre] (http://calibre-ebook.com) (Freeware), um die Konvertierung durchzuführen. Es kann Ihnen zumindest sagen, wo das Problem beginnt. Tetsujin vor 7 Jahren 0
Kann das Kopier- / Einfügeproblem unter Linux mit `xpdf` bestätigen. Ich habe mir das PDF mit "mutool" angesehen, es verwendet spezielle Schriftarten, die keine Unicode-Kodierung verwenden. Sie benötigen ein anderes Programm (anstelle von inDesign CC) und ein Programm, das PDF-Dateien mit Unicode-Kodierung erzeugt (nein, ich kenne keine Option für Windows 7). [Diese Frage] (http://stackoverflow.com/questions/128162/unicode-in-pdf) enthält technische Details zu Unicode in PDF. Dies scheint möglich, aber nicht einfach zu bewerkstelligen. dirkt vor 7 Jahren 0
Korrektur: Das Beispiel-PDF verwendet eigentlich `/ ToUnicode`-Zuordnungen, aber sie scheinen aus irgendeinem Grund nicht zu funktionieren. Weiß noch nicht, was schief geht. dirkt vor 7 Jahren 0
Siehe auch: http://stackoverflow.com/questions/12703387/pdf-font-encoding-why-cant-i-copy-text-from-a-pdf grawity vor 7 Jahren 0
@Tetsujin: Ich habe versucht, den entstehenden epub mit verschiedenen Werkzeugen, einschließlich Kaliber, in PDF zu konvertieren. Das Problem verschlimmerte sich tatsächlich. coldbreeze16 vor 7 Jahren 0

1 Antwort auf die Frage

4
dirkt

Ich habe das pdf mit dekomprimiert mutool cleanund habe mir das angesehen. Das Problem scheint zu sein, dass es, wie in dieser stackoverflow-Frage beschrieben, schwierig ist, die Unicode-Kodierung für die Schriftarten zu verwenden. Aus diesem Grund verwenden die in der PDF-Datei enthaltenen Schriftarten eine andere Kodierung. Es enthält jedoch auch /ToUnicodeObjekte für jede Schrift mit einer komplizierten Zuordnung von den Schriftzeichen zu den Unicode-Zeichen.

Viele PDF-Viewer (wie z. B. xpdfunter Linux) scheinen dieses komplizierte Mapping (oder zumindest ein Mapping mit einer solchen Komplexität nicht zu beachten, obwohl sie möglicherweise mit einfacheren Mappings arbeiten), weshalb Sie Müll bekommen beim Versuch, zu kopieren und einzufügen. Bei anderen PDF-Viewern (wie mupdf) funktioniert es jedoch, wie ich bestätigt habe.

Das Problem befindet sich also im PDF-Viewer, nicht im Dokument. Außerdem passen PDFs und Unicode nicht so gut zusammen, wie Sie anhand der komplizierten Mittel erkennen können, die für die Übersetzung erforderlich sind.

Mögliche Lösungen: (1) Druck auf die Entwickler von PDF-Viewern, um \ToUnicodeMappings vollständig zu unterstützen . Vielleicht reparieren Sie sie selbst für Open Source. (2) Die Verwendung eines bestimmten PDF-Viewers fördern, der mit den Zuordnungen arbeitet. (3) Versuchen Sie, Schriftarten innerhalb der PDF-Datei zu verwenden, bei denen die Glyphenkodierung mit der Unicode-Kodierung übereinstimmt. Dies scheint mit 16-Bit-Unicode-Codepunkten möglich zu sein (und die indischen Zeichen scheinen, soweit ich das beurteilen kann, 16-Bit zu sein), aber ich weiß nicht, wie gut das funktionieren wird oder welche Anwendung Sie zum Erstellen solcher PDFs verwenden sollten .

Dies scheint richtig zu sein, da ich mit verschiedenen PDF-Readern unterschiedliche Ausgaben beim Kopieren bekomme, was nur möglich ist, wenn jeder die Interpretation der ToUnicode-Tabelle unterschiedlich implementiert hat. Was die von Ihnen vorgeschlagenen Lösungen angeht, sind 1 und 2 nicht machbar, da die Benutzer ihr Betriebssystem und ihren PDF-Reader nicht nur dafür verschieben. Alle von mir getesteten PDF-Reader haben Probleme (Adobe Acrobat, PDF X, Foxit, Google PDF Viewer). Für 3 habe ich es nicht verstanden. Dieses Dokument verwendet die Standard-Unicode-Hindi-Schrift Mangal, die mit Win Vista und höher geliefert wird. coldbreeze16 vor 7 Jahren 0
[Mupdf] (http://mupdf.com/) funktioniert auch unter Windows, Sie können es also auch versuchen. qpdfview funktioniert auch unter Linux. Ich werde versuchen, eine Beispieldatei für (3) zu erstellen, um zu sehen, ob sie auch ohne ToUnicode-Tabellen funktioniert. Dies kann jedoch einige Zeit dauern. dirkt vor 7 Jahren 0
Es sieht so aus, als würde "xpdf" nur "komplexe" Zeichen außer ASCII für Ausschneiden und Einfügen ignorieren, während "mupdf" eine UTF8-codierte Einfügung erzeugt. Das heißt, ich kann hier nicht richtig unter Linux testen. Ich habe eine dekomprimierte [PDF-Datei] (https://www.dropbox.com/s/h28u9yrth85xta2/indian.pdf?dl=0) mit Xetex erstellt, die nicht so komplex ist wie Ihr Beispiel. Sie können es mit einem Texteditor prüfen. Glyphen liegen im Bereich 0200-0400, der entsprechende Unicode ist 09xx. Testen Sie Ihre Viewer damit, wenn Sie Unicode-Zeichen im 0200-0400-Bereich einfügen können, sollte das Erstellen einer speziellen Schriftart mit diesem Viewer funktionieren. dirkt vor 7 Jahren 0
Ich war weg von zu Hause, bin gerade zurückgekehrt und habe mupdf unter Win 7 und Ubuntu 14.04 getestet. Das gleiche Problem bleibt beim Kopieren bestehen. Ich bin mir nicht sicher, was ich falsch mache. Ich habe dein PDF auch bei allen meinen Zuschauern ausprobiert. Kein Glück. coldbreeze16 vor 7 Jahren 0
Huh. Ich bin auf Debian, was sehr nahe an Ubuntu liegt, und mupdf funktioniert einwandfrei (Shift-Rechts-Taste zur Auswahl). Wo hast du es eingefügt? Können Sie ein `xclip -o | hexdump -C` aus der Kommandozeile über die Auswahl und die Ergebnisse posten? (Pakete `xclip`,` bsdmainutils`, falls nicht installiert). Können Sie auch posten, was genau die Ergebnisse für mein PDF mit den verschiedenen Zuschauern sind? Ein Tool wie [in der Zwischenablage] (http://www.nirsoft.net/utils/inside_clipboard.html) hilft, IIRC zeigt auch ein Hex. dirkt vor 7 Jahren 0
Zum Vergleich: Ich bekomme zB 'e0 a4 b8 e0 a4 82 e0 a4 83 e0 a4 95', so wie die UTF-8-codierten Zeichen "संःक" aussehen. dirkt vor 7 Jahren 0
Hier ist der Ausgang für die erste Zeile 00000000 e0 a4 b8 e0 a4 82 e0 a4 83 e0 a4 95 e0 a5 83 e0 | ................ | 00000010 a4 a4 e0 a4 ae e0 a5 8d 0a | ......... | 00000019 coldbreeze16 vor 7 Jahren 0
Ja das ist das Ding! Schauen Sie in Ihr PDF. Es zeigt संस्कृतम्, aber beim Kopieren wird संःकृतम्. Der dritte Buchstabe स् wurde durch ः ersetzt coldbreeze16 vor 7 Jahren 0
Ich habe auch einen anderen merkwürdigen Effekt bemerkt. Wenn ich unter Windows 7 eine beliebige Software zum Erstellen von PDF-Dateien verwende (Acrobat, PDF-Drucker, Primo-PDF, inDesign, MS Word, Libre Office), ist es egal, welche Schriftart ich verwende. Der kopierte Text ist Kauderwelsch. Aber wenn ich Lyx und XeTex verwende, um Schriftarten zu ändern, passieren seltsame Dinge. Bei Verwendung der meisten Schriftarten "sieht es gut aus, aber Kopien sind scheiße". Wenn ich jedoch die Schriftart NirmalaUI verwende (kommt mit MS Word 2013) und die PDF-Datei jetzt mit XeTex ausgeben, sieht die PDF-Datei "Scheiße aus, kopiert aber" (fast ... kopierter Text enthält einige Leerzeichen, aber der gesamte Text ist intakt). TBH, Nirmala ist eine unvollständige, halbgebackene Schrift coldbreeze16 vor 7 Jahren 0
Ich dachte, mit "Kauderwelsch" meinten Sie "etwas völlig unverständliches"? Wenn Sie nur "nicht genau" meinen und dies für alle Betrachter der Fall ist, ist das Problem im Wesentlichen gelöst: Kopieren und Einfügen funktionierten angesichts der Informationen in der PDF-Datei korrekt. Es ist nur so, dass die Ligatur SA + VIRAMA in einer Art und Weise gerendert wurde, als dies nicht der Fall war. Die ursprünglichen Informationen von SA + VIRAMA bleiben erhalten. (Sorry, ich hatte keine Ahnung, wie Devanagari funktioniert, ich muss das alles auf dem Weg herausfinden). Wenn dies das einzige Problem ist, benötigen Sie "nur" eine Möglichkeit, PDFs zu erstellen, die diese Informationen in der Tabelle / ToUnicode enthalten. dirkt vor 7 Jahren 0
Es sieht so aus, als müssten Sie Ihre eigene Schriftart mit korrekten Tabellen zusammenstellen, die auch Ligaturen enthalten, um den "संः" - Effekt zu verhindern. Und dann ein Programm finden oder schreiben, das mit dieser Schriftart arbeitet. Xetex / Xelatex ist möglicherweise ein guter Kandidat. dirkt vor 7 Jahren 0
Schauen Sie sich das [this] (https://www.dropbox.com/s/8p0j3yrlsr8a0kn/indian2a.pdf?dl=0) von Hand modifizierte PDF an, um zu sehen, wie die cmap aussehen sollte. dirkt vor 7 Jahren 0