public Part getBinaryPart( ContentTypeManager ctm, String resolvedPartUri) throws Docx4JException { Part part = null; InputStream is = null; try { is = partStore.loadPart(resolvedPartUri); //in = partByteArrays.get(resolvedPartUri).getInputStream(); part = new BinaryPart( new PartName("/" + resolvedPartUri)); // Set content type part.setContentType( new ContentType( ctm.getContentType(new PartName("/" + resolvedPartUri)) ) ); ((BinaryPart)part).setBinaryData(is); log.info("Stored as BinaryData" ); } catch (Exception ioe) { ioe.printStackTrace() ; } finally { IOUtils.closeQuietly(is); } return part; }
protected static void shallowCopyContent(Part source, Part destination) throws Docx4JException { if (source instanceof BinaryPart) { ((BinaryPart)destination).setBinaryData(((BinaryPart)source).getBuffer()); } else if (source instanceof JaxbXmlPart) { ((JaxbXmlPart)destination).setJaxbElement(((JaxbXmlPart)source).getJaxbElement()); ((JaxbXmlPart)destination).setJAXBContext(((JaxbXmlPart)source).getJAXBContext()); } else if (source instanceof CustomXmlDataStoragePart) { ((CustomXmlDataStoragePart)destination).setData(((CustomXmlDataStoragePart)source).getData()); } else if (source instanceof XmlPart) { ((XmlPart)destination).setDocument(((XmlPart)source).getDocument()); } else { throw new IllegalArgumentException("Dont know how to handle a part of type " + source.getClass().getName()); } } }
protected boolean isInternalImage(AbstractWordXmlPicture picture, Relationship relationship, BinaryPart part) throws Docx4JException { //treat external images, that are loaded, as internal images return (part != null) && ((part.getExternalTarget() == null) || (part.getBuffer() != null)); }
/** Get the image base name * * @param binaryPart * @return */ protected String getImageName(BinaryPart binaryPart) { String partname = null; int p = -1; if (binaryPart.getExternalTarget() != null) { partname = binaryPart.getExternalTarget().getValue(); p = partname.lastIndexOf('\\'); if (p == -1) { p = partname.lastIndexOf('/'); } } else { partname = binaryPart.getPartName().toString(); p = partname.lastIndexOf('/'); } return (p > -1 ? partname.substring(p + 1) : partname); }
if (this.getPackage()==null) { log.warn("No package owns this part, and/or you didn't set its contents."); return null; PartStore partStore = this.getPackage().getSourcePartStore(); if (partStore==null) { log.warn("No PartStore configured for this package"); String name = this.getPartName().getName(); this.setContentLengthAsLoaded( partStore.getPartSize( name.substring(1))); } catch (UnsupportedOperationException uoe) {}
/** Get the image data of the buffer * * @param binaryPart * @return */ protected byte[] getImageData(BinaryPart binaryPart) { return binaryPart.getBytes(); }
public boolean isContentEqual(Part other) throws Docx4JException { if (!(other instanceof BinaryPart)) return false; ByteBuffer thisBB = getBuffer(); ByteBuffer thatBB = ((BinaryPart)other).getBuffer(); return thisBB.equals(thatBB); // if (m_ContentType != arg.m_ContentType) // return false; // if (m_Image.GetLongLength(0) != arg.m_Image.GetLongLength(0)) // return false; // // // Compare the arrays byte by byte // long length = m_Image.GetLongLength(0); // for (long n = 0; n < length; n++) // if (m_Image[n] != arg.m_Image[n]) // return false; // return true; }
/** * This method replaces images with 2x2 pixels (which Word scales appropriately) * * @throws InvalidFormatException */ private void handleImages() throws InvalidFormatException { // Apply map to headers/footers for (Entry<PartName, Part> entry : pkg.getParts().getParts().entrySet()) { Part p = entry.getValue(); if (p instanceof ImagePngPart || p instanceof ImageGifPart || p instanceof ImageJpegPart || p instanceof ImageBmpPart || p instanceof ImageTiffPart // Others treated as unsafe ) { ((BinaryPart)p).setBinaryData(PNG_IMAGE_DATA); } } }
protected static BinaryPart createBinaryPart(String absoluteTarget, String contentType) { ExternalTarget externalTarget = new ExternalTarget(absoluteTarget); BinaryPart ret = null; if (ContentTypes.IMAGE_JPEG.equals(contentType)) ret = new ImageJpegPart(externalTarget); else if (ContentTypes.IMAGE_PNG.equals(contentType)) ret = new ImagePngPart(externalTarget); else if (ContentTypes.IMAGE_GIF.equals(contentType)) ret = new ImageGifPart(externalTarget); else if (ContentTypes.IMAGE_TIFF.equals(contentType)) ret = new ImageTiffPart(externalTarget); else if (ContentTypes.IMAGE_BMP.equals(contentType)) ret = new ImageBmpPart(externalTarget); else if (ContentTypes.IMAGE_EMF.equals(contentType)) ret = new MetafileEmfPart(externalTarget); else if (ContentTypes.IMAGE_WMF.equals(contentType)) ret = new MetafileWmfPart(externalTarget); else ret = new BinaryPart(externalTarget); return ret; }
+ " of type " + r.getType() ); BinaryPart bp = ExternalResourceUtils.getExternalResource(r.getTarget()); pkg.getExternalResources().put(bp.getExternalTarget(), bp); } else { log.info("Encountered (but not loading) external resource " + r.getTarget()
protected String createEncodedImage(BinaryPart binaryPart, byte[] bytes) throws Docx4JException { String uri = null; byte[] encoded = Base64.encodeBase64(bytes, true); try { uri = "data:" + binaryPart.getContentType() + ";base64," + (new String(encoded, "UTF-8")); } catch (UnsupportedEncodingException uue) { uri = "data:" + binaryPart.getContentType() + ";base64," + (new String(encoded)); } return uri; }
if (this.getPackage()==null) { log.warn("No package owns this part, and/or you didn't set its contents."); return null; PartStore partStore = this.getPackage().getSourcePartStore(); if (partStore==null) { log.warn("No PartStore configured for this package"); String name = this.getPartName().getName(); this.setContentLengthAsLoaded( partStore.getPartSize( name.substring(1))); } catch (UnsupportedOperationException uoe) {}
protected boolean isInternalImage(AbstractWordXmlPicture picture, Relationship relationship, BinaryPart part) throws Docx4JException { //treat external images, that are loaded, as internal images return (part != null) && ((part.getExternalTarget() == null) || (part.getBuffer() != null)); }
protected void saveRawBinaryPart(ZipOutputStream out, Part part) throws Docx4JException { // Drop the leading '/' String resolvedPartUri = part.getPartName().getName().substring(1); try { // Add ZIP entry to output stream. out.putNextEntry(new ZipEntry(resolvedPartUri)); out.write( ((BinaryPart)part).getBytes() ); // Complete the entry out.closeEntry(); } catch (Exception e ) { throw new Docx4JException("Failed to put binary part", e); } log.info( "success writing part: " + resolvedPartUri); }
/** Get the image base name * * @param binaryPart * @return */ protected String getImageName(BinaryPart binaryPart) { String partname = null; int p = -1; if (binaryPart.getExternalTarget() != null) { partname = binaryPart.getExternalTarget().getValue(); p = partname.lastIndexOf('\\'); if (p == -1) { p = partname.lastIndexOf('/'); } } else { partname = binaryPart.getPartName().toString(); p = partname.lastIndexOf('/'); } return (p > -1 ? partname.substring(p + 1) : partname); }
public byte[] getBytes() { ByteBuffer bb = this.getBuffer(); bb.rewind(); byte[] bytes = new byte[bb.limit()]; bb.get(bytes, 0, bytes.length); bb.rewind(); return bytes; }
public static BinaryPart getExternalResource(String absoluteTarget) throws Docx4JException { URI targetURI = null; URL targetURL = null; int p = absoluteTarget.lastIndexOf('.'); String fileExtension = (p > -1 ? absoluteTarget.substring(p+1).toLowerCase() : null); String contentType = (fileExtension != null ? CONTENT_TYPE_MAP.get(fileExtension) : null); BinaryPart binaryPart = null; InputStream inStream = null; try { targetURI = new URI(absoluteTarget.replace('\\', '/')); } catch (URISyntaxException use) { throw new Docx4JException("Invalid absolute Target: '" + absoluteTarget + "'", use); } try { targetURL = targetURI.toURL(); } catch (MalformedURLException mue) { throw new Docx4JException("Invalid absolute Target: '" + absoluteTarget + "'", mue); } try { inStream = targetURL.openStream(); binaryPart = createBinaryPart(absoluteTarget, contentType); binaryPart.setBinaryData(inStream); } catch (IOException ioe) { throw new Docx4JException("Could not load external resource: '" + absoluteTarget + "'", ioe); } return binaryPart; }
return JaxbDmlPart.newPartForContentType(contentType, partName); } catch (Exception e) { return new BinaryPart( new PartName(partName)); return JaxbPmlPart.newPartForContentType(contentType, partName); } catch (Exception e) { return new BinaryPart( new PartName(partName)); return new WorkbookPart(new PartName(partName)); } catch (Exception e) { return new BinaryPart( new PartName(partName)); return JaxbSmlPart.newPartForContentType(contentType, partName); } catch (Exception e) { return new BinaryPart( new PartName(partName)); return (Part) cons.newInstance(pn); } catch (Exception e) { return new BinaryPart( new PartName(partName)); return new BinaryPart( new PartName(partName));
+ " of type " + r.getType() ); BinaryPart bp = ExternalResourceUtils.getExternalResource(r.getTarget()); pkg.getExternalResources().put(bp.getExternalTarget(), bp); } else { log.debug("Encountered (but not loading) external resource " + r.getTarget()