我正在尝试翻译这个 qpdf 命令:
qpdf --qdf --object-streams=disable input.pdf editable.pdf
进入使用 qpdf dll 时所需的等效方法调用(可从此处获得:https ://sourceforge.net/projects/qpdf/ )。
我通过 dumpbin 运行 qpdf dll 以获取函数名称,通过查看包含在 c++ 项目中的头文件,我可以看到函数的参数。
例如,传递上面的 --object-streams 选项所需的函数(据我所知)是这个函数:
void setObjectStreamMode(qpdf_object_stream_e);
从 C++ 头文件变成:
[DllImport("qpdf21.dll")]
static extern void _ZN10QPDFWriter19setObjectStreamModeE20qpdf_object_stream_e(int stateEnum);
在 C# 文件中。
问题是当我使用上述功能时,我得到一个
AccessViolationException: 试图读取或写入受保护的内存
错误,这让我觉得我需要以某种方式创建一个 QPDF 对象,但我从未使用过面向对象的 pinvokes,所以我不知道如何在 c# 中访问该对象。
如果有人已经熟悉在 C# 中使用 dll,甚至在 C++ 中,并且可以告诉我调用以复制命令的正确函数,我将不胜感激!
相关分类