Modified: poi/site/publish/components/hmef/index.html URL: http://svn.apache.org/viewvc/poi/site/publish/components/hmef/index.html?rev=1836244&r1=1836243&r2=1836244&view=diff ============================================================================== --- poi/site/publish/components/hmef/index.html (original) +++ poi/site/publish/components/hmef/index.html Wed Jul 18 23:27:21 2018 @@ -1,154 +1,313 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<!--*** This is a generated file. Do not edit. ***--> -<link rel="stylesheet" href="../skin/tigris.css" type="text/css"> -<link rel="stylesheet" href="../skin/mysite.css" type="text/css"> -<link rel="stylesheet" href="../skin/site.css" type="text/css"> -<link media="print" rel="stylesheet" href="../skin/print.css" type="text/css"> +<meta content="Apache Forrest" name="Generator"> +<meta name="Forrest-version" content="0.9"> +<meta name="Forrest-skin-name" content="pelt"> <title>POI-HMEF - Java API To Access Microsoft Transport Neutral Encoding Files (TNEF)</title> +<link type="text/css" href="../../skin/basic.css" rel="stylesheet"> +<link media="screen" type="text/css" href="../../skin/screen.css" rel="stylesheet"> +<link media="print" type="text/css" href="../../skin/print.css" rel="stylesheet"> +<link type="text/css" href="../../skin/profile.css" rel="stylesheet"> +<script src="../../skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="../../skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="../../skin/fontsize.js" language="javascript" type="text/javascript"></script> +<link rel="shortcut icon" href="../../images/favicon.ico"> </head> -<body bgcolor="white" class="composite"> -<!--================= start Banner ==================--> -<div id="banner"> -<table width="100%" cellpadding="8" cellspacing="0" summary="banner" border="0"> -<tbody> -<tr> -<!--================= start Group Logo ==================--> -<td width="50%" align="left"> -<div class="groupLogo"> -<a href="https://www.apache.org"><img border="0" class="logoImage" alt="The Apache Software Foundation" src="../resources/images/asf_logo.png"></a> -</div> -</td> -<!--================= end Group Logo ==================--> -<!--================= start Project Logo ==================--><td width="50%" align="right"> -<div align="right" class="projectLogo"> -<a href="https://donate.apache.org/"><img border="0" class="logoImage" alt="Support Apache" src="../resources/images/support-asf.png" width="120" height="120" title="Your donation helps The Apache Software Foundation ensure its community-driven software remains available to billions of users at absolutely no cost."></a><a href="https://poi.apache.org/"><img border="0" class="logoImage" alt="Apache POI" src="../resources/images/pb-poi.png" width="120" height="120" title="Apache POI - the Java API for Microsoft Documents"></a> -</div> -</td> -<!--================= end Project Logo ==================--> -</tr> -</tbody> -</table> -</div> -<!--================= end Banner ==================--> -<!--================= start Main ==================--> -<table width="100%" cellpadding="0" cellspacing="0" border="0" summary="nav" id="breadcrumbs"> -<tbody> -<!--================= start Status ==================--> -<tr class="status"> -<td> -<!--================= start BreadCrumb ==================--><a href="https://www.apache.org/">Apache</a> | <a href="https://poi.apache.org/">POI</a><a href=""></a> -<!--================= end BreadCrumb ==================--></td><td id="tabs"> -<!--================= start Tabs ==================--> -<div class="tab"> -<span class="selectedTab"><a class="base-selected" href="../index.html">Home</a></span> | <script language="Javascript" type="text/javascript"> -function printit() { -if (window.print) { - window.print() ; -} else { - var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH="0" HEIGHT="0" CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>'; -document.body.insertAdjacentHTML('beforeEnd', WebBrowser); - WebBrowser1.ExecWB(6, 2);//Use a 1 vs. a 2 for a prompting dialog box WebBrowser1.outerHTML = ""; -} -} -</script><script language="Javascript" type="text/javascript"> -var NS = (navigator.appName == "Netscape"); -var VERSION = parseInt(navigator.appVersion); -if (VERSION > 3) { - document.write(' <a title="PRINT this page OUT" href="javascript:printit()">PRINT</a>'); -} -</script> -</div> -<!--================= end Tabs ==================--> -</td> -</tr> -</tbody> -</table> -<!--================= end Status ==================--> -<table id="main" width="100%" cellpadding="8" cellspacing="0" summary="" border="0"> -<tbody> -<tr valign="top"> -<!--================= start Menu ==================--> -<td id="leftcol"> -<div id="navcolumn"> -<div class="menuBar"> -<div class="menu"> -<span class="menuLabel">Apache POI</span> -<div class="menuItem"> -<a href="../index.html">Top</a> -</div> -</div> -<div class="menu"> -<span class="menuLabel">HMEF</span> -<div class="menuItem"> -<span class="menuSelected">Overview</span> -</div> -</div> -<center> -<a href="https://www.apache.org/events/current-event.html"><img src="https://www.apache.org/events/current-event-125x125.png"></a> -</center> -</div> -</div> -<form target="_blank" action="https://www.google.com/search" method="get"> -<table summary="search" border="0" cellspacing="0" cellpadding="0"> -<tr> -<td><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap"> - Search Apache POI<br> -<input value="poi.apache.org" name="sitesearch" type="hidden"><input size="10" name="q" id="query" type="text"><img height="1" width="5" alt="" src="../skin/images/spacer.gif" class="spacer"><input name="Search" value="GO" type="submit"></td><td><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> -</tr> -<tr> -<td colspan="3"><img height="7" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> -</tr> -<tr> -<td class="bottom-left-thick"></td><td bgcolor="#a5b6c6"><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td class="bottom-right-thick"></td> -</tr> -</table> +<body onload="init()"> +<script type="text/javascript">ndeSetTextSize();</script> +<div id="top"> +<!--+ + |breadtrail + +--> +<div class="breadtrail"> +<a href="https://www.apache.org">Apache Software Foundation</a> > <a href="https://poi.apache.org">Apache POI</a><script src="../../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script> +</div> +<!--+ + |header + +--> +<div class="header"> +<!--+ + |start group logo + +--> +<div class="grouplogo"> +<a href="https://www.apache.org"><img class="logoImage" alt="Apache Software Foundation" src="../../images/group-logo.png" title="The Apache Software Foundation is a cornerstone of the modern Open Source software ecosystem – supporting some of the most widely used and important software solutions powering today's Internet economy."></a> +</div> +<!--+ + |end group logo + +--> +<!--+ + |start Project Logo + +--> +<div class="projectlogo"> +<a href="https://poi.apache.org"><img class="logoImage" alt="Apache POI" src="../../images/project-logo.png" title="Apache POI is well-known in the Java field as a library for reading and writing Microsoft Office file formats, such as Excel, PowerPoint, Word, Visio, Publisher and Outlook. It supports both the older (OLE2) and new (OOXML - Office Open XML) formats."></a> +</div> +<!--+ + |end Project Logo + +--> +<!--+ + |start Search + +--> +<div class="searchbox"> +<form action="http://www.google.com/search" method="get" class="roundtopsmall"> +<input value="poi.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google"> + <input name="Search" value="Search" type="submit"> </form> -</td> -<!--================= end Menu ==================--> -<!--================= start Content ==================--><td> -<div id="bodycol"> -<div class="app"> -<div align="center"> -<h1>POI-HMEF - Java API To Access Microsoft Transport Neutral Encoding Files (TNEF)</h1> </div> -<div class="h3"> - +<!--+ + |end search + +--> +<!--+ + |start Tabs + +--> +<ul id="tabs"> +<li> +<a class="unselected" href="../../index.html">Home</a> +</li> +<li> +<a class="unselected" href="../../help/index.html">Help</a> +</li> +<li class="current"> +<a class="selected" href="../../components/index.html">Component APIs</a> +</li> +<li> +<a class="unselected" href="../../devel/index.html">Getting Involved</a> +</li> +</ul> +<!--+ + |end Tabs + +--> +</div> +</div> +<div id="main"> +<div id="publishedStrip"> +<!--+ + |start Subtabs + +--> +<div id="level2tabs"></div> +<!--+ + |end Endtabs + +--> +<script type="text/javascript"><!-- +document.write("Last Published: " + document.lastModified); +// --></script> +</div> +<!--+ + |breadtrail + +--> +<div class="breadtrail"> - + + </div> +<!--+ + |start Menu, mainarea + +--> +<!--+ + |start Menu + +--> +<div id="menu"> +<div onclick="SwitchMenu('menu_selected_1.1', '../../skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Component APIs</div> +<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;"> +<div class="menuitem"> +<a href="../../components/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../apidocs/index.html">Javadocs</a> +</div> +<div onclick="SwitchMenu('menu_1.1.3', '../../skin/')" id="menu_1.1.3Title" class="menutitle">Excel (HSSF/XSSF)</div> +<div id="menu_1.1.3" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/spreadsheet/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/quick-guide.html">Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/how-to.html">HOWTO</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/converting.html">HSSF to SS Converting</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/formula.html">Formula Support</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/eval.html">Formula Evaluation</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/eval-devguide.html">Eval Dev Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/examples.html">Examples</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/use-case.html">Use Case</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/diagrams.html">Pictorial Docs</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/limitations.html">Limitations</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/user-defined-functions.html">User Defined Functions</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/excelant.html">ExcelAnt Tests</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/hacking-hssf.html">Hacking HSSF</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/record-generator.html">Record Generator</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/chart.html">Charts</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.4', '../../skin/')" id="menu_1.1.4Title" class="menutitle">PowerPoint (HSLF/XSLF)</div> +<div id="menu_1.1.4" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/slideshow/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/quick-guide.html">Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/how-to-shapes.html">HSLF Cookbook</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/xslf-cookbook.html">XSLF Cookbook</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/ppt-file-format.html">PPT File Format</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.5', '../../skin/')" id="menu_1.1.5Title" class="menutitle">Word (HWPF/XWPF)</div> +<div id="menu_1.1.5" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/document/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/document/quick-guide.html">HWPF Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/document/quick-guide-xwpf.html">XWPF Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/document/docoverview.html">HWPF Format</a> +</div> +<div class="menuitem"> +<a href="../../components/document/projectplan.html">HWPF Project plan</a> +</div> +</div> +<div class="menuitem"> +<a href="../../components/hsmf/index.html">Outlook (HSMF)</a> +</div> +<div class="menuitem"> +<a href="../../components/diagram/index.html">Visio (HDGF+XDGF)</a> +</div> +<div onclick="SwitchMenu('menu_1.1.8', '../../skin/')" id="menu_1.1.8Title" class="menutitle">Publisher (HPBF)</div> +<div id="menu_1.1.8" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/hpbf/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/hpbf/file-format.html">File Format</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.9', '../../skin/')" id="menu_1.1.9Title" class="menutitle">OLE2 Filesystem (POIFS)</div> +<div id="menu_1.1.9" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/poifs/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/how-to.html">How To</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/embeded.html">Embedded Documents</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/fileformat.html">File System Documentation</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/usecases.html">Use Cases</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/design.html">Design</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.10', '../../skin/')" id="menu_1.1.10Title" class="menutitle">OLE2 Document Props (HPSF)</div> +<div id="menu_1.1.10" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/hpsf/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/how-to.html">How To</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/thumbnails.html">Thumbnails</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/internals.html">Internals</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/todo.html">To Do</a> +</div> +</div> +<div class="menupage"> +<div class="menupagetitle">TNEF (HMEF) for winmail.dat</div> +</div> +<div class="menuitem"> +<a href="../../components/oxml4j/index.html">OpenXML4J (OOXML)</a> +</div> +<div class="menuitem"> +<a href="../../components/logging.html">Logging framework</a> +</div> +</div> +<div id="credit"> +<hr> +<a href="https://www.apache.org/events/current-event.html"><img border="0" title="Apache Event" alt="Apache Event - logo" src="http://www.apache.org/events/current-event-125x125.png" style="width: 125px;height: 125px;"></a> +</div> +<div id="roundbottom"> +<img style="display: none" class="corner" height="15" width="15" alt="" src="../../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div> +<!--+ + |alternative credits + +--> +<div id="credit2"> +<a href="https://donate.apache.org/"><img border="0" title="Support Apache" alt="Support Apache - logo" src="../../images/support-asf.png" style="width: 125px;height: 125px;"></a> +</div> +</div> +<!--+ + |end Menu + +--> +<!--+ + |start content + +--> +<div id="content"> +<h1>POI-HMEF - Java API To Access Microsoft Transport Neutral Encoding Files (TNEF)</h1> +<h3>Overview</h3> +<div id="front-matter"></div> <a name="Overview"></a> -<div class="h3"> -<h3>Overview<a title="Permanent link" class="headerlink" href="#Overview">#</a> -</h3> -</div> - - - +<h2 class="boxed">Overview</h2> +<div class="section"> <p>HMEF is the POI Project's pure Java implementation of Microsoft's TNEF (Transport Neutral Encoding Format), aka winmail.dat, which is used by Outlook and Exchange in some situations.</p> - <p>Currently, HMEF provides a read-only api for accessing common message and attachment attributes, including the message body and attachment files. In addition, it's possible to have read-only access to all of the underlying TNEF and MAPI attributes of the message and attachments.</p> - <p>HMEF also provides a command line tool for extracting out the message body and attachment files from a TNEF (winmail.dat) file.</p> - <p>Write support, both for saving changes and for creating new files, is currently unavailable. Anyone interested in working on these areas is advised to read the - <a href="/guidelines.html">Contribution Guidelines</a> then - <a href="/mailinglists.html">join the dev list</a>!</p> - - -<div class="frame note"> + <a href="../../devel/guidelines.html">Contribution Guidelines</a> then + <a href="../../help/index.html">join the dev list</a>!</p> +<div class="note"> <div class="label">Note</div> <div class="content"> This code currently lives the @@ -157,48 +316,31 @@ if (VERSION > 3) { you have the Scratchpad Jar on your classpath, or a dependency defined on the <em>poi-scratchpad</em> artifact - the main POI jar is not enough! See the - <a href="/overview.html#components">POI Components Map</a> + <a href="../../components/">POI Components Map</a> for more details. </div> </div> - +</div> <a name="Using+HMEF+to+access+TNEF+%28winmail.dat%29+files"></a> -<div class="h3"> -<h3>Using HMEF to access TNEF (winmail.dat) files<a title="Permanent link" class="headerlink" href="#Using+HMEF+to+access+TNEF+%28winmail.dat%29+files">#</a> -</h3> -</div> - - - +<h2 class="boxed">Using HMEF to access TNEF (winmail.dat) files</h2> +<div class="section"> <a name="Easy+extraction+of+message+body+and+attachment+files"></a> -<div class="h4"> -<h4>Easy extraction of message body and attachment files<a title="Permanent link" class="headerlink" href="#Easy+extraction+of+message+body+and+attachment+files">#</a> -</h4> -</div> - - - +<h3 class="boxed">Easy extraction of message body and attachment files</h3> <p>The class <em>org.apache.poi.hmef.extractor.HMEFContentsExtractor</em> provides both command line and Java extraction. It allows the saving of the message body (an RTF file), and all of the attachment files, to a single directory as specified.</p> - - <p>From the command line, simply call the class specifying the TNEF file to extract, and the directory to place the extracted files into, eg:</p> - <pre class="code"> java -classpath poi-3.14.jar:poi-scratchpad-3.14.jar org.apache.poi.hmef.extractor.HMEFContentsExtractor winmail.dat /tmp/extracted/ </pre> - - <p>From Java, there are two method calls on the class, one to extract the message body RTF to a file, and the other to extract all the attachments to a directory. A typical use would be:</p> - <pre class="code"> public void extract(String winmailFilename, String directoryName) throws Exception { HMEFContentsExtractor ext = new HMEFContentsExtractor(new File(winmailFilename)); @@ -215,27 +357,16 @@ public void extract(String winmailFilena System.out.println("Extraction completed"); } </pre> - - - <a name="Attachment+attributes+and+contents"></a> -<div class="h4"> -<h4>Attachment attributes and contents<a title="Permanent link" class="headerlink" href="#Attachment+attributes+and+contents">#</a> -</h4> -</div> - - - +<h3 class="boxed">Attachment attributes and contents</h3> <p>To get at your attachments, simply call the <em>getAttachments()</em> method on a <em>HMEFMessage</em> instance, and you'll receive a list of all the attachments.</p> - <p>When you have a <em>org.apache.poi.hmef.Attachment</em> object, there are several helper methods available. These will all return the value of the appropriate underlying attachment attributes, or null if for some reason the attribute isn't present in your file.</p> - <ul> <li> @@ -263,24 +394,13 @@ public void extract(String winmailFilena a windows meta file representation of the attached file</li> </ul> - - - <a name="Message+attributes+and+message+body"></a> -<div class="h4"> -<h4>Message attributes and message body<a title="Permanent link" class="headerlink" href="#Message+attributes+and+message+body">#</a> -</h4> -</div> - - - +<h3 class="boxed">Message attributes and message body</h3> <p>A <em>org.apache.poi.hmef.HMEFMessage</em> instance is created from an <em>InputStream</em> of the underlying TNEF (winmail.dat) file.</p> - <p>From a <em>HMEFMessage</em>, there are three main methods of interest to call:</p> - <ul> <li> @@ -295,36 +415,23 @@ public void extract(String winmailFilena <em>Attachment</em> objects for the message</li> </ul> - - - <a name="Low+level+attribute+access"></a> -<div class="h4"> -<h4>Low level attribute access<a title="Permanent link" class="headerlink" href="#Low+level+attribute+access">#</a> -</h4> -</div> - - - +<h3 class="boxed">Low level attribute access</h3> <p>Both Messages and Attachments contain two kinds of attributes. These are <em>TNEFAttribute</em> and <em>MAPIAttribute</em>.</p> - <p>TNEFAttribute is specific to TNEF files in terms of the available types and properties. In general, Attachments have a few more useful ones of these then Messages.</p> - <p>MAPIAttributes hold standard MAPI properties and values, and work in a similar way to <a href="../hsmf/">HSMF (Outlook)</a> does. There are typically many of these on both Messages and Attachments. <em>Note - see limitations</em> </p> - <p>Both <em>HMEFMessage</em> and <em>Attachment</em> supports support two different ways of getting to attributes of interest. Firstly, they support list getters, to return all attributes (either TNEF or MAPI). Secondly, they support specific getters by TNEF or MAPI property.</p> - <pre class="code"> HMEFMessage msg = new HMEFMessage(new FileInputStream(file)); for(TNEFAttribute attr : msg.getMessageAttributes()) { @@ -346,36 +453,24 @@ for(Attachment attach : msg.getAttachmen System.out.println("Extension is " + attach.getMAPIAttribute(MAPIProperty.ATTACH_EXTENSION)); } </pre> - - +</div> <a name="Investigating+a+TNEF+file"></a> -<div class="h3"> -<h3>Investigating a TNEF file<a title="Permanent link" class="headerlink" href="#Investigating+a+TNEF+file">#</a> -</h3> -</div> - - - +<h2 class="boxed">Investigating a TNEF file</h2> +<div class="section"> <p>To get a feel for the contents of a file, and to track down where data of interest is stored, HMEF comes with <a href="http://svn.apache.org/repos/asf/poi/trunk/src/scratchpad/src/org/apache/poi/hmef/dev/">HMEFDumper</a> to print out the contents of the file.</p> - +</div> <a name="Limitations"></a> -<div class="h3"> -<h3>Limitations<a title="Permanent link" class="headerlink" href="#Limitations">#</a> -</h3> -</div> - - - +<h2 class="boxed">Limitations</h2> +<div class="section"> <p>HMEF is currently a work-in-progress, and not everything works yet. The current limitations are:</p> - <ul> <li>Non-standard MAPI properties from the range 0x8000 to 0x8fff @@ -392,52 +487,40 @@ for(Attachment attach : msg.getAttachmen files</li> </ul> - - - -<div id="authors" align="right">by Nick Burch</div> </div> + +<p align="right"> +<font size="-2">by Nick Burch</font> +</p> </div> +<!--+ + |end content + +--> +<div class="clearboth"> </div> </div> -</td> -<!--================= end Content ==================--> -</tr> -</tbody> -</table> -<!--================= end Main ==================--> -<!--================= start Footer ==================--> <div id="footer"> -<table summary="footer" cellspacing="0" cellpadding="4" width="100%" border="0"> -<tbody> -<tr> -<!--================= start Copyright ==================--> -<td colspan="2"> -<div align="center"> +<!--+ + |start bottomstrip + +--> +<div class="lastmodified"> +<script type="text/javascript"><!-- +document.write("Last Published: " + document.lastModified); +// --></script> +</div> <div class="copyright"> - Copyright © 2002-2018 The Apache Software Foundation. All rights reserved.<br> - Apache, Apache POI, and the Apache POI logo are registered trademarks or - trademarks of The Apache Software Foundation in the U.S. and/or other countries. - </div> -</div> -</td> -<!--================= end Copyright ==================--> -</tr> -<tr> -<td align="left"> -<!--================= start Host ==================--> -<!--================= end Host ==================--></td><td align="right"> -<!--================= start Credits ==================--> -<div align="right"> -<div class="credit"> -<a href="http://validator.w3.org/check/referer"><img width="88" height="31" alt="Valid HTML 4.01!" src="../skin/images/valid-html401.png" class="logoImage"></a><a href="http://jigsaw.w3.org/css-validator/"><img width="88" height="31" alt="Valid CSS!" src="../skin/images/vcss.png" class="logoImage"></a><a href="https://forrest.apache.org/"><img border="0" class="logoImage" alt="Built with Apache Forrest" src="../skin/images/built-with-forrest-button.png" width="88" height="31"></a> -</div> -</div> -<!--================= end Credits ==================--> -</td> -</tr> -</tbody> -</table> + Copyright © + 2001-2018 <a href="https://www.apache.org/">The Apache Software Foundation</a> +</div> +<div id="logos"> +<a href="http://validator.w3.org/check/referer"><img style="height: 31px; width: 88px;" title="Valid HTML 4.01!" alt="Valid HTML 4.01!" src="../../skin/images/valid-html401.png" class="logoImage"></a><a href="http://jigsaw.w3.org/css-validator/check/referer"><img style="height: 31px; width: 88px;" title="Valid CSS!" alt="Valid CSS!" src="../../skin/images/vcss.png" class="logoImage"></a> +</div> +<div id="feedback"> + Send feedback about the website to: + <a id="feedbackto" href="mailto:[email protected]?subject=Feedback%C2%A0components/hmef/index.html">[email protected]</a> +</div> +<!--+ + |end bottomstrip + +--> </div> -<!--================= end Footer ==================--> </body> </html>
Modified: poi/site/publish/components/hpbf/file-format.html URL: http://svn.apache.org/viewvc/poi/site/publish/components/hpbf/file-format.html?rev=1836244&r1=1836243&r2=1836244&view=diff ============================================================================== --- poi/site/publish/components/hpbf/file-format.html (original) +++ poi/site/publish/components/hpbf/file-format.html Wed Jul 18 23:27:21 2018 @@ -1,138 +1,297 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<!--*** This is a generated file. Do not edit. ***--> -<link rel="stylesheet" href="../skin/tigris.css" type="text/css"> -<link rel="stylesheet" href="../skin/mysite.css" type="text/css"> -<link rel="stylesheet" href="../skin/site.css" type="text/css"> -<link media="print" rel="stylesheet" href="../skin/print.css" type="text/css"> +<meta content="Apache Forrest" name="Generator"> +<meta name="Forrest-version" content="0.9"> +<meta name="Forrest-skin-name" content="pelt"> <title>POI-HPBF - A Guide to the Publisher File Format</title> +<link type="text/css" href="../../skin/basic.css" rel="stylesheet"> +<link media="screen" type="text/css" href="../../skin/screen.css" rel="stylesheet"> +<link media="print" type="text/css" href="../../skin/print.css" rel="stylesheet"> +<link type="text/css" href="../../skin/profile.css" rel="stylesheet"> +<script src="../../skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="../../skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="../../skin/fontsize.js" language="javascript" type="text/javascript"></script> +<link rel="shortcut icon" href="../../images/favicon.ico"> </head> -<body bgcolor="white" class="composite"> -<!--================= start Banner ==================--> -<div id="banner"> -<table width="100%" cellpadding="8" cellspacing="0" summary="banner" border="0"> -<tbody> -<tr> -<!--================= start Group Logo ==================--> -<td width="50%" align="left"> -<div class="groupLogo"> -<a href="https://www.apache.org"><img border="0" class="logoImage" alt="The Apache Software Foundation" src="../resources/images/asf_logo.png"></a> -</div> -</td> -<!--================= end Group Logo ==================--> -<!--================= start Project Logo ==================--><td width="50%" align="right"> -<div align="right" class="projectLogo"> -<a href="https://donate.apache.org/"><img border="0" class="logoImage" alt="Support Apache" src="../resources/images/support-asf.png" width="120" height="120" title="Your donation helps The Apache Software Foundation ensure its community-driven software remains available to billions of users at absolutely no cost."></a><a href="https://poi.apache.org/"><img border="0" class="logoImage" alt="Apache POI" src="../resources/images/pb-poi.png" width="120" height="120" title="Apache POI - the Java API for Microsoft Documents"></a> -</div> -</td> -<!--================= end Project Logo ==================--> -</tr> -</tbody> -</table> -</div> -<!--================= end Banner ==================--> -<!--================= start Main ==================--> -<table width="100%" cellpadding="0" cellspacing="0" border="0" summary="nav" id="breadcrumbs"> -<tbody> -<!--================= start Status ==================--> -<tr class="status"> -<td> -<!--================= start BreadCrumb ==================--><a href="https://www.apache.org/">Apache</a> | <a href="https://poi.apache.org/">POI</a><a href=""></a> -<!--================= end BreadCrumb ==================--></td><td id="tabs"> -<!--================= start Tabs ==================--> -<div class="tab"> -<span class="selectedTab"><a class="base-selected" href="../index.html">Home</a></span> | <script language="Javascript" type="text/javascript"> -function printit() { -if (window.print) { - window.print() ; -} else { - var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH="0" HEIGHT="0" CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>'; -document.body.insertAdjacentHTML('beforeEnd', WebBrowser); - WebBrowser1.ExecWB(6, 2);//Use a 1 vs. a 2 for a prompting dialog box WebBrowser1.outerHTML = ""; -} -} -</script><script language="Javascript" type="text/javascript"> -var NS = (navigator.appName == "Netscape"); -var VERSION = parseInt(navigator.appVersion); -if (VERSION > 3) { - document.write(' <a title="PRINT this page OUT" href="javascript:printit()">PRINT</a>'); -} -</script> -</div> -<!--================= end Tabs ==================--> -</td> -</tr> -</tbody> -</table> -<!--================= end Status ==================--> -<table id="main" width="100%" cellpadding="8" cellspacing="0" summary="" border="0"> -<tbody> -<tr valign="top"> -<!--================= start Menu ==================--> -<td id="leftcol"> -<div id="navcolumn"> -<div class="menuBar"> -<div class="menu"> -<span class="menuLabel">Apache POI</span> -<div class="menuItem"> -<a href="../index.html">Top</a> -</div> -</div> -<div class="menu"> -<span class="menuLabel">HPBF</span> -<div class="menuItem"> -<a href="index.html">Overview</a> -</div> -<div class="menuItem"> -<a href="file-format.xml">File Format</a> -</div> -</div> -<center> -<a href="https://www.apache.org/events/current-event.html"><img src="https://www.apache.org/events/current-event-125x125.png"></a> -</center> -</div> -</div> -<form target="_blank" action="https://www.google.com/search" method="get"> -<table summary="search" border="0" cellspacing="0" cellpadding="0"> -<tr> -<td><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap"> - Search Apache POI<br> -<input value="poi.apache.org" name="sitesearch" type="hidden"><input size="10" name="q" id="query" type="text"><img height="1" width="5" alt="" src="../skin/images/spacer.gif" class="spacer"><input name="Search" value="GO" type="submit"></td><td><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> -</tr> -<tr> -<td colspan="3"><img height="7" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> -</tr> -<tr> -<td class="bottom-left-thick"></td><td bgcolor="#a5b6c6"><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td class="bottom-right-thick"></td> -</tr> -</table> +<body onload="init()"> +<script type="text/javascript">ndeSetTextSize();</script> +<div id="top"> +<!--+ + |breadtrail + +--> +<div class="breadtrail"> +<a href="https://www.apache.org">Apache Software Foundation</a> > <a href="https://poi.apache.org">Apache POI</a><script src="../../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script> +</div> +<!--+ + |header + +--> +<div class="header"> +<!--+ + |start group logo + +--> +<div class="grouplogo"> +<a href="https://www.apache.org"><img class="logoImage" alt="Apache Software Foundation" src="../../images/group-logo.png" title="The Apache Software Foundation is a cornerstone of the modern Open Source software ecosystem – supporting some of the most widely used and important software solutions powering today's Internet economy."></a> +</div> +<!--+ + |end group logo + +--> +<!--+ + |start Project Logo + +--> +<div class="projectlogo"> +<a href="https://poi.apache.org"><img class="logoImage" alt="Apache POI" src="../../images/project-logo.png" title="Apache POI is well-known in the Java field as a library for reading and writing Microsoft Office file formats, such as Excel, PowerPoint, Word, Visio, Publisher and Outlook. It supports both the older (OLE2) and new (OOXML - Office Open XML) formats."></a> +</div> +<!--+ + |end Project Logo + +--> +<!--+ + |start Search + +--> +<div class="searchbox"> +<form action="http://www.google.com/search" method="get" class="roundtopsmall"> +<input value="poi.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google"> + <input name="Search" value="Search" type="submit"> </form> -</td> -<!--================= end Menu ==================--> -<!--================= start Content ==================--><td> -<div id="bodycol"> -<div class="app"> -<div align="center"> -<h1>POI-HPBF - A Guide to the Publisher File Format</h1> </div> -<div class="h3"> - +<!--+ + |end search + +--> +<!--+ + |start Tabs + +--> +<ul id="tabs"> +<li> +<a class="unselected" href="../../index.html">Home</a> +</li> +<li> +<a class="unselected" href="../../help/index.html">Help</a> +</li> +<li class="current"> +<a class="selected" href="../../components/index.html">Component APIs</a> +</li> +<li> +<a class="unselected" href="../../devel/index.html">Getting Involved</a> +</li> +</ul> +<!--+ + |end Tabs + +--> +</div> +</div> +<div id="main"> +<div id="publishedStrip"> +<!--+ + |start Subtabs + +--> +<div id="level2tabs"></div> +<!--+ + |end Endtabs + +--> +<script type="text/javascript"><!-- +document.write("Last Published: " + document.lastModified); +// --></script> +</div> +<!--+ + |breadtrail + +--> +<div class="breadtrail"> - + + </div> +<!--+ + |start Menu, mainarea + +--> +<!--+ + |start Menu + +--> +<div id="menu"> +<div onclick="SwitchMenu('menu_selected_1.1', '../../skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Component APIs</div> +<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;"> +<div class="menuitem"> +<a href="../../components/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../apidocs/index.html">Javadocs</a> +</div> +<div onclick="SwitchMenu('menu_1.1.3', '../../skin/')" id="menu_1.1.3Title" class="menutitle">Excel (HSSF/XSSF)</div> +<div id="menu_1.1.3" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/spreadsheet/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/quick-guide.html">Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/how-to.html">HOWTO</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/converting.html">HSSF to SS Converting</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/formula.html">Formula Support</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/eval.html">Formula Evaluation</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/eval-devguide.html">Eval Dev Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/examples.html">Examples</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/use-case.html">Use Case</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/diagrams.html">Pictorial Docs</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/limitations.html">Limitations</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/user-defined-functions.html">User Defined Functions</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/excelant.html">ExcelAnt Tests</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/hacking-hssf.html">Hacking HSSF</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/record-generator.html">Record Generator</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/chart.html">Charts</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.4', '../../skin/')" id="menu_1.1.4Title" class="menutitle">PowerPoint (HSLF/XSLF)</div> +<div id="menu_1.1.4" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/slideshow/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/quick-guide.html">Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/how-to-shapes.html">HSLF Cookbook</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/xslf-cookbook.html">XSLF Cookbook</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/ppt-file-format.html">PPT File Format</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.5', '../../skin/')" id="menu_1.1.5Title" class="menutitle">Word (HWPF/XWPF)</div> +<div id="menu_1.1.5" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/document/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/document/quick-guide.html">HWPF Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/document/quick-guide-xwpf.html">XWPF Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/document/docoverview.html">HWPF Format</a> +</div> +<div class="menuitem"> +<a href="../../components/document/projectplan.html">HWPF Project plan</a> +</div> +</div> +<div class="menuitem"> +<a href="../../components/hsmf/index.html">Outlook (HSMF)</a> +</div> +<div class="menuitem"> +<a href="../../components/diagram/index.html">Visio (HDGF+XDGF)</a> +</div> +<div onclick="SwitchMenu('menu_selected_1.1.8', '../../skin/')" id="menu_selected_1.1.8Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Publisher (HPBF)</div> +<div id="menu_selected_1.1.8" class="selectedmenuitemgroup" style="display: block;"> +<div class="menuitem"> +<a href="../../components/hpbf/index.html">Overview</a> +</div> +<div class="menupage"> +<div class="menupagetitle">File Format</div> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.9', '../../skin/')" id="menu_1.1.9Title" class="menutitle">OLE2 Filesystem (POIFS)</div> +<div id="menu_1.1.9" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/poifs/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/how-to.html">How To</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/embeded.html">Embedded Documents</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/fileformat.html">File System Documentation</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/usecases.html">Use Cases</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/design.html">Design</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.10', '../../skin/')" id="menu_1.1.10Title" class="menutitle">OLE2 Document Props (HPSF)</div> +<div id="menu_1.1.10" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/hpsf/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/how-to.html">How To</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/thumbnails.html">Thumbnails</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/internals.html">Internals</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/todo.html">To Do</a> +</div> +</div> +<div class="menuitem"> +<a href="../../components/hmef/index.html">TNEF (HMEF) for winmail.dat</a> +</div> +<div class="menuitem"> +<a href="../../components/oxml4j/index.html">OpenXML4J (OOXML)</a> +</div> +<div class="menuitem"> +<a href="../../components/logging.html">Logging framework</a> +</div> +</div> +<div id="credit"></div> +<div id="roundbottom"> +<img style="display: none" class="corner" height="15" width="15" alt="" src="../../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div> +<!--+ + |alternative credits + +--> +<div id="credit2"> +<a href="https://donate.apache.org/"><img border="0" title="Support Apache" alt="Support Apache - logo" src="../../images/support-asf.png" style="width: 125px;height: 125px;"></a> +</div> +</div> +<!--+ + |end Menu + +--> +<!--+ + |start content + +--> +<div id="content"> +<h1>POI-HPBF - A Guide to the Publisher File Format</h1> +<h3>Overview</h3> +<div id="front-matter"></div> <a name="Document+Streams"></a> -<div class="h3"> -<h3>Document Streams<a title="Permanent link" class="headerlink" href="#Document+Streams">#</a> -</h3> -</div> - +<h2 class="boxed">Document Streams</h2> +<div class="section"> <p> The file is made up of a number of POIFS streams. A typical file will be made up as follows: </p> - <pre class="code"> Root Entry - Objects - @@ -153,46 +312,34 @@ Root Entry - VBA - (no children) </pre> - +</div> <a name="Changing+Text"></a> -<div class="h3"> -<h3>Changing Text<a title="Permanent link" class="headerlink" href="#Changing+Text">#</a> -</h3> -</div> - +<h2 class="boxed">Changing Text</h2> +<div class="section"> <p>If you make a change to the text of a file, but not change how much text there is, then the <em>CONTENTS</em> stream will undergo a small change, and the <em>Contents</em> stream will undergo a large change.</p> - <p>If you make a change to the text of a file, and change the amount of text there is, then both the <em>Contents</em> and the <em>CONTENTS</em> streams change.</p> - - -<a name="Changing+Shapes"></a> -<div class="h3"> -<h3>Changing Shapes<a title="Permanent link" class="headerlink" href="#Changing+Shapes">#</a> -</h3> </div> +<a name="Changing+Shapes"></a> +<h2 class="boxed">Changing Shapes</h2> +<div class="section"> <p>If you alter the size of a textbox, but make no text changes, then both <em>Contents</em> and <em>CONTENTS</em> streams change. There are no changes to the Escher streams.</p> - <p>If you set the background colour of a textbox, but make no changes to the text, (to finish off)</p> - - -<a name="Structure+of+CONTENTS"></a> -<div class="h3"> -<h3>Structure of CONTENTS<a title="Permanent link" class="headerlink" href="#Structure+of+CONTENTS">#</a> -</h3> </div> +<a name="Structure+of+CONTENTS"></a> +<h2 class="boxed">Structure of CONTENTS</h2> +<div class="section"> <p>First we have "CHNKINK ", followed by 24 bytes.</p> - <p>Next we have 20 sequences of 24 bytes each. If the first two bytes at 0x1800, then that sequence entry exists, but if it's 0x0000 then the entry doesn't exist. If it does exist, we then have 4 bytes of @@ -203,20 +350,15 @@ Root Entry - text. Finally, we have an unsigned little endian 32 bit offset to the start of the data for this, then an unsigned little endian 32 bit offset of the length of this section.</p> - <p>Normally, the first sequence entry is for TEXT, and the text data will start at 0x200. After that is normally two or three STSH entries (so the first short has values 0, then 1, then 2). After that it seems to vary.</p> - <p>At 0x200 we have the text, stored as little endian 16 bit unicode.</p> - <p>After the text comes all sorts of other stuff, presumably as described by the sequences.</p> - <p>For a contents stream of length 7168 / 0x1c00 bytes, the start looks something like:</p> - <pre class="code"> CHNKINK // "CHNKINK " 04 00 07 00 // Normally 04 00 07 00 @@ -290,94 +432,63 @@ PL 62 1a 00 00 48 00 00 00 // PL fro (the text will then start) </pre> - <p>We think that the first 4 bytes of text describes the the function of the data at the offset. The first short is then the count of that type, eg the 2nd will have 1. We think that the second 4 bytes of text describes the format of data block at the offset. The format of the text block is easy, but we're still trying to figure out the others.</p> - - <a name="Structure+of+TEXT+bit"></a> -<div class="h4"> -<h4>Structure of TEXT bit<a title="Permanent link" class="headerlink" href="#Structure+of+TEXT+bit">#</a> -</h4> -</div> - +<h3 class="boxed">Structure of TEXT bit</h3> <p>This is very simple. All the text for the document is stored in a single bit of the Quill CONTENTS. The text is stored as little endian 16 bit unicode strings.</p> - - <a name="Structure+of+PLC+bit"></a> -<div class="h4"> -<h4>Structure of PLC bit<a title="Permanent link" class="headerlink" href="#Structure+of+PLC+bit">#</a> -</h4> -</div> - +<h3 class="boxed">Structure of PLC bit</h3> <p>The first four bytes seem to hold the count of the entries in the bit, and the second four bytes seem to hold the type. There is then some pre-data, and then data for each of the entries, the exact format dependant on the type.</p> - <p>Type 0 has 4 2 byte unsigned ints, then a pair of 2 byte unsigned ints for each entry.</p> - <p>Type 4 has 4 2 byte unsigned ints, then a pair of 4 byte unsigned ints for each entry.</p> - <p>Type 8 has 7 2 byte unsigned ints, then a pair of 4 byte unsigned ints for each entry.</p> - <p>Type 12 holds hyperlinks, and is very much more complex. See <a href="https://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hpbf/model/qcbits/QCPLCBit.java?view=markup"><span class="codefrag">org.apache.poi.hpbf.model.qcbits.QCPLCBit</span></a> for our best guess as to how the contents match up.</p> - - - - -<div id="authors" align="right">by Nick Burch</div> -</div> </div> + +<p align="right"> +<font size="-2">by Nick Burch</font> +</p> +</div> +<!--+ + |end content + +--> +<div class="clearboth"> </div> </div> -</td> -<!--================= end Content ==================--> -</tr> -</tbody> -</table> -<!--================= end Main ==================--> -<!--================= start Footer ==================--> <div id="footer"> -<table summary="footer" cellspacing="0" cellpadding="4" width="100%" border="0"> -<tbody> -<tr> -<!--================= start Copyright ==================--> -<td colspan="2"> -<div align="center"> +<!--+ + |start bottomstrip + +--> +<div class="lastmodified"> +<script type="text/javascript"><!-- +document.write("Last Published: " + document.lastModified); +// --></script> +</div> <div class="copyright"> - Copyright © 2002-2018 The Apache Software Foundation. All rights reserved.<br> - Apache, Apache POI, and the Apache POI logo are registered trademarks or - trademarks of The Apache Software Foundation in the U.S. and/or other countries. - </div> -</div> -</td> -<!--================= end Copyright ==================--> -</tr> -<tr> -<td align="left"> -<!--================= start Host ==================--> -<!--================= end Host ==================--></td><td align="right"> -<!--================= start Credits ==================--> -<div align="right"> -<div class="credit"></div> -</div> -<!--================= end Credits ==================--> -</td> -</tr> -</tbody> -</table> + Copyright © + 2001-2018 <a href="https://www.apache.org/">The Apache Software Foundation</a> +</div> +<div id="feedback"> + Send feedback about the website to: + <a id="feedbackto" href="mailto:[email protected]?subject=Feedback%C2%A0components/hpbf/file-format.html">[email protected]</a> +</div> +<!--+ + |end bottomstrip + +--> </div> -<!--================= end Footer ==================--> </body> </html> Modified: poi/site/publish/components/hpbf/index.html URL: http://svn.apache.org/viewvc/poi/site/publish/components/hpbf/index.html?rev=1836244&r1=1836243&r2=1836244&view=diff ============================================================================== --- poi/site/publish/components/hpbf/index.html (original) +++ poi/site/publish/components/hpbf/index.html Wed Jul 18 23:27:21 2018 @@ -1,162 +1,317 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<!--*** This is a generated file. Do not edit. ***--> -<link rel="stylesheet" href="../skin/tigris.css" type="text/css"> -<link rel="stylesheet" href="../skin/mysite.css" type="text/css"> -<link rel="stylesheet" href="../skin/site.css" type="text/css"> -<link media="print" rel="stylesheet" href="../skin/print.css" type="text/css"> +<meta content="Apache Forrest" name="Generator"> +<meta name="Forrest-version" content="0.9"> +<meta name="Forrest-skin-name" content="pelt"> <title>POI-HPBF - Java API To Access Microsoft Publisher Format Files</title> +<link type="text/css" href="../../skin/basic.css" rel="stylesheet"> +<link media="screen" type="text/css" href="../../skin/screen.css" rel="stylesheet"> +<link media="print" type="text/css" href="../../skin/print.css" rel="stylesheet"> +<link type="text/css" href="../../skin/profile.css" rel="stylesheet"> +<script src="../../skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="../../skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="../../skin/fontsize.js" language="javascript" type="text/javascript"></script> +<link rel="shortcut icon" href="../../images/favicon.ico"> </head> -<body bgcolor="white" class="composite"> -<!--================= start Banner ==================--> -<div id="banner"> -<table width="100%" cellpadding="8" cellspacing="0" summary="banner" border="0"> -<tbody> -<tr> -<!--================= start Group Logo ==================--> -<td width="50%" align="left"> -<div class="groupLogo"> -<a href="https://www.apache.org"><img border="0" class="logoImage" alt="The Apache Software Foundation" src="../resources/images/asf_logo.png"></a> -</div> -</td> -<!--================= end Group Logo ==================--> -<!--================= start Project Logo ==================--><td width="50%" align="right"> -<div align="right" class="projectLogo"> -<a href="https://donate.apache.org/"><img border="0" class="logoImage" alt="Support Apache" src="../resources/images/support-asf.png" width="120" height="120" title="Your donation helps The Apache Software Foundation ensure its community-driven software remains available to billions of users at absolutely no cost."></a><a href="https://poi.apache.org/"><img border="0" class="logoImage" alt="Apache POI" src="../resources/images/pb-poi.png" width="120" height="120" title="Apache POI - the Java API for Microsoft Documents"></a> -</div> -</td> -<!--================= end Project Logo ==================--> -</tr> -</tbody> -</table> -</div> -<!--================= end Banner ==================--> -<!--================= start Main ==================--> -<table width="100%" cellpadding="0" cellspacing="0" border="0" summary="nav" id="breadcrumbs"> -<tbody> -<!--================= start Status ==================--> -<tr class="status"> -<td> -<!--================= start BreadCrumb ==================--><a href="https://www.apache.org/">Apache</a> | <a href="https://poi.apache.org/">POI</a><a href=""></a> -<!--================= end BreadCrumb ==================--></td><td id="tabs"> -<!--================= start Tabs ==================--> -<div class="tab"> -<span class="selectedTab"><a class="base-selected" href="../index.html">Home</a></span> | <script language="Javascript" type="text/javascript"> -function printit() { -if (window.print) { - window.print() ; -} else { - var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH="0" HEIGHT="0" CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>'; -document.body.insertAdjacentHTML('beforeEnd', WebBrowser); - WebBrowser1.ExecWB(6, 2);//Use a 1 vs. a 2 for a prompting dialog box WebBrowser1.outerHTML = ""; -} -} -</script><script language="Javascript" type="text/javascript"> -var NS = (navigator.appName == "Netscape"); -var VERSION = parseInt(navigator.appVersion); -if (VERSION > 3) { - document.write(' <a title="PRINT this page OUT" href="javascript:printit()">PRINT</a>'); -} -</script> -</div> -<!--================= end Tabs ==================--> -</td> -</tr> -</tbody> -</table> -<!--================= end Status ==================--> -<table id="main" width="100%" cellpadding="8" cellspacing="0" summary="" border="0"> -<tbody> -<tr valign="top"> -<!--================= start Menu ==================--> -<td id="leftcol"> -<div id="navcolumn"> -<div class="menuBar"> -<div class="menu"> -<span class="menuLabel">Apache POI</span> -<div class="menuItem"> -<a href="../index.html">Top</a> -</div> -</div> -<div class="menu"> -<span class="menuLabel">HPBF</span> -<div class="menuItem"> -<span class="menuSelected">Overview</span> -</div> -<div class="menuItem"> -<a href="file-format.xml">File Format</a> -</div> -</div> -<center> -<a href="https://www.apache.org/events/current-event.html"><img src="https://www.apache.org/events/current-event-125x125.png"></a> -</center> -</div> -</div> -<form target="_blank" action="https://www.google.com/search" method="get"> -<table summary="search" border="0" cellspacing="0" cellpadding="0"> -<tr> -<td><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap"> - Search Apache POI<br> -<input value="poi.apache.org" name="sitesearch" type="hidden"><input size="10" name="q" id="query" type="text"><img height="1" width="5" alt="" src="../skin/images/spacer.gif" class="spacer"><input name="Search" value="GO" type="submit"></td><td><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> -</tr> -<tr> -<td colspan="3"><img height="7" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> -</tr> -<tr> -<td class="bottom-left-thick"></td><td bgcolor="#a5b6c6"><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td class="bottom-right-thick"></td> -</tr> -</table> +<body onload="init()"> +<script type="text/javascript">ndeSetTextSize();</script> +<div id="top"> +<!--+ + |breadtrail + +--> +<div class="breadtrail"> +<a href="https://www.apache.org">Apache Software Foundation</a> > <a href="https://poi.apache.org">Apache POI</a><script src="../../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script> +</div> +<!--+ + |header + +--> +<div class="header"> +<!--+ + |start group logo + +--> +<div class="grouplogo"> +<a href="https://www.apache.org"><img class="logoImage" alt="Apache Software Foundation" src="../../images/group-logo.png" title="The Apache Software Foundation is a cornerstone of the modern Open Source software ecosystem – supporting some of the most widely used and important software solutions powering today's Internet economy."></a> +</div> +<!--+ + |end group logo + +--> +<!--+ + |start Project Logo + +--> +<div class="projectlogo"> +<a href="https://poi.apache.org"><img class="logoImage" alt="Apache POI" src="../../images/project-logo.png" title="Apache POI is well-known in the Java field as a library for reading and writing Microsoft Office file formats, such as Excel, PowerPoint, Word, Visio, Publisher and Outlook. It supports both the older (OLE2) and new (OOXML - Office Open XML) formats."></a> +</div> +<!--+ + |end Project Logo + +--> +<!--+ + |start Search + +--> +<div class="searchbox"> +<form action="http://www.google.com/search" method="get" class="roundtopsmall"> +<input value="poi.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google"> + <input name="Search" value="Search" type="submit"> </form> -</td> -<!--================= end Menu ==================--> -<!--================= start Content ==================--><td> -<div id="bodycol"> -<div class="app"> -<div align="center"> -<h1>POI-HPBF - Java API To Access Microsoft Publisher Format Files</h1> </div> -<div class="h3"> - +<!--+ + |end search + +--> +<!--+ + |start Tabs + +--> +<ul id="tabs"> +<li> +<a class="unselected" href="../../index.html">Home</a> +</li> +<li> +<a class="unselected" href="../../help/index.html">Help</a> +</li> +<li class="current"> +<a class="selected" href="../../components/index.html">Component APIs</a> +</li> +<li> +<a class="unselected" href="../../devel/index.html">Getting Involved</a> +</li> +</ul> +<!--+ + |end Tabs + +--> +</div> +</div> +<div id="main"> +<div id="publishedStrip"> +<!--+ + |start Subtabs + +--> +<div id="level2tabs"></div> +<!--+ + |end Endtabs + +--> +<script type="text/javascript"><!-- +document.write("Last Published: " + document.lastModified); +// --></script> +</div> +<!--+ + |breadtrail + +--> +<div class="breadtrail"> - + + </div> +<!--+ + |start Menu, mainarea + +--> +<!--+ + |start Menu + +--> +<div id="menu"> +<div onclick="SwitchMenu('menu_selected_1.1', '../../skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Component APIs</div> +<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;"> +<div class="menuitem"> +<a href="../../components/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../apidocs/index.html">Javadocs</a> +</div> +<div onclick="SwitchMenu('menu_1.1.3', '../../skin/')" id="menu_1.1.3Title" class="menutitle">Excel (HSSF/XSSF)</div> +<div id="menu_1.1.3" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/spreadsheet/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/quick-guide.html">Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/how-to.html">HOWTO</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/converting.html">HSSF to SS Converting</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/formula.html">Formula Support</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/eval.html">Formula Evaluation</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/eval-devguide.html">Eval Dev Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/examples.html">Examples</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/use-case.html">Use Case</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/diagrams.html">Pictorial Docs</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/limitations.html">Limitations</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/user-defined-functions.html">User Defined Functions</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/excelant.html">ExcelAnt Tests</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/hacking-hssf.html">Hacking HSSF</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/record-generator.html">Record Generator</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/chart.html">Charts</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.4', '../../skin/')" id="menu_1.1.4Title" class="menutitle">PowerPoint (HSLF/XSLF)</div> +<div id="menu_1.1.4" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/slideshow/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/quick-guide.html">Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/how-to-shapes.html">HSLF Cookbook</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/xslf-cookbook.html">XSLF Cookbook</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/ppt-file-format.html">PPT File Format</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.5', '../../skin/')" id="menu_1.1.5Title" class="menutitle">Word (HWPF/XWPF)</div> +<div id="menu_1.1.5" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/document/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/document/quick-guide.html">HWPF Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/document/quick-guide-xwpf.html">XWPF Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/document/docoverview.html">HWPF Format</a> +</div> +<div class="menuitem"> +<a href="../../components/document/projectplan.html">HWPF Project plan</a> +</div> +</div> +<div class="menuitem"> +<a href="../../components/hsmf/index.html">Outlook (HSMF)</a> +</div> +<div class="menuitem"> +<a href="../../components/diagram/index.html">Visio (HDGF+XDGF)</a> +</div> +<div onclick="SwitchMenu('menu_selected_1.1.8', '../../skin/')" id="menu_selected_1.1.8Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Publisher (HPBF)</div> +<div id="menu_selected_1.1.8" class="selectedmenuitemgroup" style="display: block;"> +<div class="menupage"> +<div class="menupagetitle">Overview</div> +</div> +<div class="menuitem"> +<a href="../../components/hpbf/file-format.html">File Format</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.9', '../../skin/')" id="menu_1.1.9Title" class="menutitle">OLE2 Filesystem (POIFS)</div> +<div id="menu_1.1.9" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/poifs/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/how-to.html">How To</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/embeded.html">Embedded Documents</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/fileformat.html">File System Documentation</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/usecases.html">Use Cases</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/design.html">Design</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.10', '../../skin/')" id="menu_1.1.10Title" class="menutitle">OLE2 Document Props (HPSF)</div> +<div id="menu_1.1.10" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/hpsf/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/how-to.html">How To</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/thumbnails.html">Thumbnails</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/internals.html">Internals</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/todo.html">To Do</a> +</div> +</div> +<div class="menuitem"> +<a href="../../components/hmef/index.html">TNEF (HMEF) for winmail.dat</a> +</div> +<div class="menuitem"> +<a href="../../components/oxml4j/index.html">OpenXML4J (OOXML)</a> +</div> +<div class="menuitem"> +<a href="../../components/logging.html">Logging framework</a> +</div> +</div> +<div id="credit"> +<hr> +<a href="https://www.apache.org/events/current-event.html"><img border="0" title="Apache Event" alt="Apache Event - logo" src="http://www.apache.org/events/current-event-125x125.png" style="width: 125px;height: 125px;"></a> +</div> +<div id="roundbottom"> +<img style="display: none" class="corner" height="15" width="15" alt="" src="../../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div> +<!--+ + |alternative credits + +--> +<div id="credit2"> +<a href="https://donate.apache.org/"><img border="0" title="Support Apache" alt="Support Apache - logo" src="../../images/support-asf.png" style="width: 125px;height: 125px;"></a> +</div> +</div> +<!--+ + |end Menu + +--> +<!--+ + |start content + +--> +<div id="content"> +<h1>POI-HPBF - Java API To Access Microsoft Publisher Format Files</h1> +<h3>Overview</h3> +<div id="front-matter"></div> <a name="Overview"></a> -<div class="h3"> -<h3>Overview<a title="Permanent link" class="headerlink" href="#Overview">#</a> -</h3> -</div> - - - +<h2 class="boxed">Overview</h2> +<div class="section"> <p>HPBF is the POI Project's pure Java implementation of the Publisher file format.</p> - <p>Currently, HPBF is in an early stage, whilst we try to figure out the file format. So far, we have basic text extraction support, and are able to read some parts within the file. Writing is not yet supported, as we are unable to make sense of the Contents stream, which we think has lots of offsets to other parts of the file.</p> - <p>Our initial aim is to produce a text extractor for the format (now done), and be able to extract hyperlinks from within the document (partly supported). Additional low level code to process the file format may follow, if there is demand and developer interest warrants it.</p> - <p>Text Extraction is available via the <em>org.apache.poi.hpbf.extractor.PublisherTextExtractor</em> class.</p> - <p>At this time, there is no <em>usermodel</em> api or similar. There is only low level support for certain parts of the file, but by no means all of it.</p> - <p>Our current understanding of the file format is documented - <a href="file-format.html">here</a>.</p> - + <a href="../../components/hpbf/file-format.html">here</a>.</p> <p>As of 2017, we are unaware of a public format specification for Microsoft Publisher .pub files. This format was not included in the Microsoft Open Specifications Promise with the rest of the @@ -165,9 +320,7 @@ if (VERSION > 3) { If this changes in the future, perhaps we will see a spec published on the <a href="https://msdn.microsoft.com/en-us/library/cc313105(v=office.12).aspx">Microsoft Office File Format Open Specification Technical Documentation</a>. </p> - - -<div class="frame note"> +<div class="note"> <div class="label">Note</div> <div class="content"> This code currently lives the @@ -176,56 +329,44 @@ if (VERSION > 3) { you have the Scratchpad Jar on your classpath, or a dependency defined on the <em>poi-scratchpad</em> artifact - the main POI jar is not enough! See the - <a href="/overview.html#components">POI Components Map</a> + <a href="../../components/">POI Components Map</a> for more details. </div> </div> - - - -<div id="authors" align="right">by Nick Burch</div> -</div> </div> + +<p align="right"> +<font size="-2">by Nick Burch</font> +</p> +</div> +<!--+ + |end content + +--> +<div class="clearboth"> </div> </div> -</td> -<!--================= end Content ==================--> -</tr> -</tbody> -</table> -<!--================= end Main ==================--> -<!--================= start Footer ==================--> <div id="footer"> -<table summary="footer" cellspacing="0" cellpadding="4" width="100%" border="0"> -<tbody> -<tr> -<!--================= start Copyright ==================--> -<td colspan="2"> -<div align="center"> +<!--+ + |start bottomstrip + +--> +<div class="lastmodified"> +<script type="text/javascript"><!-- +document.write("Last Published: " + document.lastModified); +// --></script> +</div> <div class="copyright"> - Copyright © 2002-2018 The Apache Software Foundation. All rights reserved.<br> - Apache, Apache POI, and the Apache POI logo are registered trademarks or - trademarks of The Apache Software Foundation in the U.S. and/or other countries. - </div> -</div> -</td> -<!--================= end Copyright ==================--> -</tr> -<tr> -<td align="left"> -<!--================= start Host ==================--> -<!--================= end Host ==================--></td><td align="right"> -<!--================= start Credits ==================--> -<div align="right"> -<div class="credit"> -<a href="http://validator.w3.org/check/referer"><img width="88" height="31" alt="Valid HTML 4.01!" src="../skin/images/valid-html401.png" class="logoImage"></a><a href="http://jigsaw.w3.org/css-validator/"><img width="88" height="31" alt="Valid CSS!" src="../skin/images/vcss.png" class="logoImage"></a><a href="https://forrest.apache.org/"><img border="0" class="logoImage" alt="Built with Apache Forrest" src="../skin/images/built-with-forrest-button.png" width="88" height="31"></a> -</div> -</div> -<!--================= end Credits ==================--> -</td> -</tr> -</tbody> -</table> + Copyright © + 2001-2018 <a href="https://www.apache.org/">The Apache Software Foundation</a> +</div> +<div id="logos"> +<a href="http://validator.w3.org/check/referer"><img style="height: 31px; width: 88px;" title="Valid HTML 4.01!" alt="Valid HTML 4.01!" src="../../skin/images/valid-html401.png" class="logoImage"></a><a href="http://jigsaw.w3.org/css-validator/check/referer"><img style="height: 31px; width: 88px;" title="Valid CSS!" alt="Valid CSS!" src="../../skin/images/vcss.png" class="logoImage"></a> +</div> +<div id="feedback"> + Send feedback about the website to: + <a id="feedbackto" href="mailto:[email protected]?subject=Feedback%C2%A0components/hpbf/index.html">[email protected]</a> +</div> +<!--+ + |end bottomstrip + +--> </div> -<!--================= end Footer ==================--> </body> </html> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
