在 C# 中使用 QPDF

我正在尝试翻译这个 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++ 中,并且可以告诉我调用以复制命令的正确函数,我将不胜感激!


猛跑小猪
浏览 267回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP