Skip to content

Commit

Permalink
放弃之前修改,新增pdf附件类型,通过ole方式嵌入pdf附件
Browse files Browse the repository at this point in the history
  • Loading branch information
wangwenwwx committed Mar 18, 2024
1 parent 93f94c6 commit 007312d
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 51 deletions.
30 changes: 15 additions & 15 deletions poi-tl/src/main/java/com/deepoove/poi/data/AttachmentType.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,23 +27,23 @@ public enum AttachmentType {
new String[]{"504B0304", "DOCF11E0"},
"Word.Document.12",
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
POIXMLDocument.PACK_OBJECT_REL_TYPE,
POIXMLDocument.PACK_OBJECT_REL_TYPE,
new String[]{".docx", ".doc"},
"data:image/png;base64,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"),
XLSX(
XLSX(
new String[]{"504B0304", "DOCF11E0"},
"Excel.Sheet.12",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
POIXMLDocument.PACK_OBJECT_REL_TYPE,
POIXMLDocument.PACK_OBJECT_REL_TYPE,
new String[]{".xlsx", ".xls"},
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABXFJREFUeF7tW3tQVFUc/u7dxQU1bPJZoBLQDIWwV0EqnRo0iLKEQEbyQVpjCgnGkDkRwWypNWpOBiNPS0GzUEHy1eAjBcEnfzQp5oROWWg6IiEUk+De25xloL3cu487tevZ7v7+2/O49/d953e/3zlnz2GgcmNowx9qCJ/wvaHxvLP8umcERBoiPdvQwTFGgeMFhmNY6CGAA+DppfEYdtpwusMZJDiFgDBD2IjuuzzHsqyeFwSOIUAZTLAE0KUJ4Aycn5HX6hme5xgGnADTqPopGU2XIUCfow/mGU3viPaOqh7ASCVg5dpSR0BgXqBu8M1hHCMInMAwHCAQoGRkvf4tWOoICMqKGD7Io4eMqt4EtleYQhwBlBoN4HK4yUawWQwEDmAediZYuXf5hPrka7Wabkf5cRco/Ca++jJ5vikLEAJ4sGcc9UKlz/XV+4LVsEq7KWq/76VqFgwE1RLA8GzE3llVZ90EqPUTcEeA+xNwa4BbBKnNAiey6zBEN0SU12dWx/f/nhOUhLlBL9ud99+tz8G5VvEWA9Ui6CaAtghInbZENtwECCg6WmIxFCP8JyNs/CTZ+sKjxRb7URcBAaP8UZW2U+Jwj7EH4e8/YRFI+euboR8bKqr/804XlpSl4lyL5W0/6gggCFYlfICZ3AsSsBsO5mFzfZmkPCr4GaxPWispzz9SgE21n1kVMGcshhSLoE6rw5ncExLHr9++gZj1MyTlX6Zsw2MPPSoqP/tTIxaXpYLnedcjgHhMtCBl2mKJ82sOrMP2U1/1l88Kj0du7HuSdqnlaThx6aTN9EVlBPR53ZBdi6G6oSIQTVcvYG5xcn+Z3OhvaSjHJzWf2gRPGpSmFMFrkHi3jeTyPiPzgJARFjeVpdF4seK/mwcQHSB6MNBW7MhCzfmDSAxPQE5stqi6vasdcXkJaO+6bRcBVIqguecVqV8g6MEgEZi6H48jfVsG5JS/jxy70AOgnoCJ4zhsWSRV8jlF80HC39zqmxuwdOsye7Gb2lFPAHHy46Q1iA6OEgHb1Vhl+gTM7cUNcfi1reX/R8DI+0bg8Ns1VoEVHytFwbdFisCTxjHTn4VWqxX1M1/MKBHAvoc4ZDGUEZ2OV59aKAvwZmcrotbFKAZPOlCdBs0RLX8uE8lT5lkESTThwrUfFJPgEgQEjgpAZdoOq+AIeEKCUnOJT2Db4jKE+IonIycvn8KTAeLF0co9q0HEUYlRnwXkprpXbv2Csvpy5MZJp8DT10bj1h9tdnNANQFjho1BzVv7JWCI2lc27sb2lHKM9h4tSY8kEuw1qglYGW9A7MSZIizX2n/D7II56PyrE4uefg3pUUslWN/Ymo6GZulqUo4UagkgEx8yARpoGw7lYfPx3j0BDavB18uqMPYBX1EzIojzSxbAyBttBgKViyFvL28Q4Rs/fJwIwM+tV0wLHXMjqZGkyIGWf3gjNtV9bpMAKtNgZkwGFkz9Z8nbh8KSyu9O3wn/kf4SsPOKX8H5q01WSaCOgKmPTEFBcr7E6eYbl5C4MUkWzIzQ5/FR4ipJ3aGmI1hescJ1CPDQeKBkYSEmjZ8ocfrN7Zk4drHWIhi5uQJpvHLPh9jVWGmxH1UiaGlLnHhvbWub1D/uHyFLHKnb+91+tPwuv0qkigCbiuWABm4CaPtnyAGDbPWRqo8A6tKgsyPATYATzgkq/mvMmVHgjgB3BDj+qKz7E1D7OcF98dWmY8L9Z4WpOi4f7LOa9dDccZTwCsbu0gOzD1zvJ8D8Raq8MGGL6cD0QN3g+1VyZcYWGeb1qrk0pYQU7h3OzzhIJdfm7CVGVRcn7SXFzxDp6d3TwTGsCq7O2ksKaaeay9NKSHFk278BpaKbbiHMt1QAAAAASUVORK5CYII="),
OLE(new String[0],
"Package",
"application/vnd.openxmlformats-officedocument.oleObject",
POIXMLDocument.OLE_OBJECT_REL_TYPE,
new String[]{".png"},
"data:image/png;base64,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")
;
PDF(new String[]{"25504446"},
"Package",
"application/vnd.openxmlformats-officedocument.oleObject",
POIXMLDocument.OLE_OBJECT_REL_TYPE,
new String[]{".pdf"},
"data:image/png;base64,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"),
;

private final String[] fileMagics;
private final String programId;
Expand All @@ -56,7 +56,7 @@ public enum AttachmentType {
this.fileMagics = fileMagics;
this.programId = programId;
this.contentType = contentType;
this.relType = relType;
this.relType = relType;
this.extensions = extensions;
this.icon = icon;
}
Expand All @@ -69,11 +69,11 @@ public String contentType() {
return contentType;
}

public String relType() {
return relType;
}
public String relType() {
return relType;
}

public String[] extensions() {
public String[] extensions() {
return extensions;
}

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,20 @@
*/
package com.deepoove.poi.policy;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.StringReader;
import java.util.UUID;
import java.util.concurrent.ThreadLocalRandom;

import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.apache.poi.hpsf.ClassIDPredefined;
import org.apache.poi.ooxml.POIXMLDocument;
import org.apache.poi.ooxml.POIXMLTypeLoader;
import org.apache.poi.ooxml.util.DocumentHelper;
import org.apache.poi.poifs.filesystem.DirectoryNode;
import org.apache.poi.poifs.filesystem.Ole10Native;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.util.Units;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.xmlbeans.XmlObject;
Expand Down Expand Up @@ -98,6 +106,9 @@ public void doRender(RenderContext<AttachmentRenderData> context) throws Excepti
AttachmentRenderData data = context.getData();
AttachmentType fileType = data.getFileType();
byte[] attachment = data.readAttachmentData();
if (fileType.relType() == POIXMLDocument.OLE_OBJECT_REL_TYPE) {
attachment = wrapByOLE(attachment,fileType,uuidRandom);
}

PictureRenderData icon = data.getIcon();
if (null == icon) {
Expand Down Expand Up @@ -139,4 +150,20 @@ public void doRender(RenderContext<AttachmentRenderData> context) throws Excepti
ctr.set(XmlObject.Factory.parse(document.getDocumentElement(), POIXMLTypeLoader.DEFAULT_XML_OPTIONS));
}

private byte[] wrapByOLE(byte[] data, AttachmentType fileType, String uuid) throws IOException {
String fileName = uuid+fileType.ext();
Ole10Native ole10 = new Ole10Native(fileName, fileName, fileName, data);
try (UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(data.length+500)) {
ole10.writeOut(bos);
try (POIFSFileSystem poifs = new POIFSFileSystem()) {
DirectoryNode root = poifs.getRoot();
root.createDocument(Ole10Native.OLE10_NATIVE, bos.toInputStream());
root.setStorageClsid(ClassIDPredefined.OLE_V1_PACKAGE.getClassID());
try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
poifs.writeFilesystem(os);
return os.toByteArray();
}
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,8 @@ public void testAttachmentRender() throws Exception {
.create());
put("xlsx", Attachments.ofLocal("src/test/resources/template/attachment.xlsx", AttachmentType.XLSX)
.create());
put("oleObject", new OleObjectRenderData(Files.readAllBytes(Paths.get("src/test/resources/logo.png")),"logo.png"));
put("oleObject", Attachments.ofLocal("src/test/resources/test.pdf", AttachmentType.PDF)
.create());
put("chart", Charts
.ofMultiSeries("CustomTitle",
new String[] { "中文", "English", "日本語", "português", "中文", "English", "日本語",
Expand Down
Binary file added poi-tl/src/test/resources/test.pdf
Binary file not shown.

0 comments on commit 007312d

Please sign in to comment.