2015-01-10 292 views
0

我有一个现有的过程,它使用aspose.pdf.generator在内存中构建各种PDF文档。然后该过程连接PDF文件,并在最后向用户返回一个PDF。将aspose.pdf文档转换为aspose.pdf.generator文档

我现在有要求将现有的Word文档插入到并置过程中。我可以将Word文档作为Aspose.Words文档导入到内存中。如何将Aspose.Words文档插入到Aspose.PDF.Generator文档中的各个位置?如果我可以将每个Aspose.Words文档转换为Aspose.PDF.Generator文档,我可以将该方法干净地插入到我的过程中。

此对象var msDoc = new Aspose.Words.Document(ms);需要插入到Aspose.PDF.Generatorr.Pdf类型的tdocs.pdf属性中。

 PdfFileEditor pdfEditor = new PdfFileEditor(); 
     MemoryStream outStream = new MemoryStream(); 
     MemoryStream[] streamArray = new MemoryStream[tdocs.Count]; 

     int i = 0; 
     foreach (var tdoc in tdocs) 
     { 
      MemoryStream inputStream1 = new MemoryStream(); 
      tdoc.Pdf.Save(inputStream1); 
      streamArray[i] = inputStream1; 
      i++; 
     } 
     pdfEditor.Concatenate(streamArray, outStream); 

     using (FileStream file = new FileStream(filePath, FileMode.Create, System.IO.FileAccess.Write)) 
     { 
      byte[] bytes = new byte[outStream.Length]; 
      outStream.Read(bytes, 0, (int)outStream.Length); 
      file.Write(bytes, 0, bytes.Length); 
      outStream.Close(); 
     } 

     return fileName; 

回答

0

可以使用Aspose.Words.Save(流Aspose.Words.SaveFormat.Pdf)方法保存Word文档为PDF(流)。并在pdfEditor.Concatenate()中使用此流。

我认为tdoc是包含有关pdf文档信息的类。您可以通过添加1个布尔成员(IsPdf)来修改它以处理PDF和Word文档。

foreach (var tdoc in tdocs) 
{ 
    if (tdoc.IdPdf) 
    { 
     MemoryStream inputStream1 = new MemoryStream(); 
     tdoc.Pdf.Save(inputStream1); 
     streamArray[i] = inputStream1; 

    } 
    else 
    { 
     // If it is a Word document, use Aspose.Words.Document.Save() 
     Aspose.Words.Document wordDoc = new Aspose.Words.Document(tdoc.wordFilePath); 
     streamArray[i] = new MemoryStream(); 
     wordDoc.Save(streamArray[i], Aspose.Words.SaveFormat.Pdf); 
    } 
    i++; 
}