(This is in Delphi 5)
Here is what I have:
Code: Select all
i, numPages, SourceStartPage : Integer;
sKey, sDevCode, SourceFile : String;
hr : HRESULT;
SourcePDF : hPDF;
Range : array of PXCP_CopyPageRange;
PagesCount : array of Integer;
BookmarkInfo : PXCP_BMInfo;
DocHandle, ParentHandle : PXCp_BMHandle;
strBookmarkTitle : WideString;
Code: Select all
DestinationDocument := 0;
hr := PXCp_Init(@DestinationDocument, PChar(sKey), PChar(sDevCode));
hr := PXCp_ReadDocumentW(DestinationDocument, PWChar(WideString(DestFile)), 0);
ZeroMemory( @(BookmarkInfo), sizeof(BookmarkInfo) );
BookmarkInfo.cbSize := sizeof( BookmarkInfo );
hr := PXCp_GetRootBMItem(DestinationDocument, @(ParentHandle) );
if( IS_DS_FAILED( hr ) ) then begin
ZeroMemory( @(BookmarkInfo), sizeof(BookmarkInfo) );
BookmarkInfo.cbSize := sizeof( BookmarkInfo );
BookmarkInfo.Mask := BMIM_TitleA or BMIM_Style or BMIM_Color or BMIM_Destination;
strBookmarkTitle := 'root';
BookmarkInfo.TitleA := PChar(strBookMarkTitle);
BookmarkInfo.LengthOfTitle := Length(strBookMarkTitle);
hr := PXCp_BMInsertItem(DestinationDocument, 0, PBM_ROOT, @(ParentHandle), @(BookmarkInfo));
with BookmarkInfo do begin
BookmarkInfo.Mask := BMIM_TitleA or BMIM_Style or BMIM_Color or BMIM_Destination;
strBookmarkTitle := 'root';
TitleA := PChar(strBookMarkTitle);
LengthOfTitle := Length(strBookMarkTitle);
style := OutlineStyle_Normal;
Color := clBlack;
with BookmarkInfo.Destination do begin
DestType := Dest_Page;
mask := 0;
Left := 0;
Top := 0;
Right := 0;
Bottom := 0;
Zoom := 0;
PageNumber := 0;
end;
PXCp_BMSetItemInfo( DestinationDocument, ParentHandle, @(BookmarkInfo) );
end;
end;
// BookmarkInfo.Mask := BMIM_TitleA;
// hr := PXCp_BMGetItemInfo( DestinationDocument, ParentHandle, @(BookmarkInfo) );
for i := 0 to NumPDFs do begin
ZeroMemory( @(BookmarkInfo), sizeof( BookmarkInfo ) );
BookmarkInfo.cbSize := sizeof( BookmarkInfo );
BookmarkInfo.Mask := BMIM_TitleA or BMIM_Style or BMIM_Color or BMIM_Destination;
strBookmarkTitle := 'Document ' + IntToStr(i);
BookmarkInfo.TitleA := PChar( strBookmarkTitle );
BookmarkInfo.LengthOfTitle := Length( strBookmarkTitle ) + 1;
ZeroMemory( @(BookmarkInfo), sizeof( BookmarkInfo ) );
BookmarkInfo.cbSize := sizeof( BookmarkInfo );
with BookmarkInfo.Destination do begin
Mask := 0;
DestType := Dest_Page;
PageNumber := PagesCount[i];
Left := 0;
Right := 0;
Top := 0;
Bottom := 0;
Zoom := 0;
end;
BookmarkInfo.Mask := BMIM_TitleA or BMIM_Style or BMIM_Color or BMIM_Destination;
strBookmarkTitle := 'Document ' + IntToStr(i);
BookmarkInfo.TitleA := PChar( strBookmarkTitle );
BookmarkInfo.LengthOfTitle := Length( strBookmarkTitle ) + 1;
BookmarkInfo.Style := 0;
BookmarkInfo.Color := clBlack;
PXCp_BMSetItemInfo( DestinationDocument, ParentHandle, @(BookmarkInfo) );
end;
PXCp_Delete( DestinationDocument );
Result := True;