[fess-user 419] Re: パスワード付きPDFのインデクシングについて

Back to archive index

Yoshimasa Iwase iwase****@gmail*****
2011年 1月 8日 (土) 15:17:18 JST


岩瀬です。お世話になっております。

菅谷様にご教授いただいた方法で、
試験環境で再試行してみたところ、
無事、パス付きPDFを検索できるようになりました。

度重なるアドバイス、どうもありがとうございました。
何かあればフィードバックさせていただきたいと考えますので、
また何かあれば、よろしくお願い致します。

2011/1/8 Shinsuke Sugaya <shins****@yahoo*****>:
> 菅谷です.
>
> 確認してみました.
> すいません,Tika がダメみたいです.
> (Tika がパスワードを渡せていない)
> なので,TikaExtractor ではダメなので
> PdfExtractor なら大丈夫だと思います.
>
> まず,s2robot_extractor.dicon を以下のように
> します.ここでは,test_pass.pdf のような
> PDF ファイルに pass というパスワードが
> 設定されている感じを想定してます.
>
> @@ -8,7 +8,12 @@
>        <component name="msPowerPointExtractor"
> class="org.seasar.robot.extractor.impl.MsPowerPointExtractor"/>
>        <component name="msPublisherExtractor"
> class="org.seasar.robot.extractor.impl.MsPublisherExtractor"/>
>        <component name="msVisioExtractor"
> class="org.seasar.robot.extractor.impl.MsVisioExtractor"/>
> -       <component name="pdfExtractor"
> class="org.seasar.robot.extractor.impl.PdfExtractor"/>
> +       <component name="pdfExtractor"
> class="org.seasar.robot.extractor.impl.PdfExtractor">
> +<initMethod name="addPassword">
> +<arg>".*test_.*.pdf"</arg>
> +<arg>"pass"</arg>
> +</initMethod>
> +       </component>
>        <component name="textExtractor"
> class="org.seasar.robot.extractor.impl.TextExtractor"/>
>        <component name="htmlExtractor"
> class="org.seasar.robot.extractor.impl.HtmlExtractor"/>
>        <component name="xmlExtractor"
> class="org.seasar.robot.extractor.impl.XmlExtractor"/>
> @@ -38,6 +43,12 @@
>                </initMethod>
>                <initMethod name="addExtractor">
>                        <arg>{
> +"application/pdf"
> +                       }</arg>
> +                       <arg>pdfExtractor</arg>
> +               </initMethod>
> +               <initMethod name="addExtractor">
> +                       <arg>{
>  "image/svg+xml",
>  "application/x-tika-msoffice",
>  "application/vnd.visio",
> @@ -64,7 +75,6 @@
>  "application/vnd.ms-word.template.macroenabled.12",
>  "application/x-asp",
>  "application/rtf",
> -"application/pdf",
>  "text/plain",
>  "application/vnd.sun.xml.writer",
>  "application/vnd.oasis.opendocument.text",
>
> 次に s2robot_rule.dicon のようにします.
> (fsFileRuleにapplication/pdfを加える)
>
> @@ -97,6 +97,7 @@
>   "(application/xml"
>  + "|application/xhtml+xml"
>  + "|application/rdf+xml"
> ++ "|application/pdf"
>  + "|text/xml"
>  + "|text/xml-external-parsed-entity"
>  + "|text/html)"
>
> 上記で閲覧権限のパスワードが設定された
> PDF は読むことがでできました.
> よろしくお願いします.
>
> shinsuke
>
>
> 2011年1月7日19:38 Yoshimasa Iwase <iwase****@gmail*****>:
>> 岩瀬です。お世話になっております。
>>
>> パス付きPDFのインデクシングを、色々と試しているのですが、
>> まだ実現できておりません。
>>
>> 以下に実際に試した環境、手順、結果(ログ含)を記載しますので、
>> 何か修正する点があれば、ご教授いただけますでしょうか。
>>
>> <環境>
>> OS:Windows XP Pro SP3
>> Fess:4.0.0
>>
>> <手順>
>> 0. パスワード付きPDFを用意&配置。
>>  (今回は、[pdf password sample]で、検索エンジン上位に
>> 表示されるサイトのパス付きPDFサンプルをDLして利用しております)
>>
>> 1. s2robot_extractor.diconの抽出。
>> \fess-server-4.0.0\webapps\fess\WEB-INF\lib
>> にある、「s2-robot-0.5.0.jar」を解凍して、
>> 「s2robot_extractor.dicon」をコピーして、
>> \fess-server-4.0.0\webapps\fess\WEB-INF\classes
>> へ貼りつけする。
>>
>> 2. s2robot_extractor.diconのtikaExtractor部を修正。
>> (実際に利用したものを添付いたします)
>>
>> 3. クロールを開始する。
>>
>>
>> <結果>
>> ・正常にインデクシングされておらず、検索にヒットしない。
>> ・該当部分のクロールログは以下の通り。
>>
>> [Robot-20110107130722-1-3] WARN
>> org.seasar.robot.helper.impl.LogHelperImpl - Crawling Access Exception
>> at file:////(..省略..)/XXXX.pdf
>> org.seasar.robot.RobotCrawlAccessException: Could not get a text from
>> file:////(..省略..)/XXXX.pdf
>>       at jp.sf.fess.transformer.AbstractFessFileTransformer.transform(AbstractFessFileTransformer.java:113)
>>       at org.seasar.robot.processor.impl.DefaultResponseProcessor.process(DefaultResponseProcessor.java:72)
>>       at org.seasar.robot.S2RobotThread.processResponse(S2RobotThread.java:341)
>>       at org.seasar.robot.S2RobotThread.run(S2RobotThread.java:180)
>>       at java.lang.Thread.run(Thread.java:619)
>> Caused by: org.seasar.robot.extractor.ExtractException: Could not
>> extract a content.
>>       at org.seasar.robot.extractor.impl.TikaExtractor.getText(TikaExtractor.java:250)
>>       at jp.sf.fess.transformer.AbstractFessFileTransformer.transform(AbstractFessFileTransformer.java:96)
>>       ... 4 more
>> Caused by: org.apache.tika.exception.TikaException: Unable to extract
>> PDF content
>>       at org.apache.tika.parser.pdf.PDF2XHTML.process(PDF2XHTML.java:58)
>>       at org.apache.tika.parser.pdf.PDFParser.parse(PDFParser.java:90)
>>       at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:197)
>>       at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:197)
>>       at org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:137)
>>       at org.seasar.robot.extractor.impl.TikaExtractor.getText(TikaExtractor.java:136)
>>       ... 5 more
>> Caused by: org.apache.pdfbox.exceptions.WrappedIOException: Error
>> decrypting document, details:
>>       at org.apache.pdfbox.util.PDFTextStripper.writeText(PDFTextStripper.java:313)
>>       at org.apache.pdfbox.util.PDFTextStripper.getText(PDFTextStripper.java:241)
>>       at org.apache.tika.parser.pdf.PDF2XHTML.process(PDF2XHTML.java:53)
>>       ... 10 more
>> Caused by: org.apache.pdfbox.exceptions.CryptographyException: Error:
>> The supplied password does not match either the owner or user password
>> in the document.
>>       at org.apache.pdfbox.pdmodel.encryption.StandardSecurityHandler.decryptDocument(StandardSecurityHandler.java:231)
>>       at org.apache.pdfbox.pdmodel.PDDocument.openProtection(PDDocument.java:1088)
>>       at org.apache.pdfbox.pdmodel.PDDocument.decrypt(PDDocument.java:591)
>>       at org.apache.pdfbox.util.PDFTextStripper.writeText(PDFTextStripper.java:309)
>>       ... 12 more
>>
>> 上記のログ下段に、
>>
>>> The supplied password does not match either the owner or user password in the document.
>>
>> とありますが、「s2robot_extractor.dicon」には、
>> 正しいパスワードを書いております。
>> (該当パスで、実際にAdobe Reader等ではファイルオープン可能)
>>
>> したがって、パスワードに誤りはないと思いますので、
>> 正常動作しない要因は以下のような可能性があるかと考えております。
>> ・PDFBox自体にバグあり?
>> ・PDFBoxまでPWが正常に受け渡しされていない?
>>
>>
>>
>> 再度のお願いとなりますが、何かこちらで対処できる方法があれば、
>> ご教授いただければと思います。
>>
>> 以上、恐れ入りますが、よろしくお願いいたします。
>>
>>
>> 2010/12/9 Shinsuke Sugaya <shins****@yahoo*****>:
>>> 菅谷です。
>>>
>>> S2Robotのサイトが紛らわしいのが悪いのですが、
>>> 以下より最新 (0.5.0) の jar をご利用ください。
>>> 0.1.0 は古いため、差し替えると動かなくなると
>>> 思います。
>>>
>>> https://www.seasar.org/maven/maven2/org/seasar/robot/s2-robot/
>>>
>>> よろしくお願いいたします。
>>>
>>> shinsuke
>>>
>>>
>>> 2010年12月9日1:29 Yoshimasa Iwase <iwase****@gmail*****>:
>>>> 岩瀬です。お世話になっております。
>>>>
>>>> 先日、パス付きPDFのインデクシング方法をご教授いただきましたので、
>>>> 実際に試させていただきましたが、現状実現できておりません。
>>>>
>>>> 現状実施したこととしては、
>>>> 1. s2robot公式より、「s2-robot-0.1.0-src.zip」をDLし「s2robot_extractor.dicon」を抽出
>>>> 2. Fessのwebapps\fess\WEB-INF\classes に配置
>>>> 3. 以下の設定をtikaの設定部分に記述
>>>>
>>>> <component name="tikaExtractor"
>>>> class="org.seasar.robot.extractor.impl.TikaExtractor">
>>>>  <initMethod name="addPdfPassword">
>>>>  <arg>"*.pdf"</arg>
>>>>  <arg>"password"</arg>
>>>>  </initMethod>
>>>> </component>
>>>>
>>>> ですが、2終了の時点でクロールを実施すると、クロールが正常に動作していないようです。
>>>> 何か他ファイルに参照を追記する必要がございますでしょうか?
>>>> それとも、そもそもs2robot_extractorはそのまま使えないのでしょうか?
>>>> 他に必要な処理があるのであれば、恐れ入りますがご教授いただければ幸いです。
>>>>
>>>> 2010/11/6 Yoshimasa Iwase <iwase****@gmail*****>:
>>>>> 岩瀬です。
>>>>>
>>>>> どうもありがとうございました。
>>>>> 早速、実運用で試させていただきます!
>>>>>
>>>>> 2010/11/5 Shinsuke Sugaya <shins****@yahoo*****>:
>>>>>> 菅谷です。
>>>>>>
>>>>>>> 以下のようになると考えてよいでしょうか?
>>>>>>
>>>>>> はい。
>>>>>>
>>>>>>> それとも、"*.pdf"のようにワイルドカードが利用可能でしょうか?
>>>>>>
>>>>>> Java の正規表現で指定できるようにしました。
>>>>>>
>>>>>> shinsuke
>>>>>>
>>>>>>
>>>>>> 2010年11月4日23:21 Yoshimasa Iwase <iwase****@gmail*****>:
>>>>>>> 岩瀬です。
>>>>>>> 迅速な回答ありがとうございました。
>>>>>>>
>>>>>>> Passwordが同じ複数のファイルを対象とする場合は、
>>>>>>> 以下のようになると考えてよいでしょうか?
>>>>>>>
>>>>>>> <component name="tikaExtractor"
>>>>>>> class="org.seasar.robot.extractor.impl.TikaExtractor">
>>>>>>>  <initMethod name="addPdfPassword">
>>>>>>>   <arg>"hoge.pdf"</arg>
>>>>>>>   <arg>"password"</arg>
>>>>>>>  </initMethod>
>>>>>>>  <initMethod name="addPdfPassword">
>>>>>>>   <arg>"foobar.pdf"</arg>
>>>>>>>   <arg>"password"</arg>
>>>>>>>  </initMethod>
>>>>>>> </component>
>>>>>>>
>>>>>>> それとも、"*.pdf"のようにワイルドカードが利用可能でしょうか?
>>>>>>> 連続してご質問して申し訳御座いませんが、回答いただければ幸いです。
>>>>>>>
>>>>>>> --
>>>>>>> Yoshimasa IWASE
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Fess-user mailing list
>>>>>>> Fess-****@lists*****
>>>>>>> http://lists.sourceforge.jp/mailman/listinfo/fess-user
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Fess-user mailing list
>>>>>> Fess-****@lists*****
>>>>>> http://lists.sourceforge.jp/mailman/listinfo/fess-user
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Yoshimasa IWASE
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Yoshimasa IWASE
>>>>
>>>> _______________________________________________
>>>> Fess-user mailing list
>>>> Fess-****@lists*****
>>>> http://lists.sourceforge.jp/mailman/listinfo/fess-user
>>>>
>>>
>>> _______________________________________________
>>> Fess-user mailing list
>>> Fess-****@lists*****
>>> http://lists.sourceforge.jp/mailman/listinfo/fess-user
>>>
>>
>>
>>
>> --
>> Yoshimasa IWASE
>>
>> _______________________________________________
>> Fess-user mailing list
>> Fess-****@lists*****
>> http://lists.sourceforge.jp/mailman/listinfo/fess-user
>>
>>
>
> _______________________________________________
> Fess-user mailing list
> Fess-****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/fess-user
>



-- 
Yoshimasa IWASE




Fess-user メーリングリストの案内
Back to archive index