PDF 页面 (Page)
PDF 页面是 PDF Document 基础和重要的组成部分。PDFPage 使用函数 PDFDoc.getPage
从文档中获取 PDFPage 对象。页面级 API 提供了解析/渲染/编辑 (包括创建、删除、扁平化等) 页面、获取 PDF 注释、获取和设置页面属性等功能。对于大多数情况,在渲染和处理页面之前,需要先对页面进行解析。
获取页面的大小
c++
#include "include/pdf/fs_pdfpage.h"
using namespace foxit;
using namespace common;
using namespace pdf;
...
// Assuming PDFPage page has been loaded and parsed.
int width = static_cast<int>(page.GetWidth());
int height = static_cast<int>(page.GetHeight());
C
#include "include/fs_basictypes_c.h"
#include "include/fs_pdfpage_c.h"
...
// Assuming FS_PDFPAGE_HANDLE page has been loaded and parsed.
float fWidth;
float fHeight;
FSDK_PDFPage_GetWidth(page, &fWidth);
FSDK_PDFPage_GetHeight(page, &fHeight);
int width= (int)fWidth;
int height= (int)fWidth;
java
import static com.foxit.sdk.pdf.PDFPage.*;
...
// Assuming PDFPage page has been loaded and parsed.
...
int width = (int) page.getWidth();
int height = (int) page.getHeight();
...
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 *
...
# Assuming PDFPage page has been loaded and parsed.
width = int(page.GetWidth())
height = int(page.GetHeight())
objc
#include "FSPDFObjC.h"
...
// Assuming FSPDFPage page has been loaded and parsed.
...
float width = [page getWidth];
float height = [page getHeight];
...
js
const FSDK = require("@foxitsoftware/foxit-pdf-sdk-node");
...
// Assuming PDFPage page has been loaded and parsed.
let width = page.GetWidth();
let height = page.GetHeight();
csharp
using foxit.pdf;
using foxit.common;
...
// Assuming PDFPage page has been loaded and parsed.
...
int width = (int)(page.GetWidth());
int height = (int)(page.GetHeight());
...
计算页面内容的边界框
c++
#include "include/pdf/fs_pdfpage.h"
using namespace foxit;
using namespace common;
using namespace pdf;
...
//Assuming PDFDoc doc has been loaded.
//Assuming PDFPage page has been loaded and parsed.
RectF ret = page.CalcContentBBox(PDFPage::e_CalcContentsBox);
...
C
#include "include/fs_basictypes_c.h"
#include "include/fs_pdfpage_c.h"
...
// Assuming FS_PDFDOC_HANDLE doc has been loaded.
// Assuming FS_PDFPAGE_HANDLE page has been loaded and parsed.
FSRectF ret;
ret.left = 0;
ret.bottom = 0;
ret.top = 0;
ret.right = 0;
FSDK_PDFPage_CalcContentBBox(page, e_FSCalcContentsBox, &ret);
...
java
import static com.foxit.sdk.pdf.PDFPage.*;
...
// Assuming PDFPage page has been loaded and parsed.
...
RectF calcRc = page.calcContentBBox(e_CalcContentsBox);
float fcalcRc = calcRc.width();
float fcalcRcHeight = calcRc.height();
py
import sys
import site
if sys.version_info.major == 2:
_PYTHON2_ = True
else:
_PYTHON2_ = False
if _PYTHON2_:
#replace with python2 lib path
site.addsitedir('../../../')
from FoxitPDFSDKPython2 import *
else:
from FoxitPDFSDKPython3 import *
...
# Assuming PDFDoc doc has been loaded.
# Assuming PDFPage page has been loaded and parsed.
ret = page.CalcContentBBox(PDFPage.e_CalcContentsBox)
...
objc
#include "FSPDFObjC.h"
...
// Assuming FSPDFPage page has been loaded and parsed.
...
FSRectF* content_box = [page calcContentBBox:FSPDFPageCalcContentsBox];
js
const FSDK = require("@foxitsoftware/foxit-pdf-sdk-node");
...
// Assuming PDFDoc doc has been loaded.
// Assuming PDFPage page has been loaded and parsed.
let ret = page.CalcContentBBox(FSDK.PDFPage.e_CalcContentsBox);
...
csharp
using foxit.pdf;
...
// Assuming PDFPage page has been loaded and parsed.
...
RectF ret = page.CalcContentBBox(PDFPage.CalcMarginMode.e_CalcContentsBox);
...
创建一个 PDF 页面以及设置其页面大小
c++
#include "include/pdf/fs_pdfdoc.h"
#include "include/pdf/fs_pdfpage.h"
using namespace foxit;
using namespace common;
using namespace pdf;
...
// Assuming PDFDoc doc has been loaded.
PDFPage page = doc.InsertPage(index, PageWidth, PageHeight);
C
#include "include/fs_basictypes_c.h"
#include "include/fs_pdfdoc_c.h"
#include "include/fs_pdfpage_c.h"
...
// Assuming FS_PDFDOC_HANDLE doc has been loaded.
FS_PDFPAGE_HANDLE page;
FSDK_PDFDoc_InsertPage(doc, index, PageWidth, PageHeight, &page);
java
import static com.foxit.sdk.pdf.PDFPage.*;
...
// Assuming PDFDoc doc has been loaded.
// Insert a new blank PDF page to document, which will be inserted to the first page.
PDFPage newBlankPage = doc.insertPage(-1, 500, 800);
// Insert a new blank PDF page to document, which will be inserted at index 1.
PDFPage newBlankPage = doc.insertPage(1, 500, 800);
// Insert a new blank PDF page to document, which will be inserted to the end.
PDFPage newBlankPage = doc.insertPage(doc.getPageCount(), e_SizeLetter);
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 *
...
# Assuming PDFDoc doc has been loaded.
page = doc.InsertPage(index, PageWidth, PageHeight)
objc
#include "FSPDFObjC.h"
...
// Assuming FSPDFDoc doc has been loaded.
...
float w = 612.0;
float h = 792.0;
FSPDFPage* page = [doc insertPage:index width:w height:h];
js
const FSDK = require("@foxitsoftware/foxit-pdf-sdk-node");
...
// Assuming PDFDoc doc has been loaded.
let page = doc.InsertPage(index, PageWidth, PageHeight)
csharp
using foxit.pdf;
...
// Assuming PDFDoc doc has been loaded.
PDFPage page = doc.InsertPage(index, PageWidth, PageHeight);
删除一个 PDF 页面
c++
#include "include/pdf/fs_pdfdoc.h"
#include "include/pdf/fs_pdfpage.h"
using namespace foxit;
using namespace common;
using namespace pdf;
...
// Assuming PDFDoc doc has been loaded.
// Remove a PDF page by page index.
doc.RemovePage(index);
// Remove a specified PDF page.
doc.RemovePage(&page);
...
C
#include "include/fs_basictypes_c.h"
#include "include/fs_pdfdoc_c.h"
#include "include/fs_pdfpage_c.h"
...
// Assuming FS_PDFDOC_HANDLE doc has been loaded.
FS_PDFPAGE_HANDLE page;
FSDK_PDFDoc_InsertPage(doc, index, PageWidth, PageHeight, &page);
java
import static com.foxit.sdk.pdf.PDFDoc.*;
...
// Assuming PDFDoc doc has been loaded.
// Remove a PDF page by page index.
doc.removePage(index);
// Remove a specified PDF page.
doc.removePage(page);
...
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 *
...
# Assuming PDFDoc doc has been loaded.
# Remove a PDF page by page index.
doc.RemovePage(index)
# Remove a specified PDF page.
doc.RemovePage(page)
...
objc
#include "FSPDFObjC.h"
...
// Assuming FSPDFDoc doc has been loaded.
// Remove a PDF page by page index.
[doc removePage:index];
// Remove a specified PDF page.
[doc removePageWithPDFPage:page];
...
js
const FSDK = require("@foxitsoftware/foxit-pdf-sdk-node");
...
// Assuming PDFDoc doc has been loaded.
// Remove a PDF page by page index.
doc.RemovePage(index)
// Remove a specified PDF page.
doc.RemovePage(page)
...
csharp
using foxit.pdf;
...
// Assuming PDFDoc doc has been loaded.
// Remove a PDF page by page index.
doc.RemovePage(index);
// Remove a specified PDF page.
doc.RemovePage(page);
...
扁平化一个 PDF 页面
c++
#include "include/pdf/fs_pdfpage.h"
using namespace foxit;
using namespace common;
using namespace pdf;
...
// Assuming PDFPage page has been loaded and parsed.
// Flatten all contents of a PDF page.
page.Flatten(true, PDFPage::e_FlattenAll);
// Flatten a PDF page without annotations.
page.Flatten(true, PDFPage::e_FlattenNoAnnot);
// Flatten a PDF page without form controls.
page.Flatten(true, PDFPage::e_FlattenNoFormControl);
// Flatten a PDF page without annotations and form controls (Equals to nothing to be flattened).
page.Flatten(true, PDFPage::e_FlattenNoAnnot | PDFPage::e_FlattenNoFormControl);
...
C
#include "include/fs_basictypes_c.h"
#include "include/fs_pdfpage_c.h"
...
// Assuming FS_PDFPAGE_HANDLE page has been loaded and parsed.
// Flatten all contents of a PDF page.
FS_BOOL return_Flatten;
FSDK_PDFPage_Flatten(page, true, e_FSFlattenAll, &return_Flatten);
// Flatten a PDF page without annotations.
FSDK_PDFPage_Flatten(page, true, e_FSFlattenNoAnnot, &return_Flatten);
// Flatten a PDF page without form controls.
FSDK_PDFPage_Flatten(page, true, e_FSFlattenNoFormControl, &return_Flatten);
// Flatten a PDF page without annotations and form controls (Equals to nothing to be flattened).
FSDK_PDFPage_Flatten(page, true, e_FSFlattenNoAnnot | e_FSFlattenNoFormControl, &return_Flatten);
...
java
import static com.foxit.sdk.pdf.PDFPage.*;
...
// Assuming PDFPage page has been loaded and parsed.
// Flatten all contents of a PDF page.
page.flatten(true, e_FlattenAll);
// Flatten a PDF page without annotations.
page.flatten(true, e_FlattenNoAnnot);
// Flatten a PDF page without form controls.
page.flatten(true, e_FlattenNoFormControl);
// Flatten a PDF page without annotations and form controls (Equals to nothing to be flattened).
page.flatten(true, e_FlattenNoAnnot | e_FlattenNoFormControl);
...
py
import sys
import site
if sys.version_info.major == 2:
_PYTHON2_ = True
else:
_PYTHON2_ = False
if _PYTHON2_:
# replace with python2 lib path
site.addsitedir('../../../')
from FoxitPDFSDKPython2 import *
else:
from FoxitPDFSDKPython3 import *
page = PDFPage()
...
# Assuming PDFPage page has been loaded and parsed.
# Flatten all contents of a PDF page.
page.Flatten(True, PDFPage.e_FlattenAll)
# Flatten a PDF page without annotations.
page.Flatten(True, PDFPage.e_FlattenNoAnnot)
# Flatten a PDF page without form controls.
page.Flatten(True, PDFPage.e_FlattenNoFormControl)
# Flatten a PDF page without annotations and form controls (Equals to nothing to be flattened).
page.Flatten(True, PDFPage.e_FlattenNoAnnot | PDFPage.e_FlattenNoFormControl)
...
objc
#include "FSPDFObjC.h"
...
// Assuming FSPDFPage page has been loaded and parsed.
// Flatten all contents of a PDF page.
[page flatten:YES options:FSPDFPageFlattenAll];
// Flatten a PDF page without annotations.
[page flatten:YES options:FSPDFPageFlattenNoAnnot];
// Flatten a PDF page without form controls.
[page flatten:YES options:FSPDFPageFlattenNoFormControl];
// Flatten a PDF page without annotations and form controls (Equals to nothing to be flattened).
[page flatten:YES options:FSPDFPageFlattenNoAnnot|FSPDFPageFlattenNoFormControl];
...
js
const FSDK = require("@foxitsoftware/foxit-pdf-sdk-node");
...
let page = new FSDK.PDFPage();
// Assuming PDFPage page has been loaded and parsed.
// Flatten all contents of a PDF page.
page.Flatten(true, FSDK.PDFPage.e_FlattenAll)
// Flatten a PDF page without annotations.
page.Flatten(true, FSDK.PDFPage.e_FlattenNoAnnot)
// Flatten a PDF page without form controls.
page.Flatten(true, FSDK.PDFPage.e_FlattenNoFormControl)
// Flatten a PDF page without annotations and form controls (Equals to nothing to be flattened).
page.Flatten(true, FSDK.PDFPage.e_FlattenNoAnnot | PDFPage.e_FlattenNoFormControl)
...
csharp
using foxit.pdf;
...
// Assuming PDFPage page has been loaded and parsed.
// Flatten all contents of a PDF page.
page.Flatten(true, (int)PDFPage.FlattenOptions.e_FlattenAll);
// Flatten a PDF page without annotations.
page.Flatten(true, (int)PDFPage.FlattenOptions.e_FlattenNoAnnot);
// Flatten a PDF page without form controls.
page.Flatten(true, (int)PDFPage.FlattenOptions.e_FlattenNoFormControl);
// Flatten a PDF page without annotations and form controls (Equals to nothing to be flattened).
page.Flatten(true, (int)(PDFPage.FlattenOptions.e_FlattenNoAnnot | PDFPage.FlattenOptions.e_FlattenNoFormControl));
...
获取和设置 PDF 文档中的页面缩略图
c++
#include "include/pdf/fs_pdfpage.h"
using namespace foxit;
using namespace common;
using namespace pdf;
...
// Assuming PDFPage page has been loaded and parsed.
Bitmap bmp();
// Write bitmap data to the bmp object.
...
// Set thumbnails to the page.
page.SetThumbnail(bmp);
// Load thumbnails in the page.
Bitmap bitmap = page.LoadThumbnail();
C
#include "include/fs_basictypes_c.h"
#include "include/fs_pdfpage_c.h"
...
// Assuming FS_PDFPAGE_HANDLE page has been loaded and parsed.
FS_BITMAP_HANDLE bmp;
FSDK_Bitmap_Create0(&bmp);
// Write bitmap data to the bmp object.
...
// Set thumbnails to the page.
FSDK_PDFPage_SetThumbnail(page, bmp);
// Load thumbnails in the page.
FS_BITMAP_HANDLE bitmap;
FSDK_PDFPage_LoadThumbnail(page, &bitmap);
...
java
import static com.foxit.sdk.pdf.PDFPage.*;
...
// Assuming PDFPage page has been loaded and parsed.
...
// Load the thumbnail bitmap. If the return value of function db.isEmpty() is true means no thumbnail can be found.
Bitmap db = page.loadThumbnail();
if (!db.isEmpty())
{
int dbWidth = db.getWidth();
int dbHeight = db.getHeight();
}
// Set page thumbnail, db should be a valid bitmap.
page.setThumbnail(db);
...
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 *
...
# Assuming PDFPage page has been loaded and parsed.
bmp = Bitmap()
# Write bitmap data to the bmp object.
...
# Set thumbnails to the page.
page.SetThumbnail(bmp)
# Load thumbnails in the page.
bitmap = page.LoadThumbnail()
...
objc
#include "FSPDFObjC.h"
...
// Assuming FSPDFPage page has been loaded and parsed.
FSBitmap* thumbnail_bmp = [page loadThumbnail];
js
const FSDK = require("@foxitsoftware/foxit-pdf-sdk-node");
...
// Assuming PDFPage page has been loaded and parsed.
let bitmap = new FSDK.Bitmap();
// Write bitmap data to the bmp object.
...
// Set thumbnails to the page.
page.SetThumbnail(bmp)
// Load thumbnails in the page.
bitmap = page.LoadThumbnail()
...
csharp
using foxit.pdf;
...
// Assuming PDFPage page has been loaded and parsed.
// Get page thumbnails.
page.LoadThumbnail();
// Set thumbnails to the page.
// Assuming Bitmap bitmap has been created.
page.SetThumbnail(bitmap);
...