Skip to content

合并 (Combination)

合并功能用来将多个 PDF 文件合并成一个 PDF 文件。

将多个 PDF 文件合并成一个 PDF 文件

c++
#include "include/common/fs_common.h"
#include "include/pdf/fs_combination.h"
  
// Make sure that SDK has already been initialized successfully.
 
CombineDocumentInfoArray info_array;
info_array.Add(CombineDocumentInfo(input_path + L"AboutFoxit.pdf", L""));
info_array.Add(CombineDocumentInfo(input_path + L"Annot_all.pdf", L""));
info_array.Add(CombineDocumentInfo(input_path + L"SamplePDF.pdf", L""));
 
WString savepath = output_directory + L"Test_Combined.pdf";
uint32 option = Combination::e_CombineDocsOptionBookmark | Combination::e_CombineDocsOptionAcroformRename |
    Combination::e_CombineDocsOptionStructrueTree | Combination::e_CombineDocsOptionOutputIntents |
    Combination::e_CombineDocsOptionOCProperties | Combination::e_CombineDocsOptionMarkInfos |
    Combination::e_CombineDocsOptionPageLabels | Combination::e_CombineDocsOptionNames |
    Combination::e_CombineDocsOptionObjectStream | Combination::e_CombineDocsOptionDuplicateStream;
 
Progressive progress = Combination::StartCombineDocuments(savepath, info_array, option);
Progressive::State progress_state = Progressive::e_ToBeContinued;
while (Progressive::e_ToBeContinued == progress_state) {
    progress_state = progress.Continue();
}
C
#include "include/fs_common_c.h"
#include "include/fs_combination_c.h"  

  
// Make sure that SDK has already been initialized successfully.
 
int info_array_size = 3;
FS_COMBINEDOCUMENTINFO_HANDLE* info_array = malloc(sizeof(FS_COMBINEDOCUMENTINFO_HANDLE) * info_array_size];
FS_WSTR password;
password.str = NULL;
password.len = 0;
auto item = info_array[0];
wchar_t input_file[MAX_FILE_PATH] = { 0 };
swprintf_s(input_file, MAX_FILE_PATH, L"%lsAboutFoxit.pdf", input_path);
FSDK_CombineDocumentInfo_Create((input_path), &password, &info_array[0]);
item = info_array[0];
swprintf_s(input_file, MAX_FILE_PATH, L"%lsAnnot_all.pdf", input_path);
FSDK_CombineDocumentInfo_Create(input, &password, &info_array[1]);
item = info_array[1];
swprintf_s(input_file, MAX_FILE_PATH, L"%lsSamplePDF.pdf", input_path);
FSDK_CombineDocumentInfo_Create(input_file, &password, info_array[2]);
item = info_array[2];
 
FS_UINT32 option = e_FSCombineDocsOptionBookmark | e_FSCombineDocsOptionAcroformRename
| e_FSCombineDocsOptionStructrueTree | e_FSCombineDocsOptionOutputIntents
| e_FSCombineDocsOptionOCProperties | e_FSCombineDocsOptionMarkInfos
| e_FSCombineDocsOptionPageLabels | e_FSCombineDocsOptionNames
| e_FSCombineDocsOptionObjectStream | e_FSCombineDocsOptionDuplicateStream;
 
FS_PROGRESSIVE_HANDLE progressive = NULL;
wchar_t output_file[MAX_FILE_PATH] = { 0 };
swprintf_s(output_file, MAX_FILE_PATH, L"%ls Test_Combined.pdf ", output_directory);
FSDK_Combination_StartCombineDocuments(output_file, info_array, info_array_size, option, NULL, &progressive);
FSState progress_state = e_FSToBeContinued;
while (e_FSToBeContinued == progress_state) {
    FSDK_Progressive_Continue(progressive, &progress_state);
}
for (int i = 0; i < info_array_size; i++) {
    FSDK_CombineDocumentInfo_Release(info_array[i]);
}
free(info_array);
java
import com.foxit.sdk.common.Progressive;
import com.foxit.sdk.pdf.CombineDocumentInfo;
import com.foxit.sdk.pdf.CombineDocumentInfoArray;
import com.foxit.sdk.pdf.Combination;
import static com.foxit.sdk.pdf.Combination.e_CombineDocsOptionBookmark;
import static com.foxit.sdk.pdf.Combination.e_CombineDocsOptionAcroformRename;
import static com.foxit.sdk.pdf.Combination.e_CombineDocsOptionStructrueTree;
import static com.foxit.sdk.pdf.Combination.e_CombineDocsOptionOutputIntents;
import static com.foxit.sdk.pdf.Combination.e_CombineDocsOptionOCProperties;
import static com.foxit.sdk.pdf.Combination.e_CombineDocsOptionMarkInfos;
import static com.foxit.sdk.pdf.Combination.e_CombineDocsOptionPageLabels;
import static com.foxit.sdk.pdf.Combination.e_CombineDocsOptionNames;
import static com.foxit.sdk.pdf.Combination.e_CombineDocsOptionObjectStream;
import static com.foxit.sdk.pdf.Combination.e_CombineDocsOptionDuplicateStream;
import static com.foxit.sdk.pdf.Combination.e_CombineDocsOptionDuplicateStream;
  
