1

我是在 c++ 中使用 PoDoFo 的新手,但是我在使用 PdfMemDocument 时遇到了问题。lib中似乎有一个错误,但我不确定。

我的代码:

PoDoFo::PdfMemDocument document;

long len = buffer.size();
document.Load( reinterpret_cast<char*>( buffer.getBuffer() ) , len );

for (int pn = 0; pn < document.GetPageCount(); ++pn)
{
   auto* page = document.GetPage( pn );
   page->SetRotation( rotation );
}

PoDoFo::PdfOutputDevice output( reinterpret_cast<char*>( buffer.getBuffer() ), buffer.size() );
document.Write( &output );
output.Read( reinterpret_cast<char*>( buffer.getBuffer() ), buffer.size() );
buffer.setSize( output.GetLength() );

缓冲区包含正确的数据。我已经测试过了。程序结束时发生堆栈错误。堆栈跟踪:

#0 0xf7710be9 in __kernel_vsyscall ()
#1 0xf673dea9 in raise () from /lib/i386-linux-gnu/libc.so.6
#2 0xf673f4d8 in abort () from /lib/i386-linux-gnu/libc.so.6
#3 0xf677937c in ?? () from /lib/i386-linux-gnu/libc.so.6
#4 0xf6809548 in __fortify_fail () from /lib/i386-linux-gnu/libc.so.6
#5 0xf68094d8 in __stack_chk_fail () from /lib/i386-linux-gnu/libc.so.6
#60x0805af74 in __stack_chk_fail_local ()

如果我只在程序结束时生成 PdfMemDocument 对象,也会出现此问题。

谢谢您的帮助

4

0 回答 0