com.aspose.words
Interface IHyphenationCallback


public interface IHyphenationCallback 

Implemented by classes which can register hyphenation dictionaries. Use this mehod

Example:

Shows how to open and register a dictionary from a file.
public void registerDictionary() throws Exception {
    // Set up a callback that tracks warnings that occur during hyphenation dictionary registration
    WarningInfoCollection warningInfoCollection = new WarningInfoCollection();
    Hyphenation.setWarningCallback(warningInfoCollection);

    // Register an English (US) hyphenation dictionary by stream
    FileInputStream dictionaryStream = new FileInputStream(getMyDir() + "hyph_en_US.dic");
    Hyphenation.registerDictionary("en-US", dictionaryStream);

    // No warnings detected
    Assert.assertEquals(warningInfoCollection.getCount(), 0);

    // Open a document with a German locale that might not get automatically hyphenated by Microsoft Word an english machine
    Document doc = new Document(getMyDir() + "RandomGermanWords.doc");

    // To hyphenate that document upon saving, we need a hyphenation dictionary for the "de-CH" language code
    // This callback will handle the automatic request for that dictionary
    Hyphenation.setCallback(new CustomHyphenationDictionaryRegister());

    // When we save the document, it will be hyphenated according to rules defined by the dictionary known by our callback
    doc.save(getArtifactsDir() + "Hyphenation.RegisterDictionary.pdf");

    // This dictionary contains two identical patterns, which will trigger a warning
    Assert.assertEquals(warningInfoCollection.getCount(), 1);
    Assert.assertEquals(warningInfoCollection.get(0).getWarningType(), WarningType.MINOR_FORMATTING_LOSS);
    Assert.assertEquals(warningInfoCollection.get(0).getSource(), WarningSource.LAYOUT);
    Assert.assertEquals(warningInfoCollection.get(0).getDescription(), "Hyphenation dictionary contains duplicate patterns. " +
            "The only first found pattern will be used. Content can be wrapped differently.");
}

/// <summary>
/// Associates ISO language codes with custom local system dictionary files for their respective languages
/// </summary>
private static class CustomHyphenationDictionaryRegister implements IHyphenationCallback {
    public CustomHyphenationDictionaryRegister() {
        mHyphenationDictionaryFiles = new HashMap<>();
        {
            mHyphenationDictionaryFiles.put("en-US", getMyDir() + "hyph_en_US.dic");
            mHyphenationDictionaryFiles.put("de-CH", getMyDir() + "hyph_de_CH.dic");
        }
    }

    public void requestDictionary(String language) throws Exception {
        System.out.print("Hyphenation dictionary requested: " + language);

        if (Hyphenation.isDictionaryRegistered(language)) {
            System.out.println(", is already registered.");
            return;
        }

        if (mHyphenationDictionaryFiles.containsKey(language)) {
            Hyphenation.registerDictionary(language, mHyphenationDictionaryFiles.get(language));
            System.out.println(", successfully registered.");
            return;
        }

        System.out.println(", no respective dictionary file known by this Callback.");
    }

    private HashMap<String, String> mHyphenationDictionaryFiles;
}

Method Summary
abstract voidrequestDictionary(java.lang.String language)
           Notifies application that hyphenation dictionary for the specified language wasn't found and may need to be registered.

Implementation should find a dictionary and register it using RegisterDictionary methods.

If dictionary is unavailable for the specified language implementation can opt out of further calls for the same language using Hyphenation.registerDictionary(java.lang.String,java.lang.String) with null value.

 

Method Detail

requestDictionary

public abstract void requestDictionary(java.lang.String language)
                                    throws java.lang.Exception
Notifies application that hyphenation dictionary for the specified language wasn't found and may need to be registered.

Implementation should find a dictionary and register it using RegisterDictionary methods.

If dictionary is unavailable for the specified language implementation can opt out of further calls for the same language using Hyphenation.registerDictionary(java.lang.String,java.lang.String) with null value.

Exceptions thrown by this method will abort execution of page layout process.
Parameters:
language - A language name, e.g. "en-US". See .NET documentation for "culture name" and RFC 4646 for details.

Example:

Shows how to open and register a dictionary from a file.
public void registerDictionary() throws Exception {
    // Set up a callback that tracks warnings that occur during hyphenation dictionary registration
    WarningInfoCollection warningInfoCollection = new WarningInfoCollection();
    Hyphenation.setWarningCallback(warningInfoCollection);

    // Register an English (US) hyphenation dictionary by stream
    FileInputStream dictionaryStream = new FileInputStream(getMyDir() + "hyph_en_US.dic");
    Hyphenation.registerDictionary("en-US", dictionaryStream);

    // No warnings detected
    Assert.assertEquals(warningInfoCollection.getCount(), 0);

    // Open a document with a German locale that might not get automatically hyphenated by Microsoft Word an english machine
    Document doc = new Document(getMyDir() + "RandomGermanWords.doc");

    // To hyphenate that document upon saving, we need a hyphenation dictionary for the "de-CH" language code
    // This callback will handle the automatic request for that dictionary
    Hyphenation.setCallback(new CustomHyphenationDictionaryRegister());

    // When we save the document, it will be hyphenated according to rules defined by the dictionary known by our callback
    doc.save(getArtifactsDir() + "Hyphenation.RegisterDictionary.pdf");

    // This dictionary contains two identical patterns, which will trigger a warning
    Assert.assertEquals(warningInfoCollection.getCount(), 1);
    Assert.assertEquals(warningInfoCollection.get(0).getWarningType(), WarningType.MINOR_FORMATTING_LOSS);
    Assert.assertEquals(warningInfoCollection.get(0).getSource(), WarningSource.LAYOUT);
    Assert.assertEquals(warningInfoCollection.get(0).getDescription(), "Hyphenation dictionary contains duplicate patterns. " +
            "The only first found pattern will be used. Content can be wrapped differently.");
}

/// <summary>
/// Associates ISO language codes with custom local system dictionary files for their respective languages
/// </summary>
private static class CustomHyphenationDictionaryRegister implements IHyphenationCallback {
    public CustomHyphenationDictionaryRegister() {
        mHyphenationDictionaryFiles = new HashMap<>();
        {
            mHyphenationDictionaryFiles.put("en-US", getMyDir() + "hyph_en_US.dic");
            mHyphenationDictionaryFiles.put("de-CH", getMyDir() + "hyph_de_CH.dic");
        }
    }

    public void requestDictionary(String language) throws Exception {
        System.out.print("Hyphenation dictionary requested: " + language);

        if (Hyphenation.isDictionaryRegistered(language)) {
            System.out.println(", is already registered.");
            return;
        }

        if (mHyphenationDictionaryFiles.containsKey(language)) {
            Hyphenation.registerDictionary(language, mHyphenationDictionaryFiles.get(language));
            System.out.println(", successfully registered.");
            return;
        }

        System.out.println(", no respective dictionary file known by this Callback.");
    }

    private HashMap<String, String> mHyphenationDictionaryFiles;
}

See Also:
          Aspose.Words Documentation - the home page for the Aspose.Words Product Documentation.
          Aspose.Words Support Forum - our preferred method of support.