Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mac の preview や acrobat で PDF ファイルを開くとエラーダイアログが出たり、クラッシュしたりすることがある #56

Open
spinute opened this issue Jul 29, 2018 · 7 comments

Comments

@spinute
Copy link
Owner

spinute commented Jul 29, 2018

Java 版で報告を受けましたが、自分の環境で試してみたところ C++ 版にも同様の問題があるようです。

今のところ Ubuntu や Windows では、再現していないようです。

もし、同様の症状が出ている方や、直し方のわかる方がいれば教えてください。

@icm7216
Copy link

icm7216 commented Aug 15, 2018

私の環境(Windows10)では、Acrobat Reader DC で開くと「文章を読み取り中に問題が発生しました(135)。」のメッセージが表示され、表示できないページも見受けられます。例えば ods-cpp.pdf の24ページから61ページは表示されません。
acrobat01

また、同じファイルを TeXworks で確認すると、表示できるものの図中の日本語部分が空白になっています。
texworks pmg

SumatraPDF では問題なく表示できているようです。
smatrapdf

そこで、ローカルにコンパイル環境を用意して IPAex フォントを埋め込んでみたところ、
Acrobat Reader DC やTeXworks でも正常に表示できるようになりました。
acrobat02

埋め込みフォントが原因では? と思われますが如何でしょうか。

@spinute
Copy link
Owner Author

spinute commented Aug 16, 2018

@icm7216

Windows での再現調査と修正方法案をお知らせいただき、ありがとうございます。

Mac OSX でも、Acrobat Reader DC で開いたときはお知らせいただいたものと同じエラーダイアログが表示されます。Preview で開くと、Texworks で開いた場合のように図中の日本語部分が空白になります。

埋め込みフォントが実際の原因かどうかまだ自分では判断はついていませんが、https://texwiki.texjp.org/?PDF%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9#v9136148 などを見ても、基本的にはフォントを埋め込んだ方が良さそうですね。特に、問題が発生しなくなるようでしたらぜひ採用したいです。

もし、フォントを埋め込むように修正したソースコードをお持ちでしたら、Pull Request を作成していただくことはできますでしょうか?

@icm7216
Copy link

icm7216 commented Aug 16, 2018

@spinute さん、今回の再現調査ではフォント埋め込みのためのソースコードへの修正は行っておりません。フォントの埋め込みは TeX 環境側での指定となっています。 また、ソースコードに対して行った内容は、コンパイルをエラーを無くすための幾つかのファイルのコピーペーストに留まっています。

TeX 環境によっての違いもあるのかと思われますので、参考として再現調査に使用した環境の作成手順を以下に示します。少し長くなりますがご容赦ください。


Open Data Structures 日本語版pdfの作成手順

作業環境

  • Host OS: Windows 10 64bit
  • VirtualBox 5.2.16
    • Guest OS: Ubuntu 18.04 LTS 64bit
    • TeXLive2017

作業環境の準備

VirtualBoxにUbuntu Desktop環境を作成

Ubuntu 18.04 LTSのISOイメージを取得してインストール

VirtualBox Guest Additionsをインストール

依存パッケージをインストール

$ sudo apt install build-essential
  1. Guest AdditionsのCDイメージを挿入して実行
  2. Guest AdditionsのCDイメージを取り出し
  3. Ubuntuを再起動

UbuntuにTeX Liveをインストール

ftp://tug.org/historicから TeXLive 2017 のISOイメージを取得

  • ftp://tug.org/historic/systems/texlive/2017/

今回は、Host側(Windows10)にダウンロードしておいたISOイメージを使用しました。

GUIメニューでISOファイルをマウント後 TeX Live2017をインストール

$ cd /media/$USER/TeXLive2017
$ sudo ./install-tl

... (snip) ...

Actions:
 <I> start installation to hard disk
 <P> save installation profile to 'texlive.profile' and exit
 <H> help
 <Q> quit

Enter command: I

パスを通す

$ echo 'export PATH="/usr/local/texlive/2017/bin/x86_64-linux:$PATH"' >> ~/.bashrc
$ source ~/.bashrc

インストール完了確認

$ $ tex --version
TeX 3.14159265 (TeX Live 2017)
kpathsea version 6.2.3
Copyright 2017 D.E. Knuth.
There is NO warranty.  Redistribution of this software is
covered by the terms of both the TeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the TeX source.
Primary author of TeX: D.E. Knuth.

