我如何将pdf附加到另一个? Alfresco

问题描述 投票:0回答:1

如何将pdf附加到另一个?

我尝试使用此代码,但是当我尝试获取ContentInputStream时出现java.lang.NullPointerException。我究竟做错了什么?如何将一个pdf附加到另一个?

PDDocument pdfTarget = null;
InputStream is = null;
InputStream tis = null;
for (ChildAssociationRef file: quotationsFiles) {
 try {
  NodeRef toAppend = file.getChildRef(); //workspace://SpacesStore/11bce382-45bf-4c67-95bc-a65361b323ef

  ContentReader append = getReader(toAppend);
  is = append.getContentInputStream(); // Here iam getting java.lang.NullPointerException 

  NodeRef targetNodeRef = reportFile.getNodeRef();
  ContentReader targetReader = getReader(targetNodeRef);
  tis = targetReader.getContentInputStream();

  String fileName = String.valueOf(serviceRegistry.getNodeService().getProperty(targetNodeRef, ContentModel.PROP_NAME));

  // stream the document in
  pdf = PDDocument.load(is);
  pdfTarget = PDDocument.load(tis);

  // Append the PDFs
  PDFMergerUtility merger = new PDFMergerUtility();
  merger.appendDocument(pdfTarget, pdf);
  merger.setDestinationFileName(fileName);
  merger.mergeDocuments();
 } catch (Exception e) {
  //throw new AlfrescoRuntimeException("IOException", e);
  ColorLogUtil.debug(LOGGER, "IOException Error caused by :" + e);
 }
}
private ContentReader getReader(NodeRef nodeRef) {
 if (serviceRegistry.getNodeService().exists(nodeRef) == false) {
  throw new AlfrescoRuntimeException("NodeRef: " + nodeRef + " does not exist");
 }

 QName typeQName = serviceRegistry.getNodeService().getType(nodeRef);
 if (serviceRegistry.getDictionaryService().isSubClass(typeQName, ContentModel.TYPE_CONTENT) == false) {
  throw new AlfrescoRuntimeException("The selected node is not a content node");
 }

 ContentReader contentReader = serviceRegistry.getContentService().getReader(nodeRef, ContentModel.PROP_CONTENT);

 if (contentReader == null) {
  throw new AlfrescoRuntimeException("The content reader for NodeRef: " + nodeRef + "is null");
 }

 return contentReader;
}
alfresco alfresco-maven
1个回答
0
投票

这实际上似乎是我们现成的alfresco-pdf-toolkit支持的功能之一。您可以使用该插件,也可以从支持它的代码中获得启发。

© www.soinside.com 2019 - 2024. All rights reserved.