IHyphenationCallback
public interface IHyphenationCallback
Implemented by classes which can register hyphenation dictionaries.
Examples:
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.
InputStream dictionaryStream = new FileInputStream(getMyDir() + "hyph_en_US.dic");
Hyphenation.registerDictionary("en-US", dictionaryStream);
Assert.assertEquals(0, warningInfoCollection.getCount());
// Open a document with a locale that Microsoft Word may not hyphenate on an English machine, such as German.
Document doc = new Document(getMyDir() + "German text.docx");
// 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, German hyphenation will take effect.
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.");
}
///
/// Associates ISO language codes with local system filenames for hyphenation dictionary files.
///
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 final HashMap mHyphenationDictionaryFiles;
}
Methods
Method | Description |
---|---|
requestDictionary(String language) | Notifies application that hyphenation dictionary for the specified language wasn’t found and may need to be registered. |
requestDictionary(String language)
public abstract void requestDictionary(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 M:Aspose.Words.Hyphenation.RegisterDictionary(System.String,System.IO.Stream) 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.
Remarks:
Exceptions thrown by this method will abort execution of page layout process.
Examples:
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.
InputStream dictionaryStream = new FileInputStream(getMyDir() + "hyph_en_US.dic");
Hyphenation.registerDictionary("en-US", dictionaryStream);
Assert.assertEquals(0, warningInfoCollection.getCount());
// Open a document with a locale that Microsoft Word may not hyphenate on an English machine, such as German.
Document doc = new Document(getMyDir() + "German text.docx");
// 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, German hyphenation will take effect.
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.");
}
///
/// Associates ISO language codes with local system filenames for hyphenation dictionary files.
///
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 final HashMap mHyphenationDictionaryFiles;
}
Parameters:
Parameter | Type | Description |
---|---|---|
language | java.lang.String | A language name, e.g. “en-US”. See .NET documentation for “culture name” and RFC 4646 for details. |