使用 Aspose.Pdf 使用 FileStream 创建新文档

Creating a new Document with a FileStream with Aspose.Pdf

我正在尝试使用 FileStream 为新文件创建一个新的 Aspose.Pdf.Document,但它总是抛出“文件头不正确”异常。我需要使用 FileStream,以便在合并其他 Pdf 文档时可以增量保存文档,而无需将所有流都保留在范围内。

根据文档,以下是使用 FileStream 创建文档的代码(我将 FileMode.Open 更改为 FileMode.OpenOrCreate 因为我没有现有的 Pdf 文件并且想要从空白文档开始)。

await using var fileStream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
var document = new Document(fileStream);

除非 FileStream 指向现有的有效 Pdf 文件,否则此代码会引发“不正确的文件头”异常。

下面的代码可以工作,但是创建和处理文档只是为了让我们可以通过 FileStream 处理文档有点傻。

var fileName = Path.GetTempFileName();
var doc = new Document();
doc.Save(fileName);
doc.Dispose();

await using var fileStream = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite);
var document = new Document(fileStream);

我肯定遗漏了一些明显的东西,因为这是一个非常简单的用例,我在网上搜索时没有看到任何相关信息。

您不能使用空流或无效的 PDF 文件初始化文档对象。文件或流应该是有效的 PDF 文档。为了使用增量保存方法,您可以用一个新文件初始化 FileStream 并将 Document 保存到其中。例如,请检查以下示例代码片段:

using var fileStream = new FileStream(dataDir + "output.pdf", FileMode.OpenOrCreate, FileAccess.ReadWrite);
{
 var document = new Document();
 document.Pages.Add();
 document.Save(fileStream);
 document.Pages.Add();
 document.Save(fileStream);
}

请注意,FileStream需要在整个PDF生成过程中保持打开状态。除此之外,您还可以使用 Document.Save();方法(没有任何构造函数)来实现增量保存。

我们相信您也在 Aspose.PDF 官方支持论坛中发帖 similar inquiry 并且我们也在那里回复了您。如果您需要更多信息,您可以在那里跟进并继续讨论。

我是 Asad Ali,我在 Aspose 担任开发人员布道师。