为什么 PDF_begin_page_ext:不能在 'object' 范围内调用函数

why PDF_begin_page_ext: Function must not be called in 'object' scope

代码是读取 pdf 文件和 return 从源 pdf 复制新文件 使用nodejs编译时出现错误 https://github.com/NitroPye/node-pdflib

使用nodejs转pdflib

const lib = require('../../pdf');
const pdflib = lib.pdflib;
const PDFLIB = lib.DEFINES;

const pdf = pdflib.PDF_new();

pdflib.PDF_set_option(pdf, "errorpolicy=exception");
pdflib.PDF_set_option(pdf, "hypertextencoding=host");
pdflib.PDF_set_info(pdf, "Creator", "quickreference_ios");
pdflib.PDF_set_info(pdf, "Author", "Thomas Merz");
pdflib.PDF_set_info(pdf, "Title", "mini imposition demo (Objective-C)");

const manual = pdflib.PDF_open_pdi_document(pdf,"ArtworkBlankApp.pdf",0,"")
let row = 0
let col = 0

const endpage = parseInt(pdflib.PDF_pcos_get_number(pdf,manual, "length:pages"));
const font = pdflib.PDF_load_font(pdf, "Helvetica-Bold", 0, "host", "");
for(let pageno = 1; pageno <= endpage; pageno++){
  pdflib.PDF_begin_page_ext(pdf, PDFLIB.a4_width, PDFLIB.a4_height, "topdown")
  const page = pdflib.PDF_open_pdi_page(pdf, manual, pageno, "");
  pdflib.PDF_fit_pdi_page(pdf, page, 0 , PDFLIB.a4_height, "")
  pdflib.PDF_close_pdi_page(pdf, page)
  pdflin.PDF_end_page_ext("")
}
pdflib.PDF_end_document(pdf,"")
pdflib.PDF_close_pdi_document(manual)

我该如何解决

您需要先调用 PDFlib 函数 PDF_begin_document(),然后才能在输出文档中创建任何内容。所以在 for 循环之前放置下面的语句就可以了:

pdflib.PDF_begin_document(pdf, "out.pdf", 0, "")

这将导致您的程序生成一个名为 "out.pdf" 的 PDF 文件。