Optimize, DocOptimize

The text inside a PDF file is usually split into multiple parts, a single sentence or paragraph can consist of multiple pieces of text positioned independently inside the PDF document. The Optimize or DocOptimize methods attempt to regroup lines or paragraphs prior to exporting the PDF file into another format, or to make the file easier to edit.

 

Syntax

ActiveX:

void Optimize(System.Int16 Level)

DLL:

int DocOptimize(EXTDOCHANDLE edhDocument, int iLevel)

 

Parameters

Level, iLevel

Optimization level to apply to PDF document.

 

Optimization Level

Value

No optimization

0

Line optimization

1

Paragraph optimization

2

edhDocument

Handle Returned by DocOpen.

 

Return Value

The return value is zero if the DocOptimize method succeed. If the DocOptimize method fails, a negative value will returned.

There is not value for the Optimize method, though.

 

Remarks

 

Optimizing the  document is not recommended when exporting to image formats, it slows down the export and the output might be less accurate.

 

Member of CDIntfEx.Document.

 

 

Example

<Flags()>

Public Enum OPTIMIZE As Integer

    NO_OPTIMIZATION = 0

    LINE_OPTIMIZATION = 1

    PARAGRAPH_OPTIMIZATION = 2

    TABLE_OPTIMIZATION = 3

End Enum

 

Private Sub Sample()

    ' Constants for Activation codes

    Const strLicenseTo As String = "Amyuni PDF Converter Evaluation"

    Const strActivationCode As String = "07EFCDAB0100010025AFF1801CB9441306C5739F7D452154D8833B9CECBA2ADE79E3762A69FFC354528A5F4A5811BE3204A0A439F5BA"

 

    ' Declare a new cdintfex document if it does not exist in the form.

    Dim pdfDoc As New CDIntfEx.Document

 

    ' The SetLicenseKey method should be called after creating an object of type 

    ' CDIntfEx.Document to activate the advanced methods that require the object 

    ' activation code to work properly

    pdfDoc.SetLicenseKey(strLicenseTo, strActivationCode)

 

    ' Open the document

    pdfDoc.Open("c:\temp\test.pdf")

 

    ' Optimize the document in Paragraph level

    pdfDoc.Optimize(OPTIMIZE.PARAGRAPH_OPTIMIZATION)

 

    ' Export to Excel, but the license needs to have that option

    pdfDoc.ExportToEXCEL("c:\temp\sheet.xls", CDIntfEx.acExcelExportOptions.acExcelExportOptionMultipleSheets)

End Sub

[Flags]

public enum OPTIMIZE

{

    NO_OPTIMIZATION = 0,

    LINE_OPTIMIZATION = 1,

    PARAGRAPH_OPTIMIZATION = 2,

    TABLE_OPTIMIZATION = 3

}

private void Sample()

{

    // Constants for Activation codes

    const string strLicenseTo = "Amyuni PDF Converter Evaluation";

    const string strActivationCode = "07EFCDAB0100010025AFF1801CB9441306C5739F7D452154D8833B9CECBA2ADE79E3762A69FFC354528A5F4A5811BE3204A0A439F5BA";

 

    // Declare a new cdintfex document if it does not exist in the form.

    CDIntfEx.Document pdfDoc = new CDIntfEx.Document();

 

    // The SetLicenseKey method should be called after creating an object of type 

    // CDIntfEx.Document to activate the advanced methods that require the object 

    // activation code to work properly

    pdfDoc.SetLicenseKey(strLicenseTo, strActivationCode);

 

    // Open the document

    pdfDoc.Open("c:\\temp\\test.pdf");

 

    // Optimize the document in Paragraph level

    pdfDoc.Optimize((int)OPTIMIZE.PARAGRAPH_OPTIMIZATION);

 

    // Export to Excel, but the license needs to have that option

    pdfDoc.ExportToEXCEL("c:\\temp\\sheet.xls", CDIntfEx.acExcelExportOptions.acExcelExportOptionMultipleSheets);

}

