2

无法在 fop 中获取外部字体,收到消息:

java.lang.UnsupportedOperationException:在 org.kantega.notsoserial.DefaultNotSoSerial.preventDeserialization(DefaultNotSoSerial.java:256) 类 org.apache.fop.fonts.FontCache(2018 年 11 月 15 日星期四 11:07:35 PST)不允许反序列化在 org.kantega.notsoserial.DefaultNotSoSerial.onBeforeResolveClass(DefaultNotSoSerial.java:248) 在 org.kantega.notsoserial.ObjectInputStreamClassVisitor.onBeforeResolveClass(ObjectInputStreamClassVisitor.java:48) 在 java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1868) 在java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) 在 java.io.ObjectInputStream .readObject(ObjectInputStream.java:431) at org.apache.fop.fonts.FontCache.loadFrom(FontCache.java:151) at org.apache.fop.fonts.FontCache.load(FontCache.java:132) at org.apache .fop.fonts.FontManager.setUseCache(FontManager.java:121) 在 org.apache.fop.fonts.FontManager.(FontManager.java:63) 在 org.apache.fop.apps.FopFactory$1.(FopFactory.java: 159)a.lang.UnsupportedOperationException:在 org.apache.fop.apps.FopFactory 类 org.apache.fop.fonts.FontCachet org.apache.fop.apps.FopFactory.(FopFactory.java:156) 不允许反序列化。 newInstance(FopFactory.java:177) at com.intelsecurity.aem.services.impl.util.PDFFOPServiceImpl.createPDF(PDFFOPServiceImpl.java:74) at com.intelsecurity.aem.services.impl.checkout.CreatePurchaseReceiptDataServiceImpl。createPurchaseReceiptData(CreatePurchaseReceiptDataServiceImpl.java:172) at com.intelsecurity.aem.servlets.checkout.PurchaseOrderServlet.operationGetOrderSummary(PurchaseOrderServlet.java:342) at com.intelsecurity.aem.servlets.checkout.PurchaseOrderServlet.doPost(PurchaseOrderServlet.java:178)在 org.apache.sling.api.servlets.SlingAllMethodsServlet.mayService(SlingAllMethodsServlet.java:146) 在 org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:342) 在 org.apache.sling.api .servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:374) 在checkout.PurchaseOrderServlet.doPost(PurchaseOrderServlet.java:178) 在 org.apache.sling.api.servlets.SlingAllMethodsServlet.mayService(SlingAllMethodsServlet.java:146) 在 org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet. java:342) 在 org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:374) 在checkout.PurchaseOrderServlet.doPost(PurchaseOrderServlet.java:178) 在 org.apache.sling.api.servlets.SlingAllMethodsServlet.mayService(SlingAllMethodsServlet.java:146) 在 org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet. java:342) 在 org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:374) 在

以下是 fopconfig 文件:

<?xml version="1.0"?>
<fop version="1.0">
  <base>.</base>
  <source-resolution>72</source-resolution>
  <target-resolution>72</target-resolution>
  <default-page-settings height="11.00in" width="8.50in"/>
  <renderers>
    <renderer mime="application/pdf">
      <filterList>
        <value>flate</value>
      </filterList>
      <fonts>
         <font embed-url=".">
          <font-triplet name="TrueType" style="normal" weight="normal"/>
        </font>
      </fonts>
    </renderer>
  </renderers>
</fop>

并且我的字体保留与 fop-config 相同的文件夹

为了解决上述问题,我尝试了以下步骤:

final FopFactory fopFactory = FopFactory.newInstance();
            fopFactory.getFontManager().getFontCache().clear();

但是,我的 osgi 包似乎仍处于已安装状态。

我究竟做错了什么 ?

4

1 回答 1

3

AEM 使用反序列化防火墙,并且仅允许对明确列入白名单的类进行反序列化。您需要在 osgi 配置中将您的课程列入白名单 -com.adobe.cq.deserfw.impl.DeserializationFirewallImpl

序列化防火墙配置

于 2018-11-16T09:54:26.273 回答