7
Callbacks 7-1
7
Callbacks
Callbacks allow the developer to intervene at critical points in the export process. Read 
more about the callback procedure and the EXOpenExport function call in 
Section5.1.1, "EXOpenExport." Each heading in this chapter is a possible value for the 
dwCommandOrInfoId parameter passed to the developer’s callback.
The new SCCOPT_EX_CALLBACKS option allows developers to enable or disable 
some or all of these callbacks. See the Options documentation for details.
This section describes callbacks set in EXOpenExport. A second callback function, 
DASetStartCallback, can provide information about the progress of a file conversion. 
For more details, see Chapter4, "Data Access Common Functions."
7.1 Callbacks Used In PDF Export
The following information applies to PDF Export.
This section includes the following callbacks:
Section7.1.1, "EX_CALLBACK_ID_CREATENEWFILE"
Section7.1.2, "EX_CALLBACK_ID_NEWFILEINFO"
Section7.1.3, "EX_CALLBACK_ID_PAGECOUNT"
7.1.1 EX_CALLBACK_ID_CREATENEWFILE
This callback is made any time a new output file needs to be generated. This gives the 
developer the chance to execute routines before each new file is created.
It allows the developer to override the standard naming for a file or to redirect entirely 
the IO calls for a file. This callback is made for all output files that are created. It does 
not include the already open initial file passed to EXOpen Export, unless of course 
redirected IO is in use with a pSpec of NULL.
If redirected IO is being used on output files, this callback must be implemented.
For this callback, the pCommandOrInfoData parameter points to a structure of type 
EXFILEIOCALLBACKDATA:
typedef struct EXFILEIOCALLBACKDATAtag
{
HIOFILE
hParentFile;
VTDWORD
dwParentOutputId;
VTDWORD
dwAssociation;
VTDWORD
dwOutputId;
VTDWORD
dwFlags;
VTDWORD
dwSpecType;
Change from pdf to jpg - Convert PDF to JPEG images in C#.net, ASP.NET MVC, WinForms, WPF project
How to convert PDF to JPEG using C#.NET PDF to JPEG conversion / converter library control SDK
changing pdf to jpg; best program to convert pdf to jpg
Change from pdf to jpg - VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.net, ASP.NET MVC, WinForms, WPF project
Online Tutorial for PDF to JPEG (JPG) Conversion in VB.NET Image Application
batch pdf to jpg; change format from pdf to jpg
Callbacks Used In PDF Export
7-2 Oracle Outside In PDF Export Developer's Guide
VTLPVOID
pSpec;
VTLPVOID
pExportData;
VTLPVOID
pTemplateName;
} EXFILEIOCALLBACKDATA;
hParentFile: Handle to the initial output file with which the new file is associated. 
The dwAssociation describes the relationship. This handle is not intended for use 
by the developer. Set by caller.
dwParentOutputId: Set by caller. The type of the parent file. This value is either 
FI_PDF (for generic PDF 1.4), FI_PDFA (for PDF/A-1a compliance), or FI_PDFA_2 
(for PDF/A-2a compliance).
dwAssociation: One of the following values:
CU_ROOT: For the initial output file.
CU_SIBLING: For new files that are not somehow owned by the parent file.
dwOutputId: The type of the new file. This value is either FI_PDF (for generic PDF 
1.4), FI_PDFA (for PDF/A-1a compliance), or FI_PDFA_2 (for PDF/A-2a 
compliance).
dwFlags: Reserved
dwSpecType: IO specification type. For details about IO specifications, see 
Section4.4, "DAOpenDocument."
This member in conjunction with pSpec allows the developer to choose any 
location for the new file or even redirect its IO calls entirely. For more details, see 
Chapter6, "Redirected IO." When the developer receives this callback, the value of 
this element is undefined. Must be set by developer if this callback returns 
SCCERR_OK.
pSpec: This field holds the IO specification of the output file to be created.  pSpec 
points to a buffer that is 1024 bytes in size. If your application needs to set the 
specification of the output file, it may do so by either writing new data into this 
buffer, or by changing the value of pSpec to point to memory owned by your 
application. If pSpec is set to a new value, then your application must ensure that 
this memory stays valid for an appropriate length of time, at least until the next 
callback message is received, or EXRunExport returns.
If the current export operation is using redirected IO, your application must create 
a redirected IO data structure for the new file and set pSpec to point to it. This 
pointer must stay valid until the structure's pClose function is called.
If your application sets dwSpecType to IOTYPE_UNICODEPATH, the 
specification must contain UCS-2 encoded Unicode characters. 
When your application receives this callback, the contents of the buffer pointed to 
by pSpec are undefined. A specification must be defined by your application if this 
callback returns SCCERR_OK. 
pExportData: Pointer to data specific to the individual export. In this case, always 
a pointer to either an EXURLFILEIOCALLBACKDATA structure or an 
EXURLFILEIOCALLBACKDATAW structure. The 
EXURLFILEIOCALLBACKDATAW struct is only used when the SCCOPT_
UNICODECALLBACKSTR option is set to TRUE. These two structures are 
defined in Section7.1.1.1, "EXURLFILEIOCALLBACKDATA / 
EXURLFILEIOCALLBACKDATAW Structures." Set by caller.
pTemplateName: NULL
Online Convert Jpeg to PDF file. Best free online export Jpg image
Download Free Trial. Convert a JPG to PDF. Web Security. All your JPG and PDF files will be permanently erased from our servers after one hour.
change file from pdf to jpg; convert pdf file into jpg format
JPG to PNG Converter | Convert JPEG to PNG, Convert PNG to JPG
Allow to change converting image with adjusted width & height; Change image resolution Open JPEG to PNG Converter first; Load JPG images from local folders in
batch pdf to jpg online; convert pdf photo to jpg
Callbacks Used In PDF Export
Callbacks 7-3
7.1.1.1 EXURLFILEIOCALLBACKDATA / EXURLFILEIOCALLBACKDATAW 
Structures
The EXURLFILEIOCALLBACKDATA and EXURLFILEIOCALLBACKDATAW 
structures are defined as follows:
typedef struct EXURLFILEIOCALLBACKDATAtag 
{
VTDWORD
dwSize;
VTBYTE
szURLString[VT_MAX_URL];
VTDWORD
dwFileID;
} EXURLFILEIOCALLBACKDATA;
typedef struct EXURLFILEIOCALLBACKDATAWtag
{
VTDWORD
dwSize;
VTWORD
wzURLString[VT_MAX_URL];
VTDWORD
dwFileID;
} EXURLFILEIOCALLBACKDATAW;
dwSize: Set to sizeof(EXURLFILEIOCALLBACKDATA) or 
sizeof(EXURLFILEIOCALLBACKDATAW).
szURLString / wzURLString: This parameter can be set by the developer to a new 
URL that references the newly created file. This parameter is optional unless the 
pSpec provided by the developer points to something that cannot be used as a 
URL (as when using redirected IO, for example). In that case, this parameter must 
be set.
This string is written into any output file that needs to reference the newly created 
file, with appropriate conversions between single and double byte output. Because 
this parameter is a URL, it is assumed to be URL encoded. When used in 
conjunction with dwSpecType and pSpec, this parameter can be used to generate 
almost any structure or location for the output files, including things like writing 
the output files into a database and then using a CGI mechanism to retrieve them.
The current size limitation is 2048 characters. If the size exceeds this limit, the URL 
will be truncated and rendered useless.
dwFileID: Set by the product. This is used as a unique identifier for each output 
file generated. It may be used for an OEM-specific purpose.
Return Value
SCCERR_OK: dwSpecType, pSpec and szURLString (or wzURLString) have been 
populated with valid values.
SCCERR_NOTHANDLED: Default naming should be used.
SCCERR_FILEOPENFAILED: Some error was encountered creating a new output.
7.1.2 EX_CALLBACK_ID_NEWFILEINFO
This informational callback is made just after each new file has been created. Like the 
EX_CALLBACK_ID_CREATENEWFILE callback, the pExportData parameter points 
to an EXURLFILEIOCALLBACKDATA or an EXURLFILEIOCALLBACKDATW 
structure, but in this case the structure should be treated as read-only and the 
dwSpecType, pSpec and szURLString (or wzURLString) will be filled in.
This callback occurs for every new file. If the developer has used the EX_CALLBACK_
ID_CREATENEWFILE notification to change the location of (or to set up redirected IO 
Online Convert PDF to Jpeg images. Best free online PDF JPEG
Download Free Trial. Convert a PDF File to JPG. Web Security. Your PDF and JPG files will be deleted from our servers an hour after the conversion.
bulk pdf to jpg; convert pdf pictures to jpg
C# Image Convert: How to Convert Tiff Image to Jpeg, Png, Bmp, &
RasterEdge.XDoc.PDF.dll. C:\input.tif"; String outputDirectory = @"C:\output\"; // Convert tiff to jpg and show How to change Tiff image to Bmp image in your C#
convert pdf file to jpg on; .pdf to .jpg converter online
Callbacks Used In PDF Export
7-4 Oracle Outside In PDF Export Developer's Guide
for) the new file, the data structure echoes back the information set by the developer 
during the EX_CALLBACK_ID_CREATENEWFILE callback.
Return Value
Must be either SCCERR_OK or SCCERR_NOTHANDLED. Return value is currently 
ignored.
7.1.3 EX_CALLBACK_ID_PAGECOUNT
PDF Export uses this callback message to return a count of all of the output pages 
produced during an export operation. This count reflects the number of pages created 
by Oracle Outside In's processing of the input document, which in some cases may 
differ slightly from the number of pages as seen in the document's original application.
This callback occurs during the execution of EXRunExport.
Data Type
VTDWORD
C# Image Convert: How to Convert Adobe PDF to Jpeg, Png, Bmp, &
String inputFilePath = @"C:\input.pdf"; String outputFilePath = @"C:\output.jpg"; // Convert PDF to jpg. C# sample code for PDF to jpg image conversion.
.pdf to jpg; convert pdf file to jpg
JPG to JBIG2 Converter | Convert JPEG to JBIG2, Convert JBIG2 to
Users may easily change image size, rotate image angle, set image rotation in dpi Covert JPG & JBIG2 image with high-quality; Provide user-friendly interface
change from pdf to jpg on; convert .pdf to .jpg
8
Implementation Issues 8-1
8
Implementation Issues
This chapter covers some issues specific to using the Export products.
This chapter includes the following sections:
Section8.1, "Running in 24x7 Environments"
Section8.2, "Running in Multiple Threads or Processes"
Section8.3, "PDF Export Issues"
8.1 Running in 24x7 Environments
To ensure robust 24x7 performance in server applications embedding the different 
export products,  it is strongly recommended that the technology be run in a process 
separate from the server's primary process.
The file filtering technology underlying the technology represents almost a quarter of a 
million lines of code. This code is expected to robustly deal with any stream of bytes, 
of any length (any file), in all cases. Oracle has dedicated, and continues to dedicate, 
significant effort into making this technology extremely robust. However, in real world 
situations, expect that some small number of malformed files may force the filters into 
unstable states. This generally results in either a memory exception (which can be 
trapped and recovered from gracefully), infinite loop or a wild pointer that causes the 
filter to write into memory that is part of the same process but does not belong to the 
filter. In the latter situation, this wild pointer condition cannot be trapped.
On the desktop this is not a significant problem since the number of files being dealt 
with is relatively small. In a 24x7 server environment, however, a wild pointer can be 
extremely disruptive to the server process and produce serious problems. The best 
solution for dealing with this problem is to run any application that reads complex file 
formats in a separate process. This solution protects the application from the 
susceptibility of filtering technology to the unknown quality of input files.
It must be stressed that files that lead to wild pointers or infinite loops occur very 
infrequently, usually as a result of a third-party conversion process or beta versions of 
applications. Oracle is committed to addressing these issues and to updating and 
expanding its testing tools and corpus of documents to proactively minimize this 
"garbage in-garbage out" problem.
8.2 Running in Multiple Threads or Processes
On certain platforms, export  products may be run in a multithreaded or 
multiprocessing application. The thing to remember when doing so is that each thread 
must go through all the steps listed in Chapter1, "Introduction."
VB.NET PDF Convert to Images SDK: Convert PDF to png, gif images
Convert PDF to Jpg, Png, Bmp, Gif, Tiff and Bitmap in ASP.NET. Or directly change PDF to Gif image file in VB.NET program with this demo code.
pdf to jpeg converter; pdf to jpeg
JPEG to PDF Converter | Convert JPEG to PDF, Convert PDF to JPEG
similar software; Support a batch conversion of JPG to PDF with amazingly high speed; Get a compressed PDF file after conversion; Support
convert pdf to jpeg on; convert pdf into jpg online
PDF Export Issues
8-2 Oracle Outside In PDF Export Developer's Guide
8.3 PDF Export Issues
Two issues have been identified when using PDF Export:
There is currently no method of specifying how wide a field in a database should 
be.  Occasionally this will lead to situations where information in a database field 
will not be included in the output graphic, resulting in a loss of content.
If multiple pages of garbage output occur when exporting images, it is possible 
that the default setting of the SCCOPT_FALLBACKFORMAT 
(FallbackFormatEnum on the server version)  option (FI_ASCII-8) is forcing the 
technology to attempt to read files that it cannot identify as text. Setting the 
pertinent option to the value FI_NONE (FallbackFormat on the server version) 
prevents the software from exporting unidentified binary files as though they 
were text.
The SCCOPT_FONTDIRECTORY option must be set.
Only TrueType fonts are supported in PDF Export at this time.
9
Sample Applications 9-1
9
Sample Applications
Each of the sample applications included in this SDK is designed to highlight a specific 
aspect of the technology’s functionality. We ship built versions of these sample 
applications. The compiled executables should be in the root directory where the 
product is installed.
The following copyright applies to all sample applications shipped with this product:
Copyright © Oracle 1993, 2013
All rights reserved.
You have a royalty-free right to use, modify, reproduce and distribute the Sample 
Applications (and/or any modified version) in any way you find useful, provided 
that you agree that Oracle has no warranty obligations or liability for any Sample 
Application files.
This chapter includes the followinig sections:
Section9.1, "Building the Samples on a Windows System"
Section9.2, "An Overview of the Sample Applications"
Section9.3, "Accessing the SDK via a Java Wrapper"
9.1 Building the Samples on a Windows System
Microsoft Visual Studio project files are provided for building each of the sample 
applications. For 32-bit versions of Windows, versions of the project files are provided 
for Visual Studio 6 (.dsp files) and Visual Studio 2005 (.vcproj files). 
Because .vcproj files may not pick up the right compiler on their own, you need to 
make sure that you are building with the Win64 configuration in Visual Studio 2005. 
For 64-bit versions of Windows, only the Visual Studio 2005 versions are available.
The project files for the sample applications can be found in the samplecode\win 
subdirectory of the Oracle Outside In SDK.
For specific information about building the sample applications on your UNIX OS, see 
Chapter3, "UNIX Implementation Details."
Note: To use Transformation Server, you will need to set the 
TSROOT variable to the location of the Transformation Server 
installed SDK. For example, for a Linux version of Transformation 
Server, you would set:
TSROOT=/user/jsmith/ts/ts_linux-x86-32_sdk/sdk.
An Overview of the Sample Applications
9-2 Oracle Outside In PDF Export Developer's Guide
9.2 An Overview of the Sample Applications
Here’s a quick tour of the sample applications provided with this product. Not all of 
the sample applications are provided for both the Windows and UNIX platforms. See 
the heading of each application's subsection for clarification.
This section includes the following sample applications:
Section9.2.1, "pxsample"
Section9.2.2, "export (Windows Only)"
Section9.2.3, "exsimple"
Section9.2.4, "exredir"
Section9.2.6, "pxanno"
9.2.1 pxsample
The following is a basic implementation that uses the default settings for every option. 
This sample is provided for instructional value rather than functionality. The fonts for 
the export are assumed to be in $HOME/fonts for UNIX platforms, and 
C:\WINDOWS\FONTS for Windows platforms; if the directory does not exist, the 
export will fail.
pxsample Inputfile Outputfile
9.2.2 export (Windows Only)
This application was designed to facilitate the testing of the software and should not 
be assumed to be of commercial quality.
The application allows the user to run a single source file. The user can choose the 
source file, an output file and set the various options.
9.2.2.1 The export Main Window
The following figure shows the Main Window for the export application.
Important: No default options are set at initial runtime. The time the 
software is used, click the Options button and set the options. Failure 
to do this generates export errors.
An Overview of the Sample Applications
Sample Applications 9-3
Figure 9–1 1 Export Main Window for PDF Export
The Main Window is composed of several elements, discussed here.
Output Format menu: This menu allows the user to select the type of output to 
generate. An entry for the format(s) you license will appear in this drop-down 
menu
Options button: This opens up a new dialog with one or more tabs exposing the 
options for the selected product.
Source document field: This is the document to be exported. Use the Browse 
button to pick the source file, or type in the path name.
’Export to’ Field: This is the initial resulting output file. Type in a file name or use 
the Browse button to choose a file. Other output files are named based on the one 
chosen here.
Delete button: Clicking this button deletes all files generated by the last export, 
listed in the Status: field. This is useful when multiple output files are produced 
because the default naming rules do not overwrite an existing file. If you run 
Export over and over again with the same output file name, you can produce a 
large number of files. Pressing Delete before each export solves this problem.
’After Export, view output file with default application’ checkbox: If the export 
was successful, checking this box launches the initial output file in the application 
associated with the output flavor's default extension.
Export button: Click this button to start the export process once you’ve 
determined the export settings.
Exit button: Close the Export application.
9.2.3 exsimple
This simple command line driven program allows the user to run a single source file 
through the software. The user  can choose the source file, an output file and set the 
various options.
To run the program, type:
exsimple in_file out_file config_file
in_file is the input file to be converted
out_file is the output location
An Overview of the Sample Applications
9-4 Oracle Outside In PDF Export Developer's Guide
config_file is the configuration file that sets the conversion options. If no 
configuration file is specified, default.cfg in the current directory is used.
The configuration file is a text file used to set the conversion options. We recommend 
reading through the configuration file for more information about valid options and 
their values (use of invalid options results in exsimple not producing output).
Follow these instructions to set configurable options.
Set the Output ID to either FI_PDF (for generic PDF 1.4) or FI_PDFA (for 
PDF/A-1a compliance)  before running the software.
It is also recommended that you set SCCOPT_FALLBACKFORMAT to FI_NONE. 
This prevents the export of unidentified binary files as though they were text, 
which could generate pages of garbage output.
It is required that the "fontdirectory" section of the configuration file be set to point 
to a valid font directory.
9.2.4 exredir
This sample application is based on the exsimple sample application. It is designed to 
demonstrate how to use redirected IO and callbacks when using the software.  It takes 
the same arguments and command line structure as exsimple and the same 
configuration files can be used. For more information, see Section9.2.3, "exsimple."
9.2.5 extract_archive
extract_archive demonstrates using the DATree API to extract all nodes in an archive.    
The application is executed from the command line and takes two parameters, the 
name of the input file and the name of an output directory for the extracted files:
extract_archive input_file output_directory
9.2.6 pxanno
This sample application is provided more for the instructional value its sample code 
offers than for the functionality it provides when executed. It primarily works as an 
example of how to integrate Content Access with PDF Export. This particular 
application does search hit highlighting. However, the general principles of how to get 
ACC text positions from Content Access should be evident from perusing the source 
code.
This command takes the following parameters:
InputFile
OutputFIle
HiliteString
Font Directory (PDF Export only): the location of system fonts.
The following sample command lines demonstrate this command:
pxanno InputFile OutputFile HiliteString FontDirectory
A license for Content Access or Search Export is required to enable use of any of the 
annotation features supported by PDF Export. Contact your sales representative for 
more information.
Documents you may be interested
Documents you may be interested