/* * ==================================================================== * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ==================================================================== */ package org.apache.poi.hwpf.converter; import static org.apache.poi.POITestCase.assertContains; import java.io.StringWriter; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.apache.poi.POIDataSamples; import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.util.XMLHelper; import org.junit.Test; /** * Test cases for {@link WordToFoConverter} */ public class TestWordToFoConverter { private static String getFoText( final String sampleFileName ) throws Exception { HWPFDocument hwpfDocument = new HWPFDocument( POIDataSamples .getDocumentInstance().openResourceAsStream( sampleFileName ) ); WordToFoConverter wordToFoConverter = new WordToFoConverter( XMLHelper.getDocumentBuilderFactory().newDocumentBuilder().newDocument() ); wordToFoConverter.processDocument( hwpfDocument ); StringWriter stringWriter = new StringWriter(); Transformer transformer = TransformerFactory.newInstance() .newTransformer(); transformer.setOutputProperty( OutputKeys.INDENT, "yes" ); transformer.transform( new DOMSource( wordToFoConverter.getDocument() ), new StreamResult( stringWriter ) ); String result = stringWriter.toString(); return result; } @Test public void testDocumentProperties() throws Exception { String result = getFoText( "documentProperties.doc" ); assertContains( result, "<dc:title xmlns:dc=\"http://purl.org/dc/elements/1.1/\">This is document title</dc:title>" ); assertContains( result, "<pdf:Keywords xmlns:pdf=\"http://ns.adobe.com/pdf/1.3/\">This is document keywords</pdf:Keywords>" ); } @Test public void testEndnote() throws Exception { String result = getFoText( "endingnote.doc" ); assertContains( result, "<fo:basic-link id=\"endnote_back_1\" internal-destination=\"endnote_1\">" ); assertContains( result, "<fo:inline baseline-shift=\"super\" font-size=\"smaller\">1</fo:inline>" ); assertContains( result, "<fo:basic-link id=\"endnote_1\" internal-destination=\"endnote_back_1\">" ); assertContains( result, "<fo:inline baseline-shift=\"super\" font-size=\"smaller\">1 </fo:inline>" ); assertContains( result, "Ending note text" ); } @Test public void testEquation() throws Exception { final String sampleFileName = "equation.doc"; String result = getFoText( sampleFileName ); assertContains( result, "<!--Image link to '0.emf' can be here-->" ); } @Test public void testHyperlink() throws Exception { final String sampleFileName = "hyperlink.doc"; String result = getFoText( sampleFileName ); assertContains( result, "<fo:basic-link external-destination=\"http://testuri.org/\">" ); assertContains( result, "Hyperlink text" ); } @Test public void testInnerTable() throws Exception { final String sampleFileName = "innertable.doc"; String result = getFoText( sampleFileName ); assertContains( result, "padding-end=\"0.0in\" padding-start=\"0.0in\" width=\"1.0770833in\"" ); } @Test public void testPageBreak() throws Exception { final String sampleFileName = "page-break.doc"; String result = getFoText( sampleFileName ); assertContains( result, "<fo:block break-before=\"page\"" ); } @Test public void testPageBreakBefore() throws Exception { final String sampleFileName = "page-break-before.doc"; String result = getFoText( sampleFileName ); assertContains( result, "<fo:block break-before=\"page\"" ); } @Test public void testPageref() throws Exception { final String sampleFileName = "pageref.doc"; String result = getFoText( sampleFileName ); assertContains( result, "<fo:basic-link internal-destination=\"bookmark_userref\">" ); assertContains( result, "1" ); assertContains( result, "<fo:inline id=\"bookmark_userref\">" ); } }