Examples

Integration Examples

API Usage Examples

Utilities

Test logging

error_type process_logging() {

    // Disable logging for unit testing
    RETURN_ERROR_IF_NOT_SUCCESS(Logging_SetSeverity(LoggingSeverity_Off));

    return VANILLAPDF_TEST_ERROR_SUCCESS;
}

Enumerate xref

error_type process_file(FileHandle* file, int nested) {
    XrefChainHandle* chain = NULL;
    XrefChainIteratorHandle* chain_iterator = NULL;
    boolean_type valid = VANILLAPDF_RV_FALSE;

    RETURN_ERROR_IF_NOT_SUCCESS(File_XrefChain(file, &chain));
    RETURN_ERROR_IF_NOT_SUCCESS(XrefChain_GetIterator(chain, &chain_iterator));

    while (VANILLAPDF_ERROR_SUCCESS == XrefChainIterator_IsValid(chain_iterator, &valid)
        && VANILLAPDF_RV_TRUE == valid) {
        XrefHandle* xref = NULL;

        RETURN_ERROR_IF_NOT_SUCCESS(XrefChainIterator_GetValue(chain_iterator, &xref));
        RETURN_ERROR_IF_NOT_SUCCESS(process_xref(xref, nested));
        RETURN_ERROR_IF_NOT_SUCCESS(Xref_Release(xref));
        RETURN_ERROR_IF_NOT_SUCCESS(XrefChainIterator_Next(chain_iterator));
    }

    RETURN_ERROR_IF_NOT_SUCCESS(XrefChainIterator_Release(chain_iterator));
    RETURN_ERROR_IF_NOT_SUCCESS(XrefChain_Release(chain));

    return VANILLAPDF_TEST_ERROR_SUCCESS;
}

Additional Resources

  • main.c — Main file for command-line application vanillapdf.tools

  • tools.h — Tools project header file including macro definitions