我用 C# 制作了一个小应用程序,它使用 Adobe Acrobat SDK 将 PDF 文件转换为 PDF/A。
我SaveAs
以这种方式使用了 SDK 中包含的 JavaScript 函数:
var pdfDocument = new AcroPDDoc();
pdfDocument.Open(fileInfo.FullName);
object pdfJavascriptObject = pdfDocument.GetJSObject();
Type jsType = pdfJavascriptObject.GetType();
// FinalExtension is either jpg or pdf (depends of convId)
var outputFileName = fileInfo.Name.Replace(fileInfo.Extension, "." + finalExtension);
var finalFullName = Path.Combine(outputFolderPath, outputFileName);
// AdobeConvId is either com.callas.preflight.pdfa either com.adobe.acrobat.jpeg
object[] saveAsParam = { finalFullName, adobeConvId, string.Empty, false, false };
// Use Javascript Object SaveAs Method
jsType.InvokeMember(StringConstants.AcrobatSaveAsMethod
, BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Instance
, null
, pdfJavascriptObject
, saveAsParam
, CultureInfo.InvariantCulture);
pdfDocument.Close();
它在 Adobe Acrobat Professional X 上运行良好,但现在我必须使用 Adobe Acrobat Professional XI/DC。我已经升级了 SDK 的 DLL,但它不起作用。
有一个“进度”消息闪烁,好像有大量文档要转换,并且该过程永远不会结束。
但是,当我转换为 JPG 文件时,此代码可以正常工作(相同的代码只是更改了convId
.
你知道我能从那里做什么吗?...
如果“SaveAs”方法是 NoGo,我听说过预检,但我不知道如何在 C# 代码中使用它们。