testpictures.java

来自「EXCEL read and write」· Java 代码 · 共 166 行

JAVA
166
字号
/** 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.usermodel;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.util.List;import junit.framework.TestCase;import org.apache.poi.hwpf.HWPFDocument;import org.apache.poi.util.LittleEndian;/** * Test the picture handling * * @author Nick Burch (nick at torchbox dot com) */public class TestPictures extends TestCase {	private String dirname = System.getProperty("HWPF.testdata.path");	    protected void setUp() throws Exception {    }			        /**     * two jpegs     */    public void testTwoImages() throws Exception {    	HWPFDocument doc = new HWPFDocument(new FileInputStream(dirname + "/two_images.doc"));    	List pics = doc.getPicturesTable().getAllPictures();    	    	assertNotNull(pics);    	assertEquals(pics.size(), 2);    	for(int i=0; i<pics.size(); i++) {    		Object p = pics.get(i);    		assertTrue(p instanceof Picture);    		    		Picture pic = (Picture)p;    		assertNotNull(pic.suggestFileExtension());    		assertNotNull(pic.suggestFullFileName());    	}    	    	Picture picA = (Picture)pics.get(0);    	Picture picB = (Picture)pics.get(1);    	assertEquals("jpg", picA.suggestFileExtension());    	assertEquals("jpg", picA.suggestFileExtension());    }        /**     * pngs and jpegs     */    public void testDifferentImages() throws Exception {    	HWPFDocument doc = new HWPFDocument(new FileInputStream(dirname + "/testPictures.doc"));    	List pics = doc.getPicturesTable().getAllPictures();    	    	assertNotNull(pics);    	assertEquals(7, pics.size());    	for(int i=0; i<pics.size(); i++) {    		Object p = pics.get(i);    		assertTrue(p instanceof Picture);    		    		Picture pic = (Picture)p;    		assertNotNull(pic.suggestFileExtension());    		assertNotNull(pic.suggestFullFileName());    	}    	    	assertEquals("jpg", ((Picture)pics.get(0)).suggestFileExtension());    	assertEquals("jpg", ((Picture)pics.get(1)).suggestFileExtension());    	assertEquals("png", ((Picture)pics.get(3)).suggestFileExtension());    	assertEquals("png", ((Picture)pics.get(4)).suggestFileExtension());    	assertEquals("wmf", ((Picture)pics.get(5)).suggestFileExtension());    	assertEquals("jpg", ((Picture)pics.get(6)).suggestFileExtension());    }        /**     * emf image, nice and simple     */    public void testEmfImage() throws Exception {    	HWPFDocument doc = new HWPFDocument(new FileInputStream(dirname + "/vector_image.doc"));    	List pics = doc.getPicturesTable().getAllPictures();    	    	assertNotNull(pics);    	assertEquals(1, pics.size());    	    	Picture pic = (Picture)pics.get(0);    	assertNotNull(pic.suggestFileExtension());    	assertNotNull(pic.suggestFullFileName());    	assertTrue(pic.getSize() > 128);    	    	// Check right contents    	byte[] emf = loadImage("vector_image.emf");    	byte[] pemf = pic.getContent();    	assertEquals(emf.length, pemf.length);    	for(int i=0; i<emf.length; i++) {    		assertEquals(emf[i], pemf[i]);    	}    }        /**     * emf image, with a crazy offset     */    public void testEmfComplexImage() throws Exception {    	/*    	    	Commenting out this test case temporarily. The file emf_2003_image does not contain any    	pictures. Instead it has an office drawing object. Need to rewrite this test after    	revisiting the implementation of office drawing objects.    	    	HWPFDocument doc = new HWPFDocument(new FileInputStream(dirname + "/emf_2003_image.doc"));    	List pics = doc.getPicturesTable().getAllPictures();    	    	assertNotNull(pics);    	assertEquals(1, pics.size());    	Picture pic = (Picture)pics.get(0);    	assertNotNull(pic.suggestFileExtension());    	assertNotNull(pic.suggestFullFileName());    	    	// This one's tricky    	// TODO: Fix once we've sorted bug #41898    	assertNotNull(pic.getContent());    	assertNotNull(pic.getRawContent());    	    	// These are probably some sort of offset, need to figure them out    	assertEquals(4, pic.getSize());    	assertEquals(0x80000000l, LittleEndian.getUInt(pic.getContent()));    	assertEquals(0x80000000l, LittleEndian.getUInt(pic.getRawContent()));    	*/    }    public void testPicturesWithTable() throws Exception {    	HWPFDocument doc = new HWPFDocument(new FileInputStream(    			new File(dirname, "Bug44603.doc")));    	List pics = doc.getPicturesTable().getAllPictures();    	assertEquals(pics.size(), 2);    }    private byte[] loadImage(String filename) throws Exception {    	ByteArrayOutputStream b = new ByteArrayOutputStream();    	FileInputStream fis = new FileInputStream(dirname + "/" + filename);    	    	byte[] buf = new byte[4096];    	int read = 0;    	while( (read = fis.read(buf)) > -1 ) {    		b.write(buf, 0, read);    	}    	return b.toByteArray();    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?