// PDF Converter Cpp.cpp : Defines the entry point for the console application.

// 

#include <Windows.h>

#include <string>

#include <iostream>

#include "CdIntf.h"

#pragma comment (lib, "CDIntf.lib")

 

using namespace std;

 

enum OPTIMIZE 

{

    NO_OPTIMIZATION = 0,

    LINE_OPTIMIZATION = 1,

    PARAGRAPH_OPTIMIZATION = 2,

    TABLE_OPTIMIZATION = 3

};

 

int main()

{

     // Constants for Activation codes

    #define strLicenseTo  (LPCSTR)"Amyuni PDF Converter Evaluation"

    #define strActivationCode (LPCSTR)"07EFCDAB0100010025AFF1801CB9441306C5739F7D452154D8833B9CECBA2ADE79E3762A69FFC354528A5F4A5811BE3204A0A439F5BA"

 

    // Declare a new cdintfex document if it does not exist in the form.

    EXTDOCHANDLE pdfDoc;

 

    // The SetLicenseKey method should be called after creating an object of type 

    // CDIntfEx.Document to activate the advanced methods that require the object 

    // activation code to work properly

    SetLicenseKeyA(strLicenseTo, strActivationCode);

 

    // Open the document

    LPBYTE passWord = nullptr;

    DocOpenA(&pdfDoc, (LPCSTR)"c:\\temp\\test.pdf", passWord);

 

    // Set Encryption

    DocOptimize(pdfDoc, OPTIMIZE::PARAGRAPH_OPTIMIZATION);

 

    // Export to Excel, but the license needs to have that option

    DocConvertToEXCELA(pdfDoc, (LPCSTR)"c:\\temp\\sheet.xls", EXCELOPTION_MULTIPLE_SHEETS);

 

    // Destroy pdfDoc object

    DocClose(pdfDoc);

    pdfDoc = nullptr;    

 

    return 0;

}

package Example;

 

import com.jacob.activeX.ActiveXComponent;

import com.jacob.com.Dispatch;

import com.jacob.com.Variant;

 

public class Sample {

    public enum OPTIMIZE 

    {

        NO_OPTIMIZATION (0),

        LINE_OPTIMIZATION (1),

        PARAGRAPH_OPTIMIZATION (2),

        TABLE_OPTIMIZATION (3);

        private int value;

        private OPTIMIZE(int value)

        {

            this.value = value;

        }

        public Object value(){

            return value;

        }

    }

 

    public enum EXCELOPTION 

    {

        ExcelExportOptionSingleSheet (0),

        ExcelExportOptionMultipleSheets (1),

        ExcelExportDecimalSeparator_Comma (2);

        private int value;

        private EXCELOPTION(int value)

        {

            this.value = value;

        }

        public Object value(){

            return value;

        }

    }

 

    public static void main(String[] args)

    {

        // Constants for Activation codes

        String strLicenseTo  = "Amyuni PDF Converter Evaluation";

        String strActivationCode = "07EFCDAB0100010025AFF1801CB9441306C5739F7D452154D8833B9CECBA2ADE79E3762A69FFC354528A5F4A5811BE3204A0A439F5BA";

 

        // Declare a new cdintfex document if it does not exist in the form.

        ActiveXComponent pdfDoc = new ActiveXComponent("CDIntfEx.Document.6.5"); 

 

        // The SetLicenseKey method should be called after creating an object of type 

        // CDIntfEx.Document to activate the advanced methods that require the object 

        // activation code to work properly

        Dispatch.call(pdfDoc, "SetLicenseKey", strLicenseTo, strActivationCode);

 

        // Open the document

        Dispatch.call(pdfDoc, "Open", "c:\\temp\\test.pdf");

 

        // Optimize the document in Paragraph level

        Dispatch.call(pdfDoc, "Optimize",OPTIMIZE.PARAGRAPH_OPTIMIZATION.value);

 

        // Export to Excel, but the license needs to have that option

        Dispatch.call(pdfDoc, "ExportToEXCEL", "c:\\temp\\sheet.xls", EXCELOPTION.ExcelExportOptionMultipleSheets.value);

 

        // Destroy pdfDoc object

        pdfDoc = null; 

    }

}

