首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用IAC创建新的PDF

使用IAC创建新的PDF
EN

Stack Overflow用户
提问于 2022-05-09 21:39:19
回答 1查看 154关注 0票数 0

我试图使用Adobe的IAC将一个文档的前2页保存为另一个文档。我创建一个AcroApp实例,如下所示:

代码语言:javascript
运行
复制
ACROBAT::CAcroAppPtr acApp;
HRESULT hr = acApp.CreateInstance(__uuidof(ACROBAT::AcroApp));

如果创建成功,我将按以下方式打开原始PDF:

代码语言:javascript
运行
复制
ACROBAT::CAcroPDDocPtr pdDoc;
hr = pdDoc.CreateInstance(__uuidof(ACROBAT::AcroPDDoc));
pdDoc->Open(_bstr_t(L"source.pdf")) // so far so good it has 13 pages

如果成功的话,我将创建另一个PDDoc,如下所示

代码语言:javascript
运行
复制
hr = outDoc.CreateInstance(__uuidof(ACROBAT::AcroPDDoc)); // returns S_OK
outDoc->Create(); // returns -1 which is good

然后,我尝试在这个新的文档中添加前2页的原始文档,如下所示:

代码语言:javascript
运行
复制
pdDoc->InsertPages(0, outDoc, 0, 2, 1); // this returns 0 which means something went wrong

但是InsertPages返回错误,新的PDDoc仍然有0页。

我遗漏了什么?

我使用的是Acrobat Pro 2020,原来的PDDoc有13页。

我正在使用Visual Studio 2022进行开发。

EN

回答 1

Stack Overflow用户

发布于 2022-05-11 16:59:24

我自己发现了问题。

InsertPages的第一个参数是0,对于空文档,它应该是-1。而不是用索引-1在页面后面插入新页。我认为,如果我们想在现有文档的开头添加页面,这个值应该仍然是-1。

另外,我假设我们必须告诉原始文档,从x位置开始,将n个页插入到新创建的文档中,这是错误的。正确的方法是告诉新创建的文档从原始文档开始插入n个从x位置开始的页面数。所以正确的呼吁应该是:

代码语言:javascript
运行
复制
outDoc->InsertPages(-1, pdDoc, 0, 2, 1);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72178462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档