12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- /* ====================================================================
- 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.xwpf.usermodel;
-
- import javax.xml.namespace.QName;
-
- import com.microsoft.schemas.office.office.CTSignatureLine;
- import com.microsoft.schemas.vml.CTImageData;
- import org.apache.poi.common.usermodel.PictureType;
- import org.apache.poi.ooxml.util.XPathHelper;
- import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
- import org.apache.poi.poifs.crypt.dsig.SignatureLine;
- import org.apache.xmlbeans.XmlException;
- import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPicture;
-
- public class XWPFSignatureLine extends SignatureLine {
- static final String NS_OOXML_WP_MAIN = "http://schemas.openxmlformats.org/wordprocessingml/2006/main";
- private static final String MS_VML_URN = "urn:schemas-microsoft-com:vml";
-
- private CTSignatureLine line;
-
- public void parse(XWPFDocument doc) throws XmlException {
- line = XPathHelper.selectProperty(doc.getDocument(), CTSignatureLine.class, null,
- new QName[]{new QName(NS_OOXML_WP_MAIN, "body")},
- new QName[]{new QName(NS_OOXML_WP_MAIN, "p")},
- new QName[]{new QName(NS_OOXML_WP_MAIN, "r")},
- new QName[]{new QName(NS_OOXML_WP_MAIN, "pict")},
- new QName[]{new QName(MS_VML_URN, "shape")},
- new QName[]{QNAME_SIGNATURE_LINE});
- if (line != null) {
- setSignatureShape(line);
- parse();
- }
- }
-
- public void add(XWPFParagraph paragraph) {
- XWPFRun r = paragraph.createRun();
- CTPicture pict = r.getCTR().addNewPict();
- add(pict, (image, type) -> paragraph.getDocument().addPictureData(image, mapType(type)));
- }
-
- @Override
- protected void setRelationId(CTImageData imageData, String relId) {
- imageData.setId2(relId);
- }
-
- private static int mapType(PictureType type) throws InvalidFormatException {
- switch (type) {
- case BMP:
- return Document.PICTURE_TYPE_BMP;
- case DIB:
- return Document.PICTURE_TYPE_DIB;
- case EMF:
- return Document.PICTURE_TYPE_EMF;
- case EPS:
- return Document.PICTURE_TYPE_EPS;
- case GIF:
- return Document.PICTURE_TYPE_GIF;
- case JPEG:
- return Document.PICTURE_TYPE_JPEG;
- case PICT:
- return Document.PICTURE_TYPE_PICT;
- case PNG:
- return Document.PICTURE_TYPE_PNG;
- case TIFF:
- return Document.PICTURE_TYPE_TIFF;
- case WMF:
- return Document.PICTURE_TYPE_WMF;
- case WPG:
- return Document.PICTURE_TYPE_WPG;
- default:
- throw new InvalidFormatException("Unsupported picture format "+type);
- }
- }
- }
|