コンパイル環境の準備

ここからが本題です。 Open Data Structures 日本語版のTeXソースからpdfを作成します。

依存パッケージをインストール

$ sudo apt install ipe inkscape gnuplot git lua5.1 default-jdk libcanberra-gtk-module 

IPAフォントをインストール

$ sudo apt install fonts-ipafont fonts-ipaexfont
$ fc-cache -fv

pdftkはsnap版を入れます(Ubuntu 18.04のパッケージから削除されたそうです。*1

sudo snap install pdftk

Open Data Structuresのソースを取得

$ cd ~
$ git clone https://github.com/spinute/ods.git
$ cd ods

現在のブランチを確認(作業対象はjaブランチです)

$ git branch -a
* ja
  remotes/origin/HEAD -> origin/ja
  remotes/origin/advanced
  remotes/origin/aupress
  remotes/origin/courseware
  remotes/origin/gh-pages
  remotes/origin/ja
  remotes/origin/master
  remotes/origin/nicehtml

コンパイルに欠如しているファイルの調整

本文内の図のコンパイル時にods-colors.styを見失っているようなので、ローカルの texmf にコピーします。

$ mkdir -p ~/texmf/tex/latex/ods
$ cp ja/ods-colors.sty ~/texmf/tex/latex/ods/
$ sudo mktexlsr

ja/images/に不足しているファイルをlatex/images/からコピーします。

$ cp ~/ods/latex/images/tree3-thick.svg ~/ods/ja/images/
$ cp ~/ods/latex/images/cc-by.pdf ~/ods/ja/images/
$ cp ~/ods/latex/figs/makeepss ~/ods/ja/figs/

gnuplot と Tikz が連携するために必要なファイルのシンボリックリンクを~/texmfに作成します。

$ cd ~/texmf/tex/latex
$ ln -s /usr/share/texmf/tex/latex/gnuplot ~/texmf/tex/latex/gnuplot
$ sudo mktexlsr

埋め込みフォントの指定

埋め込みフォントの CURRENT が ipaex になっていることを確認します。

$ kanji-config-updmap-user status
CURRENT family for ja: ipaex
Standby family : ipa

CURRENT が ipaex でない場合はIPAexに設定します。

$ kanji-config-updmap-user ipaex

コンパイル

~/ods/jaディレクトリでコンパイルを行います。

cd ~/ods/ja
make clean
make

コンパイルに成功すると、IPAex フォントが埋め込まれた日本語訳版のpdfが~/ods/jaに生成されます。

参考

@yabuki
Copy link

yabuki commented Jan 18, 2019

texlive 2019 (texlive 2018 以降は、default encode が utf8 になったバージョンなのです。) platex から、uplatex に LaTeX の Engine を変更して、IPAex font の組み込んだpdfの生成に成功しました。手元の android tablet の perfect viewer でちゃんと見えるのを確認しました。

変更理由

uplatexに変更した理由は、「高」という字が、platex 2019では、エラーになったからです。

実施方法

Debian GNU/Linux buster で、texlive を extra を含めて一式をインストールします。(私はいろいろ知らないので、ipetoipe や upbibtex 関係のマクロを後から追加導入しました。)

kanji-config-updmap を指定します。

本スレッドのissueに書いてある情報を土台にして、engineだけ切り替えています。

https://github.com/yabuki/ods

に差分を置いてあります。

環境

Debian GNU/Linux buster --- texliveのパッケージは、extraも含めて必要でした。

yabuki@Odayla:~/scm/git/ods/ja$ uplatex --version
e-upTeX 3.14159265-p3.8.1-u1.23-180901-2.6 (utf8.uptex) (TeX Live 2019/dev/Debian)
kpathsea version 6.3.1/dev
ptexenc version 1.3.7/dev
Copyright 2018 D.E. Knuth.
There is NO warranty. Redistribution of this software is
covered by the terms of both the e-upTeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the e-upTeX source.
Primary author of e-upTeX: Peter Breitenlohner.

yabuki@Odayla:~$ dpkg -l texlive* | grep -e '^ii' 
ii  texlive                       2018.20181214-1       all          TeX Live: A decent selection of the TeX Live packages
ii  texlive-base                  2018.20181214-1       all          TeX Live: Essential programs and files
ii  texlive-bibtex-extra          2018.20181214-1       all          TeX Live: BibTeX additional styles
ii  texlive-binaries              2018.20181218.49446-1 amd64        Binaries for TeX Live
ii  texlive-font-utils            2018.20181214-1       all          TeX Live: Graphics and font utilities
ii  texlive-fonts-extra           2018.20181214-1       all          TeX Live: Additional fonts
ii  texlive-fonts-extra-links     2018.20181214-1       all          TeX Live:
ii  texlive-fonts-recommended     2018.20181214-1       all          TeX Live: Recommended fonts
ii  texlive-lang-chinese          2018.20181214-1       all          TeX Live: Chinese
ii  texlive-lang-cjk              2018.20181214-1       all          TeX Live: Chinese/Japanese/Korean (base)
ii  texlive-lang-japanese         2018.20181214-1       all          TeX Live: Japanese
ii  texlive-lang-korean           2018.20181214-1       all          TeX Live: Korean
ii  texlive-lang-other            2018.20181214-1       all          TeX Live: Other languages
ii  texlive-latex-base            2018.20181214-1       all          TeX Live: LaTeX fundamental packages
ii  texlive-latex-extra           2018.20181214-1       all          TeX Live: LaTeX additional packages
ii  texlive-latex-recommended     2018.20181214-1       all          TeX Live: LaTeX recommended packages
ii  texlive-luatex                2018.20181214-1       all          TeX Live: LuaTeX packages
ii  texlive-pictures              2018.20181214-1       all          TeX Live: Graphics, pictures, diagrams
ii  texlive-plain-generic         2018.20181214-1       all          TeX Live: Plain (La)TeX packages
yabuki@Odayla:~$ dpkg -l ipe | grep -e '^ii' 
ii  ipe            7.2.7-3      amd64        drawing editor for creating figures in PDF or PS formats
yabuki@Odayla:~$ dpkg -l pdftk | grep -e '^ii' 
ii  pdftk          2.02-5       amd64        transitional package for pdftk, a tool for manipulating PDF documents
yabuki@Odayla:~$ dpkg -l pdftk-java | grep -e '^ii' 
ii  pdftk-java     3.0.2-1      all          pdftk port to java - a tool for manipulating PDF documents

pdftkの実体は、pdftk-javaに移行した。(なので、transitional packageになっている)

他にも本スレッドで言及されているパッケージはインストールしているが、上記は ubuntu と Debian buster では状況が違うので言及した。次にでる ubuntu であれば、Debian buster とも同じ時期のsidからのforkから開発されるので、似たような手順でいけると思う。

html生成

Makefile に書いてあるhtml生成ですが、生成テストしたら、images.pdfがないといってIO Errorになってしまいます。imageディレクトリを含めて、Makefile を見ましたが良くわかりませんでした。pdf生成できたら、html生成は out of scope でいい感じでしょうか? 必要であれば、別issue建てます。

@spinute
Copy link
Owner Author

spinute commented Jan 18, 2019

@yabuki さん、 @icm7216 さん

エラーの修正方法やコンパイル情報、texlive の更新情報など、色々教えていただきましてありがとうございます!

今やっている出版後に届いたフィードバックを原稿に反映する作業が終わり次第、最新のものをビルドしてウェブサイトに置き直すので、その際に参考にさせて頂く予定です。

HTML 生成は、本家(英語版)では動いていたようですが、日本語版ではまだ成功したことがないです...。もし HTML ファイルが上手く生成できるなら便利だとは思ったので、色々触ってみたり latex2html 以外のソフトも試してみたりしたのですが、簡単には HTML ファイルを作れませんでした。

@spinute
Copy link
Owner Author

spinute commented Jan 18, 2019

@icm7216 さん

#56 (comment) は、今ある中で一番丁寧に書かれているビルド手順だと思います。
README からコメントにリンクを貼る、または wiki にビルド手順として移してもよろしいでしょうか?

@icm7216
Copy link

icm7216 commented Jan 19, 2019

@spinute さん、ありがとうございます。
#56 (comment)のビルド手順の記述の件ですが、ご自由にお使いください。

役立つかわかりませんが、他のフォントの埋め込み手順などのメモもございます。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants