vine-users ML アーカイブ



[vine-users:072714] Re: Adobe Reader 7.0.1 forLinuxの挙動不審?

  • From: Eitetsu Oomoto <oomoto@xxxxxxxxxxxxxxxxxx>
  • Subject: [vine-users:072714] Re: Adobe Reader 7.0.1 forLinuxの挙動不審?
  • Date: Tue, 23 Aug 2005 18:32:52 +0900
京都産業大学の大本です.

At 4:05 PM +0900 05.8.23, SAKAI Takakazu wrote:
 > その2:pdf -> psのフィルタとして使おうとすると,生成されるPSファイル
 の末尾が途切れる.
	cat test.pdf | acroread -toPostScript > foo.ps
 を実行すると,foo.psの末尾が途切れていて正常にプリントできない.
 しかし,謎なことに,
	cat test.pdf | acroread -toPostScript
 を実行すると,端末画面には
 などと表示されて末尾まで出力されている(scriptコマンドの画面記録で確認済).
 #リダイレクトすると途切れるというのがなんとも....

Vine、FedoraCore 共に上と同じ動作でしたが、出力されたファイル (foo.ps) の
サイズが少々違っていました (謎)。

もう少しだけ追いかけてみました.
straceしまして,PSデータを出力しているはずのwrite()のところだけgrepし て抜き出してみました.

リダイレクトした場合:
write(1, "%!PS-Adobe-3.0\n%%Title: (\\376\\37"..., 4096) = 4096
write(1, "          yflag \n          {\n   "..., 24576) = 24576
write(1, "2 dict\n\t\t\t\t\t\t\tbegin\n\t\t\t\t\t\t\tbegin"..., 4096) = 4096
write(1, "ix def\n      /ct_PSBuildGlyph /c"..., 4096) = 4096
write(1, "l Language Levels.\n/cm { matrix "..., 8192) = 8192
write(1, "d\n{\n0 getrampcolor\ncx cy radius "..., 4096) = 4096
write(1, "s Incorporated. All Rights Reser"..., 4096) = 4096
write(1, "4/cA5/cA6/cA7/cA8/cA9/cAA\n/cAB/c"..., 20480) = 20480
write(1, "710 363 710 c\n216 710 125 620 10"..., 4096) = 4096
write(1, "otedblleft/quotedblright/quotele"..., 4096) = 4096
write(1, "ansDBBox\n{\nDurx Dury transform m"..., 4096) = 4096
write(1, "d 4 -1 roll exch\nget 4 -1 roll 3"..., 4096) = 4096
write(1, "if\rdup dup 1 sub 3 index exch ge"..., 24576) = 24576
write(1, "810e23784b2fb32a80a3f81936161cbf"..., 4096) = 4096
write(1, "416876f3534d7b975224d815a4012d42"..., 28672) = 28672

リダイレクトしない場合:
write(1, "%!PS-Adobe-3.0\n", 15)        = 15
write(1, "%%Title: (\\376\\377[fO\\032\\377\\b{"..., 53) = 53
write(1, "%%Version: 1 4\n", 15)        = 15
write(1, "%%CreationDate: 14\273\37620\312\25420\311\303 200"..., 44) = 44
write(1, "%%For: (\\376\\377N\\213R\\331\\200wT"..., 38) = 38
write(1, "%%DocumentData: Clean7Bit\n", 26) = 26
write(1, "%%LanguageLevel: 2\n", 19)    = 19
write(1, "%%BoundingBox: 0 0 595 842\n", 27) = 27
write(1, "%%HiResBoundingBox: 0.0 0.0 595."..., 40) = 40
write(1, "%%Pages: 1\n", 11)            = 11
write(1, "%%DocumentProcessColors: (atend)"..., 33) = 33
write(1, "%%DocumentSuppliedResources: (at"..., 37) = 37
write(1, "%%EndComments\n", 14)         = 14
write(1, "%%BeginDefaults\n", 16)       = 16
write(1, "%%EndDefaults\n", 14)         = 14

リダイレクトしない場合は,「一行ずつ吐き出す」のに対して,リダイレクト した場合は,4KBとか8KBとか24KBといった大きなブロック単位で書き出してる ようです. I/O性能を上げるためだと思いますが,mmap2()とか使ってるので,これも何か 関係あるかもしれません.さらに,fork()が度々呼ばれてたりもしてまして, 一体どんな作りになってるのだか.

私の手には負えそうにないので,この件はあっさり諦めて,PDF -> PSフィル タ(CUPS設定用)にはVine3.1標準の/usr/bin/pdftopsを使うことにしました. Adobe ReaderにPDF文書を読ませてX画面に出してGUI操作でプリントすれば, ちゃんと印刷される(さらに謎だ)ので,まず困らないし....

#でもAdobe Readerで印刷したほうが,フォントがかなり美しい.
--
京都産業大学 工学部情報通信工学科  大本 英徹
E-mail: oomoto@xxxxxxxxxxxxxxxxxx    Tel: 075-705-1904 (Dial In)
(*^.^*) (*^_^*) (*^o^*) (*^.^*)   Fax: 075-705-1914