【问题标题】:AcrobatPro - disable OCR when saving as docxAcrobat Pro - 保存为 docx 时禁用 OCR
【发布时间】:2014-10-02 11:23:58
【问题描述】:

我需要将 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();
}

【问题讨论】:

  • 看起来 Acrobat 正在从系统注册表 (HKEY_CURRENT_USER\SOFTWARE\Adobe\Adobe Acrobat\11.0\AVConversionFromPDF\cSettings\c0\cSettings) 中获取转换设置,因此作为临时解决方案,我可以修改转换通过注册表项 bRunOCR 和 bIncludeComments 进行设置
  • 如果你找到了解决办法,你能回答你自己的问题吗?
  • @JayNirgudkar 我已经发布了我的答案

标签: c# acrobat acrobat-sdk


【解决方案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();
}

【讨论】:

    猜你喜欢
    • 2014-10-29
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    相关资源
    最近更新 更多