📄 testpictures.java
字号:
/** 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.FileInputStream;import java.util.Iterator;import java.util.List;import org.apache.poi.hwpf.HWPFDocument;import org.apache.poi.hwpf.model.TextPiece;import org.apache.poi.hwpf.usermodel.Paragraph;import org.apache.poi.hwpf.usermodel.Range;import org.apache.poi.util.LittleEndian;import junit.framework.TestCase;/** * 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 { 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())); } 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -