package name.abuchen.portfolio.ui.handlers;
import java.io.File;
import java.io.IOException;
import javax.inject.Named;
import name.abuchen.portfolio.ui.Messages;
import name.abuchen.portfolio.ui.PortfolioPlugin;
import name.abuchen.portfolio.ui.dialogs.DisplayTextDialog;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.util.PDFTextStripper;
import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.e4.ui.services.IServiceConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;
public class CreateTextFromPDFHandler
{
@Execute
public void execute(@Named(IServiceConstants.ACTIVE_PART) MPart part,
@Named(IServiceConstants.ACTIVE_SHELL) Shell shell) throws IOException
{
// open file dialog to pick pdf files
FileDialog fileDialog = new FileDialog(shell, SWT.OPEN | SWT.SINGLE);
fileDialog.setText(Messages.PDFImportDebugTextExtraction);
fileDialog.setFilterNames(new String[] { Messages.PDFImportFilterName });
fileDialog.setFilterExtensions(new String[] { "*.pdf" }); //$NON-NLS-1$
fileDialog.open();
String fileName = fileDialog.getFileName();
if (fileName == null || fileName.isEmpty())
return;
File file = new File(fileDialog.getFilterPath(), fileName);
try (PDDocument doc = PDDocument.load(file))
{
PDFTextStripper textStripper = new PDFTextStripper();
textStripper.setSortByPosition(true);
String text = textStripper.getText(doc);
new DisplayTextDialog(shell, text).open();
}
catch (IOException e)
{
PortfolioPlugin.log(e);
MessageDialog.openError(shell, Messages.LabelError, e.getMessage());
}
}
}