123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- /* ====================================================================
- 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.examples.hpsf;
-
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
-
- import org.apache.poi.hpsf.Property;
- import org.apache.poi.hpsf.PropertySet;
- import org.apache.poi.hpsf.Section;
- import org.apache.poi.hpsf.SummaryInformation;
- import org.apache.poi.hpsf.Variant;
- import org.apache.poi.hpsf.WritingNotSupportedException;
- import org.apache.poi.hpsf.wellknown.PropertyIDMap;
- import org.apache.poi.poifs.filesystem.POIFSFileSystem;
-
- /**
- * <p>This class is a simple sample application showing how to create a property
- * set and write it to disk.</p>
- */
- @SuppressWarnings({"java:S106","java:S4823"})
- public final class WriteTitle {
-
- private WriteTitle() {}
-
- /**
- * <p>Runs the example program.</p>
- *
- * @param args Command-line arguments. The first and only command-line
- * argument is the name of the POI file system to create.
- * @throws IOException if any I/O exception occurs.
- * @throws WritingNotSupportedException if HPSF does not (yet) support
- * writing a certain property type.
- */
- public static void main(final String[] args)
- throws WritingNotSupportedException, IOException
- {
- /* Check whether we have exactly one command-line argument. */
- if (args.length != 1)
- {
- System.err.println("Usage: " + WriteTitle.class.getName() + "destinationPOIFS");
- System.exit(1);
- }
-
- final String fileName = args[0];
-
- /* Create a mutable property set. Initially it contains a single section
- * with no properties. */
- final PropertySet mps = new PropertySet();
-
- /* Retrieve the section the property set already contains. */
- final Section ms = mps.getSections().get(0);
-
- /* Turn the property set into a summary information property. This is
- * done by setting the format ID of its first section to
- * SectionIDMap.SUMMARY_INFORMATION_ID. */
- ms.setFormatID(SummaryInformation.FORMAT_ID);
-
- /* Create an empty property. */
- final Property p = new Property();
-
- /* Fill the property with appropriate settings so that it specifies the
- * document's title. */
- p.setID(PropertyIDMap.PID_TITLE);
- p.setType(Variant.VT_LPWSTR);
- p.setValue("Sample title");
-
- /* Place the property into the section. */
- ms.setProperty(p);
-
- /* Create the POI file system the property set is to be written to.
- * For writing the property set into a POI file system it has to be
- * handed over to the POIFS.createDocument() method as an input stream
- * which produces the bytes making out the property set stream. */
- try (final POIFSFileSystem poiFs = new POIFSFileSystem();
- final InputStream is = mps.toInputStream();
- final FileOutputStream fos = new FileOutputStream(fileName)) {
-
- /* Create the summary information property set in the POI file
- * system. It is given the default name most (if not all) summary
- * information property sets have. */
- poiFs.createDocument(is, SummaryInformation.DEFAULT_STREAM_NAME);
-
- /* Write the whole POI file system to a disk file. */
- poiFs.writeFilesystem(fos);
- }
- }
- }
|