0

我可以更改 pdf 文本对象的文本,并且 pdfium 函数显示“一切正常”。但是当我保存更改后的 pdf 文档时,没有可见的更改。有些东西不见了,我不知道是什么。

int co = FPDFPage_CountObjects(page);
for (int j = 0; j < co; ++j) {
  FPDF_PAGEOBJECT pobj = FPDFPage_GetObject(page, j);
  if (FPDFPageObj_GetType(pobj) == FPDF_PAGEOBJ_TEXT) {
    ...

    if (FPDFText_SetText(pobj, (FPDF_WIDESTRING)L"New Text")) {                                          
      std::cout << "#VAL1 was changed\n";                                    
      //FPDFPage_GenerateContent(page);                                      
    }
  }
}

...
FPDF_ClosePage(page);
...

FPDF_FILEWRITE_EX fw;
fw.pFile = fopen("C:\\work\\newpdf.pdf", "wb");
fw.version = 1;
fw.WriteBlock = MyDelegateSaveFunc;

FPDF_SaveAsCopy(doc, &fw, FPDF_NO_INCREMENTAL);
fclose(fw.pFile);

FPDF_CloseDocument(doc);

如果我确实调用了 GenerateContent(我认为不需要),那么整个保存的页面都是空的。我确实使用了最后一个 pdfium 二进制版本 3764。

4

1 回答 1

0

您需要取消注释该行FPDFPage_GenerateContent(page),更改对象后您需要更新对象或生成整个页面。

之后的空白页面FPDFPage_GenerateContent是上次构建中已修复的错误。

于 2019-08-12T01:39:34.280 回答