Jesteśmy małą grupą, która promuje rozpowszechnianie Unicode w Indiach (tutaj starsze kodowania są głęboko zakorzenione). Ale mam problem z konwersją dokumentu w tekście Unicode w dowolnym języku indyjskim do formatu PDF. Tekst jest wyświetlany zgodnie z przeznaczeniem, ale po wklejeniu kopii treść częściowo zmienia się w bełkot.
Używam programu InDesign CC do pisania w systemie Windows 7. Mogę dobrze eksportować do formatu epub. Ale eksportowany plik PDF ma ten problem. Próbowałem także drukować na drukarce Adobe PDF i PrimoPDF, tylko pogorszyło się. Podczas sprawdzania plików PDF w Internecie okazuje się, że ten problem występuje we wszystkich takich kodowanych plikach PDF w formacie Unicode (i prawdopodobnie we wszystkich złożonych skryptach wschodnioazjatyckich). Czy to problem w specyfikacjach PDF?
Sprawdź plik PDF tutaj http://www.rajbhasha.nic.in/pdf/dolebook-4.pdf
Skopiuj dowolny tekst i dopasuj do oryginału, zobaczysz, że znaki są zastępowane innymi znakami, wkradła się niepotrzebna biała spacja.
Teraz promujemy Unicode, ponieważ ułatwi to kopiowanie i wyszukiwanie / indeksowanie. Ten problem całkowicie to niszczy. Jakieś pomysły?
źródło
xpdf
. Spojrzałem na plik PDFmutool
, który używa specjalnych czcionek, które nie używają kodowania Unicode. Potrzebujesz innego programu do pisania (zamiast programu InDesign CC) i takiego, który tworzy pliki PDF z kodowaniem Unicode (nie, nie znam żadnej opcji dla Windows 7). To pytanie zawiera szczegółowe informacje techniczne na temat Unicode w PDF, wydaje się możliwe, ale niełatwe./ToUnicode
mapowań, ale z jakiegoś powodu nie działają. Nie wiem jeszcze, co poszło nie tak.Odpowiedzi:
Rozpakowałem plik pdf
mutool clean
i obejrzałem. Problem polega na tym, że zgodnie z opisem w tym pytaniu dotyczącym przepełnienia stosu trudno jest używać kodowania Unicode dla czcionek. Z tego powodu czcionki zawarte w pliku PDF używają innego kodowania. Zawiera jednak/ToUnicode
obiekty dla każdej czcionki ze skomplikowanym odwzorowaniem od glifów czcionek do znaków Unicode.Teraz wiele przeglądarek PDF (jak np.
xpdf
Linux) wydaje się nie zwracać uwagi na to skomplikowane mapowanie (a przynajmniej nie na mapowanie o takiej złożoności, chociaż mogą działać na prostszych mapowaniach), dlatego dostajesz śmieci podczas próby kopiowania i wklejania. Jednak w przypadku innych przeglądarek PDF (jakmupdf
) działa, co potwierdziłem.Problem znajduje się w przeglądarce PDF, a nie w dokumencie. Ponadto pliki PDF i Unicode nie pasują do siebie tak dobrze, jak widać ze skomplikowanych środków niezbędnych do wykonania tłumaczenia.
Możliwe rozwiązania: (1) wywierają presję na twórców przeglądarek PDF, aby w pełni obsługiwali
\ToUnicode
mapowania. Może napraw je samodzielnie dla oprogramowania typu open source. (2) Promuj użycie określonej przeglądarki plików PDF, która współpracuje z odwzorowaniami. (3) Spróbuj użyć czcionek w pliku PDF, w których kodowanie glifów jest zgodne z kodowaniem Unicode. Wydaje się to możliwe w przypadku 16-bitowych punktów kodowych Unicode (a indyjskie znaki wydają się być 16-bitowe, o ile mogę powiedzieć), ale nie wiem, jak dobrze to zadziała, ani jakiej aplikacji należy użyć do tworzenia takich plików PDF .źródło
xpdf
po prostu ignoruje „złożone” znaki oprócz ASCII dla wycinania i wklejania, a jednocześniemupdf
tworzy wklej zakodowany w UTF8. Oznacza to, że nie mogę poprawnie przetestować tutaj w systemie Linux. Stworzyłem zdekompresowany plik PDF z Xetex, który nie jest tak skomplikowany jak twój przykład. Możesz to sprawdzić za pomocą edytora tekstu. Glify są w zakresie 0200-0400, odpowiadający im Unicode to 09xx. Przetestuj za pomocą tego przeglądarki, jeśli możesz wkleić znaki Unicode w zakresie 0200-0400, utworzenie specjalnej czcionki powinno współpracować z tą przeglądarką.xclip -o | hexdump -C
z wiersza polecenia wyboru i opublikować wyniki? (Pakietyxclip
,bsdmainutils
jeśli nie są zainstalowane). Czy możesz także publikować wyniki różnych przeglądarek w wynikach mojego pliku PDF? Narzędzie takie jak schowek pomaga, IIRC pokazuje również hex.