2015-01-10 11 views
0

У меня есть существующий процесс, который создает различные документы PDF в памяти с использованием aspose.pdf.generator. Затем этот процесс объединяет файлы 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); необходимо вставить в свойство tdocs.pdf, которое имеет тип Aspose.PDF.Generatorr.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

Вы можете сохранить документ Word, в формате PDF (поток) с использованием метода Aspose.Words.Save (поток, Aspose.Words.SaveFormat.Pdf). И используйте этот поток в pdfEditor.Concatenate().

Я предполагаю, что tdoc - ваш класс, чтобы содержать информацию о документах PDF. Вы можете изменить его для обработки документов PDF и Word, добавив еще 1 логический элемент (IsPdf).

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++; 
}