// Make sure that SDK has already been initialized successfully.
 
CombineDocumentInfoArray info_array = new CombineDocumentInfoArray();
info_array.add(new CombineDocumentInfo(input_path + "AboutFoxit.pdf", ""));
info_array.add(new CombineDocumentInfo(input_path + "Annot_all.pdf", ""));
info_array.add(new CombineDocumentInfo(input_path + "SamplePDF.pdf", ""));
 
String savepath = output_path + "Test_Combined.pdf";
int option = (int)(e_CombineDocsOptionBookmark | e_CombineDocsOptionAcroformRename |
    e_CombineDocsOptionStructrueTree | e_CombineDocsOptionOutputIntents |
    e_CombineDocsOptionOCProperties | e_CombineDocsOptionMarkInfos |
    e_CombineDocsOptionPageLabels | e_CombineDocsOptionNames |
    e_CombineDocsOptionObjectStream | e_CombineDocsOptionDuplicateStream);
 
Progressive progress = Combination.startCombineDocuments(savepath, info_array, option, null);
int progress_state = Progressive.e_ToBeContinued;
while (Progressive.e_ToBeContinued == progress_state)
{
    progress_state = progress.resume();
}
py
import sys
import site

if sys.version_info.major == 2:
    _PYTHON2_ = True
else:
    _PYTHON2_ = False

if _PYTHON2_:
    # replace with the python2 lib path
    site.addsitedir(‘../../../’)
    from FoxitPDFSDKPython2 import *
else:
    from FoxitPDFSDKPython3 import *

...
# Make sure that SDK has already been initialized successfully.
 
info_array = CombineDocumentInfoArray()
info_array.Add(CombineDocumentInfo(input_path + "AboutFoxit.pdf", ""))
info_array.Add(CombineDocumentInfo(input_path + "Annot_all.pdf", ""))
info_array.Add(CombineDocumentInfo(input_path + "SamplePDF.pdf", ""))
 
savepath = output_directory + "Test_Combined.pdf"
option = Combination.e_CombineDocsOptionBookmark | Combination.e_CombineDocsOptionAcroformRename | \
    Combination.e_CombineDocsOptionStructrueTree | Combination.e_CombineDocsOptionOutputIntents | \
    Combination.e_CombineDocsOptionOCProperties | Combination.e_CombineDocsOptionMarkInfos | \
    Combination.e_CombineDocsOptionPageLabels | Combination.e_CombineDocsOptionNames | \
    Combination.e_CombineDocsOptionObjectStream | Combination.e_CombineDocsOptionDuplicateStream
 
progress = Combination.StartCombineDocuments(savepath, info_array, option)
progress_state = Progressive.e_ToBeContinued
while Progressive.e_ToBeContinued == progress_state:
    progress_state = progress.Continue()
objc
#include "include/FSPDFObjC.h"
  
// Make sure that SDK has already been initialized successfully.
 
FSCombineDocumentInfoArray* info_array = [[FSCombineDocumentInfoArray alloc]init];
[info_array add:[[FSCombineDocumentInfo alloc]initWithFile_path:[input_path stringByAppendingPathComponent:@"AboutFoxit.pdf"] password:@""]];
[info_array add:[[FSCombineDocumentInfo alloc]initWithFile_path:[input_path stringByAppendingPathComponent:@"Annot_all.pdf"] password:@""]];
[info_array add:[[FSCombineDocumentInfo alloc]initWithFile_path:[input_path stringByAppendingPathComponent:@"SamplePDF.pdf"] password:@""]];
  
