合并 (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();
}