0

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

我现在需要将现有的 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;
4

1 回答 1

0

您可以使用 Aspose.Words.Save(stream, 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++;
}
于 2015-01-11T05:53:04.360 回答