public interface IHyphenationCallback
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 InputStream 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 on an English machine 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, 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 void | requestDictionary(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 |
public abstract void requestDictionary(java.lang.String language) throws java.lang.Exception
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 InputStream 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 on an English machine 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, 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; }