cancel
Showing results for 
Search instead for 
Did you mean: 

Alfresco Developer Guide, PdfBoxMetadataExtracter problem

col_edinburgh
Champ in-the-making
Champ in-the-making
I am following the guide in the book Alfresco Developer Guide but have encountered a something I don't understand.

In chapter 4, Digging into the developer class the book refers to
org.alfresco.repo.content.metadata.PdfBoxMetadataExtracter class

and describe the code below:
PDDocumentInformation docInfo = pdf.getDocumentInformation(); putRawValue(KEY_AUTHOR, docInfo.getAuthor(), rawProperties); putRawValue(KEY_TITLE, docInfo.getTitle(), rawProperties); putRawValue(KEY_SUBJECT, docInfo.getSubject(), rawProperties); Calendar created = docInfo.getCreationDate(); if (created != null) { putRawValue(KEY_CREATED, created.getTime(), rawProperties); }

The problem is i looked in the code in:
SDK AlfrescoEmbedded/source/alfresco-repository-3.4.d.jar/org.alfresco.repo.content.metadata.PdfBoxMetadataExtracter class


which contains the following code:
* Copyright (C) 2005 Jesper Steen M√∏ller
*
* This file is part of Alfresco
*
* Alfresco is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Alfresco is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
package org.alfresco.repo.content.metadata;

import java.util.ArrayList;

import org.alfresco.repo.content.MimetypeMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.tika.parser.Parser;
import org.apache.tika.parser.pdf.PDFParser;

/**
* Metadata extractor for the PDF documents.
* <pre>
*   <b>author:</b>                 –      cm:author
*   <b>title:</b>                  –      cm:title
*   <b>subject:</b>                –      cm:description
*   <b>created:</b>                –      cm:created
*   <b>(custom metadata):</b>      –
* </pre>
*
* Uses Apache Tika
*
* @author Jesper Steen M√∏ller
* @author Derek Hulley
*/
public class PdfBoxMetadataExtracter extends TikaPoweredMetadataExtracter
{
    protected static Log pdfLogger = LogFactory.getLog(PdfBoxMetadataExtracter.class);

    public static ArrayList<String> SUPPORTED_MIMETYPES = buildSupportedMimetypes(
             new String[] { MimetypeMap.MIMETYPE_PDF },
             new PDFParser()
    );

    public PdfBoxMetadataExtracter()
    {
        super(SUPPORTED_MIMETYPES);
    }
   
    @Override
    protected Parser getParser() {
       return new PDFParser();
    }
}

I'm puzzled as I was expeting to see the code: DDocumentInformation docInfo = pdf.g …
3 REPLIES 3

mrogers
Star Contributor
Star Contributor
Since that example was written, it looks like the "old" PDFBox metadata extractor has been replaced with a Apache Tika based extractor.
However, from the few lines you have given, it still looks like a good example, even though it does not match the current code.

col_edinburgh
Champ in-the-making
Champ in-the-making
i'm now totally lost.

Using the examples in the Developer guide, I have imported into Eclipse the code from
http://www.packtpub.com/files/code/3117_Code.zip

run Ant Build on the code from Chapter 2 example and copied to Alfresco and its works.
run Ant Build on the code from Chapter 3 example and copied to Alfresco and its works.
run Ant Build on the code from Chapter 4 example and copied to Alfresco and it fails - http 404

one step forward and two back.

col_edinburgh
Champ in-the-making
Champ in-the-making
Since that example was written, it looks like the "old" PDFBox metadata extractor has been replaced with a Apache Tika based extractor.

Thanks, back to thew drawing board