Namazu-win32-users-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: PDF 検索結果の著者表示



 From: knok@xxxxxxxxxxxxx
 Subject: [namazu-win32-users-ja] Re: PDF 検索結果の著者表示
 Date: Wed, 12 Jun 2002 18:55:40 JST

 > >> PDFの検索結果において、次のような表示(著者: 不明)になります。
 > >> 著者名を表示させるには、どのような設定をすればよいのかご教授ください。
 >   xpdf (pdftotext) を利用したフィルタでは著者の情報を取得しない(できな
 > い?)ので、それは仕様ということになります。

xpdf に付属の pdfinfo を使って、PDFファイルの DOCINFO 中の /Title 
と /Author をひっかけるように試しにいじってみました。以下につけて
おきます。

ただ、DOCINFO をちゃんと付けてるPDFはそんなに多くない気もするので、
どれほど効果があるものなのか... LaTeX から dvipdfm とかで生成する
場合には、

  special{pdf: docinfo <<
     /Title (sample document)
     /Author (Hajime BABA) >>}

とかしてやれば付けられますが、ふつうはやらないでしょうし。

まあ、「やらないよりはマシ」といった程度かとおもいますが、あって困
るものでもなさそうなので、問題なければcommitしておきます。
--
馬場  肇 ( Hajime BABA )                  E-mail: baba@xxxxxxxxxxxxxxxx
宇宙科学研究所 宇宙科学企画情報解析センター
--


--- pdf.pl.orig	Tue Jul  9 21:52:57 2002
+++ pdf.pl	Sun Jul 21 14:20:31 2002
@@ -28,6 +28,7 @@
 require 'util.pl';
 require 'gfilter.pl';
 
+my $pdfinfopath = undef;
 my $pdfconvpath = undef;
 my $pdfconvver = 0;
 my $pdfconvarg = '';
@@ -37,6 +38,7 @@
 }
 
 sub status() {
+    $pdfinfopath = util::checkcmd('pdfinfo');
     $pdfconvpath = util::checkcmd('pdftotext');
     if (defined $pdfconvpath) {
 	my $ret = `$pdfconvpath 2>&1`;
@@ -109,6 +111,24 @@
 	unless $fields->{'title'};
     gfilter::show_filter_debug_info($cont, $weighted_str,
 			   $fields, $headings);
+
+    if (defined $pdfinfopath) {
+	my $tmpfile3 = util::tmpnam('NMZ.pdf3');
+	system("$pdfinfopath $cfile > $tmpfile3");
+	my $fh = util::efopen("< $tmpfile3");
+	$$cont = util::readfile($fh);
+	undef $fh;
+	if ($$cont =~ /Title: (.*)/) { # or /Subject: (.*)/
+	    my $tmp = $1;
+	    $fields->{'title'} = $tmp;
+	}
+	if ($$cont =~ /Author: (.*)/) {
+	    my $tmp = $1;
+	    $fields->{'author'} = $tmp;
+	}
+	unlink($tmpfile3);
+    }
+
     return undef;
 }