NSString* savepath = [output_directory stringByAppendingPathComponent:@"Test_Combined.pdf"];
int option = (int)(FSCombinationCombineDocsOptionBookmark | FSCombinationCombineDocsOptionAcroformRename |
    FSCombinationCombineDocsOptionStructrueTree | FSCombinationCombineDocsOptionOutputIntents |
    FSCombinationCombineDocsOptionOCProperties | FSCombinationCombineDocsOptionMarkInfos |
    FSCombinationCombineDocsOptionPageLabels | FSCombinationCombineDocsOptionNames |
    FSCombinationCombineDocsOptionObjectStream | FSCombinationCombineDocsOptionDuplicateStream);
  
FSProgressive* progress = [FSCombination startCombineDocuments:savepath document_array:info_array options:option pause:nil];
int progress_state = FSProgressiveToBeContinued;
while (FSProgressiveToBeContinued == progress_state)
{
    progress_state = [progress resume];
}
js
const FSDK = require("@foxitsoftware/foxit-pdf-sdk-node");

...
// Make sure that SDK has already been initialized successfully.
 
let file_info1 = new FSDK.CombineDocumentInfo (input_path + "Annot_all.pdf", "");
file_info1.SetBookmarkTitle("Annot_all.pdf");
file_info1.SetPDFFileName("Annot_all.pdf");

let pdfdoc = new FSDK.PDFDoc(input_path + "PDF2Img.pdf");
if (FSDK.e_ErrSuccess != pdfdoc.Load("")) return 1;
let file_info2 = new FSDK.CombineDocumentInfo(pdfdoc);
file_info2.SetBookmarkTitle("PDF2Img.pdf");
file_info2.SetPDFFileName("PDF2Img.pdf");

let file_info3 = new FSDK.CombineDocumentInfo(input_path + "SamplePDF.pdf", "");
file_info3.SetBookmarkTitle("SamplePDF.pdf");
file_info3.SetPDFFileName("SamplePDF.pdf");

let combine_document_array = new FSDK.CombineDocumentInfoArray();  
combine_document_array.Add(file_info1);
combine_document_array.Add(file_info2);
combine_document_array.Add(file_info3);
 
let option = FSDK.Combination.e_CombineDocsOptionBookmark | FSDK.Combination.FSDK.e_CombineDocsOptionAcroformRename |
FSDK.Combination.e_CombineDocsOptionStructrueTree | FSDK.Combination.e_CombineDocsOptionOutputIntents | 
FSDK.Combination.e_CombineDocsOptionOCProperties | FSDK.Combination.e_CombineDocsOptionMarkInfos | 
FSDK.Combination.e_CombineDocsOptionPageLabels | FSDK.Combination.e_CombineDocsOptionNames | 
FSDK.Combination.e_CombineDocsOptionObjectStream | FSDK.Combination.e_CombineDocsOptionDuplicateStream;
 
FSDK.Combination.StartCombineDocuments(output_directory + "pdfcombination.pdf", combine_document_array, option, null);
csharp
using foxit.pdf;
  
// Make sure that SDK has already been initialized successfully.
 
CombineDocumentInfoArray info_array = new CombineDocumentInfoArray();
info_array.Add(new CombineDocumentInfo(input_path + "AboutFoxit.pdf", ""));
info_array.Add(new CombineDocumentInfo(input_path + "Annot_all.pdf", ""));
info_array.Add(new CombineDocumentInfo(input_path + "SamplePDF.pdf", ""));
 
String savepath = output_path + "Test_Combined.pdf";
int option = (int)(Combination.CombineDocsOptions.e_CombineDocsOptionBookmark | Combination.CombineDocsOptions.e_CombineDocsOptionAcroformRename |
    Combination.CombineDocsOptions.e_CombineDocsOptionStructrueTree | Combination.CombineDocsOptions.e_CombineDocsOptionOutputIntents |
    Combination.CombineDocsOptions.e_CombineDocsOptionOCProperties | Combination.CombineDocsOptions.e_CombineDocsOptionMarkInfos |
    Combination.CombineDocsOptions.e_CombineDocsOptionPageLabels | Combination.CombineDocsOptions.e_CombineDocsOptionNames |
    Combination.CombineDocsOptions.e_CombineDocsOptionObjectStream | Combination.CombineDocsOptions.e_CombineDocsOptionDuplicateStream);
 
Progressive progress = Combination.StartCombineDocuments(savepath, info_array, option, null);
Progressive.State progress_state = Progressive.State.e_ToBeContinued;
while (Progressive.State.e_ToBeContinued == progress_state)
{
    progress_state = progress.Continue();
}