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 に答える