PDFix SDK 8.5.4 C++ API生成PDF文档为空问题求助
PDFix SDK 8.5.4 C++生成PDF无可见内容的解决方法
你的代码存在几个关键问题,导致生成的PDF页面看不到文本:
未设置文本填充颜色
PDF页面背景默认是白色,若未指定文本填充色,部分情况下默认也会是白色,导致文字和背景重合无法显示。必须显式设置文本填充色为黑色。未提交内容修改
在将内容设置回页面之前,需要调用content->Close(),确保所有内容对象的修改都被正确提交到页面中。冗余的TextState设置
AddNewText方法已经传入了字体和变换矩阵,后续重复设置TextState属于冗余操作,可能引发潜在配置冲突,建议移除。
修改后的代码如下:
int main() { // 1.Init PDFix.dll if (!Pdfix_init(Pdfix_MODULE_NAME)) { return -1; } // 2.Get PDFix object. Pdfix* pdfix = GetPdfix(); if (!pdfix) { return -1; } // 3.Create Doc Object. PdfDoc* doc = pdfix->CreateDoc(); if (!doc) { return -1; } // 4.Define A4 page size (595 x 842 pt) PdfRect media_box = { 0, 0, 595, 842 }; PdfPage* page = doc->CreatePage(-1, &media_box); if (!page) { return -1; } PdsContent* content = page->GetContent(); if (!content) { return -1; } // 5.Load system font PsSysFont* sys_font = pdfix->FindSysFont(L"Arial", false, false); if (!sys_font) { return -1; } PdfFont* font = doc->CreateFont(sys_font, kFontAnsiCharset, false); if (!font) { return -1; } // 6.Define text transform matrix: font size 12pt, position (100, 750) PdfMatrix matrix = {12, 0, 0, 12, 100, 750}; PdsText* text_obj = content->AddNewText(-1, font, &matrix); if (!text_obj) { return -1; } text_obj->SetText(L"Hello from PDFix 8.5.4!"); // 设置文本填充色为黑色 PdfColor fill_color = {0, 0, 0}; // RGB 黑色 text_obj->SetFillColor(&fill_color); // 关闭内容对象,提交所有修改 content->Close(); // 7.Finalize content page->SetContent(); if (!doc->Save(L"output.pdf", kSaveFull)) { return -1; } doc->Close(); pdfix->Destroy(); return 0; }
额外建议:在每一步错误返回时添加日志输出,方便排查具体环节的问题(比如系统是否真的存在Arial字体,避免因字体加载失败导致的隐性错误)。
内容的提问来源于stack exchange,提问作者alpha
相关产品推荐
相关产品推荐

