使用 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 担任开发人员布道师。
我正在尝试使用 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 担任开发人员布道师。