JabRef
v4
v4
  • JabRef Bibliography Management
  • General information about JabRef
    • Entry Editor
    • Best Practices
    • Command line use and options
    • Automatic Backup (.sav and .bak) and Autosave
    • Remote operation
    • Installation
  • About BibTeX and its fields
    • URL and DOI links in JabRef
    • File links in JabRef
    • Links to other entries
    • The 'owner' field
    • Time stamped fileds
    • Journal abbreviations
    • Special Fields
    • Set/clear/rename fields
    • Field content selector
    • Strings
  • Finding, Sorting, and Cleaning Entries
    • Searching within the library
    • Searching externally using Online Services
      • ACM Portal
      • arXiv
      • CiteSeerX
      • DBLP
      • DOAJ
      • Google Scholar
      • GVK
      • IEEEXplore
      • INSPIRE-HEP
      • MathSciNet
      • MEDLINE
      • SAO/NASA Astrophysics Data System
      • Springer
      • Unpaywall
      • zbMATH
    • Searching externally using Publication Identifiers
      • DiVA
      • DOI -- Digital Object Identifier
      • IACR eprint IDs
      • ISBN number
      • Medline
      • RFC document
      • SAO/NASA Astrophysics Data System
      • Title of the paper
    • Add unlinked PDFs including BibTeX data into the database
    • Synchronize file links
    • Cleanup entries
    • Save actions
    • Check integrity
    • Get BibTeX data from DOI
    • Find duplicates
    • Merge entries
    • Groups
    • Replace string
  • Import and Export
    • Import
      • JabRef Browser Extension
      • Custom import filters
      • Import from Microsoft Word -- MS Office Bibliography XML format
      • Import inspection window
      • New subdatabase based on AUX file
      • New entry from plain text
    • Export
      • Custom export filters
      • EndNote Export Filter
      • Export to an External SQL Database
      • Export to Microsoft Word -- MS Office Bibliography XML format
    • Other integrations
      • LaTeX Citations Tab
      • OpenOffice/LibreOffice integration
      • Pushing to external editor application
      • XMP metadata support in JabRef
    • Knowledge
      • Comparison of the Medline (txt), Medline (XML), and RIS format
  • Collaborative Work
    • Sharing a Bib(La)TeX Database
    • Shared SQL Database
    • Migration of pre-3.6 SQL databases into a shared SQL database
  • Configuration of JabRef
    • Customize the BibTeX key generator
    • Customize entry types
    • Customize general fields
    • Customize key bindings
    • Database properties window
    • Entry preview setup
    • Manage external file types
    • Manage protected terms
    • The string editor
  • Frequently Asked Questions and Howtos
    • General FAQs
    • Contributing
    • Sharing
    • How Tos
      • How to expand first names of a BibTeX entry
      • How to Improve the Help Page
      • How to translate the JabRef User Interface
    • FAQs on Operating Systems
      • Linux
      • Mac OS X
      • Windows
Powered by GitBook
On this page
  • Adding a custom import filter
  • Creating an import filter
  • A simple example
  • Sharing your work

Was this helpful?

Edit on GitHub
Export as PDF
  1. Import and Export
  2. Import

Custom import filters

This information is outdated. Please help to improve it.

JabRef allows you to define and use your own importers, in very much the same way as the standard import filters are defined. An import filter is defined by one or more Java classes, which parse the contents of a file from an input stream and create BibTex entries. So with some basic Java programming you can add an importer for your favorite source of references or register a new, improved version of an existing importer. Also, this allows you to add compiled custom importers that you might have obtained e.g. from GitHub without rebuilding JabRef (see "Sharing your work" below).

Custom importers take precedence over standard importers. This way, you can override existing importers for the Autodetect and Command Line features of JabRef. Custom importers are ordered by name.

Adding a custom import filter

