1

我需要将 pdf 文件保存到 docx(使用 AcrobatPro)。我可以使用以下方法做到这一点,但我找不到在此过程中禁用 OCR 的方法。

private AcroPDDoc pdf = new AcroPDDoc();

public void ConvertToDocx(string inputPath, string outputPath)
{    
    pdf.Open(inputPath);

    var jsObj = pdf.GetJSObject();
    var type = pdf.GetType();

    object[] saveAsParams = { outputPath, "com.adobe.acrobat.docx", "", false, false };
    type.InvokeMember("saveAs", BindingFlags.InvokeMethod | BindingFlags.Instance, null, jsObj, saveAsParams, CultureInfo.InvariantCulture);

    pdf.Close();
}
4

1 回答 1

1

Acrobat 正在从系统注册表中获取转换设置(HKEY_CURRENT_USER\SOFTWARE\Adobe\Adobe Acrobat\11.0\AVConversionFromPDF\cSettings\c0\cSettings)

这是处理 Acrobat 注册表设置的简单类

public class RegistrySettings
{
    public int IncludeComments { get; set; }
    public int RunOcr { get; set; }

    private const string ConversionKey = @"HKEY_CURRENT_USER\SOFTWARE\Adobe\Adobe Acrobat\11.0\AVConversionFromPDF\cSettings\c0\cSettings";
    private const string RunOcrValueName = "bRunOCR";
    private const string IncludeCommentsValueName = "bIncludeComments";

    public static RegistrySettings CreateWithDisabledOcr()
    {
        return new RegistrySettings() {IncludeComments = 0, RunOcr = 0};
    }

    public static RegistrySettings Parse()
    {
        var runOcr = (int) Registry.GetValue(ConversionKey, RunOcrValueName, null);
        var comments = (int) Registry.GetValue(ConversionKey, IncludeCommentsValueName, null);

        return new RegistrySettings() {IncludeComments = comments, RunOcr = runOcr};
    }

    public void Save()
    {
        Registry.SetValue(ConversionKey, RunOcrValueName, RunOcr);
        Registry.SetValue(ConversionKey, IncludeCommentsValueName, IncludeComments);
    }
}

用法:

public static void DisableOcr()
{
    RegistrySettings registry;
    try
    {
        registry = RegistrySettings.Parse();
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
        return;
    }
    registry.RunOcr = 0;
    registry.IncludeComments = 0;
    registry.Save();
}
于 2016-04-21T08:35:11.827 回答