$OPTIMIZE = @{

    NO_OPTIMIZATION = 0

    LINE_OPTIMIZATION = 1

    PARAGRAPH_OPTIMIZATION = 2

    TABLE_OPTIMIZATION = 3

}

 

$EXCELOPTION = @{

    ExcelExportOptionSingleSheet = 0

    ExcelExportOptionMultipleSheets = 1

    ExcelExportDecimalSeparator_Comma = 2

}

 

# Constants for Activation codes

$strLicenseTo  =  "Amyuni PDF Converter Evaluation"

$strActivationCode = "07EFCDAB0100010025AFF1801CB9441306C5739F7D452154D8833B9CECBA2ADE79E3762A69FFC354528A5F4A5811BE3204A0A439F5BA"

 

#Declare a new cdintfex document if it does not exist in the form.

$pdfDoc = New-Object -ComObject CDIntfEx.Document.6.5

 

#The SetLicenseKey method should be called after creating an object of type 

#CDIntfEx.Document to activate the advanced methods that require the object 

#activation code to work properly

[System.__ComObject].InvokeMember('SetLicenseKey', [System.Reflection.BindingFlags]::InvokeMethod,$null,$pdfDoc, @($strLicenseTo, $strActivationCode))

 

#Open the document

[System.__ComObject].InvokeMember('Open', [System.Reflection.BindingFlags]::InvokeMethod,$null,$pdfDoc,"c:\temp\test.pdf") 

 

#Optimize the document in Paragraph level

[System.__ComObject].InvokeMember('Optimize', [System.Reflection.BindingFlags]::InvokeMethod,$null,$pdfDoc, $OPTIMIZE::PARAGRAPH_OPTIMIZATION)

 

#Save the document

[System.__ComObject].InvokeMember('ExportToEXCEL', [System.Reflection.BindingFlags]::InvokeMethod,$null,$pdfDoc,

    @("c:\temp\sheet.xls", $EXCELOPTION::ExcelExportOptionMultipleSheets)) 

 

#Destroy pdfDoc object

$pdfDoc = $null

Const NO_OPTIMIZATION = 0

Const LINE_OPTIMIZATION = 1

Const PARAGRAPH_OPTIMIZATION = 2

Const TABLE_OPTIMIZATION = 3

 

Const acExcelExportOptionSingleSheet = 0

Const acExcelExportOptionMultipleSheets = 1

Const acExcelExportDecimalSeparator_Comma = 2

 

' Constants for Activation codes

Const strLicenseTo = "Amyuni PDF Converter Evaluation"

Const strActivationCode = "07EFCDAB0100010025AFF1801CB9441306C5739F7D452154D8833B9CECBA2ADE79E3762A69FFC354528A5F4A5811BE3204A0A439F5BA"

 

' Declare a new cdintfex document if it does not exist in the form.

Dim pdfDoc 

Set pdfDoc = CreateObject("CDIntfEx.Document.6.5")

 

' The SetLicenseKey method should be called after creating an object of type 

' CDIntfEx.Document to activate the advanced methods that require the object 

' activation code to work properly

pdfDoc.SetLicenseKey strLicenseTo, strActivationCode

 

' Open the document

pdfDoc.Open "c:\temp\test.pdf"

 

' Optimize the document in Paragraph level

pdfDoc.Optimize PARAGRAPH_OPTIMIZATION

 

' Export to Excel, but the license needs to have that option

pdfDoc.ExportToEXCEL "c:\temp\sheet.xls", acExcelExportOptionMultipleSheets

 

' Destroy pdfDoc object

Set pdfDoc = Nothing