Make sure, you have a compiled custom import filter (one or more .class files as described below) and the class files are in a directory structure according to their package structure. To add a new custom import filter, open the dialog box Options → Manage custom imports, and click Add from folder. A file chooser will appear, allowing you to select the classpath of your importer, i.e. the directory where the top folder of the package structure of your importer resides. In a second file chooser you select your importer class file, which must be derived from ImportFormat. By clicking Select new ImportFormat Subclass, your new importer will appear in the list of custom import filters. All custom importers will appear in the File → Import → Custom Importers and File → Import and Append → Custom Importers submenus of the JabRef window.

Please note that if you move the class to another directory you will have to remove and re-add the importer. If you add a custom importer under a name that already exists, the existing importer will be replaced. Although in some cases it is possible to update an existing custom importer without restarting JabRef (when the importer is not on the classpath), we recommend restarting JabRef after updating an custom-importer. You can also register importers contained in a ZIP- or JAR-file, simply select the Zip- or Jar-archive, then the entry (class-file) that represents the new importer.

Creating an import filter

For examples and some helpful files on how to build your own importer, please check our download page.

A simple example

Let us assume that we want to import files of the following form:

1936;John Maynard Keynes;The General Theory of Employment, Interest and Money
2003;Boldrin & Levine;Case Against Intellectual Monopoly
2004;ROBERT HUNT AND JAMES BESSEN;The Software Patent Experiment

In your favorite IDE or text editor create a class derived from ImportFormat that implements methods getFormatName(), isRecognizedFormat and importEntries(). Here is an example:

import java.io.BufferedReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import net.sf.jabref.logic.importer.Importer;
import net.sf.jabref.logic.importer.ParserResult;
import net.sf.jabref.logic.util.FileExtensions;
import net.sf.jabref.model.entry.BibEntry;
import net.sf.jabref.model.entry.BibtexEntryTypes;

public class SimpleCSVImporter extends Importer {

    @Override
    public String getName() {
        return "Simple CSV Importer";
    }

    @Override
    public FileExtensions getExtensions() {
        return FileExtensions.TXT;
    }

    @Override
    public String getDescription() {
        return "Imports CSV files, where every field is separated by a semicolon.";
    }

    @Override
    public boolean isRecognizedFormat(BufferedReader reader) {
        return true; // this is discouraged except for demonstration purposes
    }

    @Override
    public ParserResult importDatabase(BufferedReader input) throws IOException {
        List<BibEntry> bibitems = new ArrayList<>();

        String line = input.readLine();
        while (line != null) {
            if (!line.trim().isEmpty()) {
                String[] fields = line.split(";");
                BibEntry be = new BibEntry();
                be.setType(BibtexEntryTypes.TECHREPORT);
                be.setField("year", fields[0]);
                be.setField("author", fields[1]);
                be.setField("title", fields[2]);
                bibitems.add(be);
                line = input.readLine();
            }
        }
        return new ParserResult(bibitems);
    }
}

Note that the example is in the default package. Suppose you have saved it under /mypath/SimpleCSVImporter.java. Also suppose the JabRef-2.0.jar is in the same folder as SimpleCSVImporter.java and Java is on your command path. Compile it using a JSDK 1.4 e.g. with

javac -classpath JabRef-2.0.jar SimpleCSVImporter.java

Now there should be a file /mypath/SimpleCSVImporter.class.

In JabRef, open Options → Manage custom imports, and click Add from folder. Navigate to /mypath and click the Select ... button. Select the SimpleCSVImporter.class and click the Select ... button. Your importer should now appear in the list of custom importers under the name "Simple CSV Importer" and, after you click Close also in the File → Import → Custom Importers and File → Import and Append → Custom Importers submenus of the JabRef window.

Sharing your work

With custom importer files, it's fairly simple to share custom import formats between users. If you write an import filter for a format not supported by JabRef, or an improvement over an existing one, we encourage you to post your work on our GitHub page. We'd be happy to distribute a collection of submitted import files, or to add to the selection of standard importers.

PreviousJabRef Browser ExtensionNextImport from Microsoft Word -- MS Office Bibliography XML format

Last updated 3 years ago

Was this helpful?