3D 渲染
PDF 中的 3D 渲染可以将 3D 模型转换为 2D 图像或动画,并嵌入到文档中。3D 模型可以使用专门的 3D 建模软件或 CAD ( 计算机辅助设计) 软件创建,然后渲染成可以在 PDF 中查看的 2D 格式。
3D 注释是一种功能,允许用户在 PDF 中的 3D 模型的特定部分添加上下文信息。注释可以包括文本、图片,甚至是指向外部资源的链接,从而提供有关模型的更详细的信息和见解。
系统要求
平台: Windows
开发语言: C, C++, Java, C#, Python
授权许可: 包含 3D
模块的授权码
SDK 版本: 福昕 PDF SDK 10.0 或更高版本
显示 3D 注释
c++
#include "include/addon/3d/fs_pdf3d.h"
// Load PDF document.
...
PDF3DContext pdf_context = PDF3DContext(pdf_doc);
...
void CXXXView::On3dDisplay3dannot()
{
// Get the 3d annotation instance array.
PDF3DAnnotInstanceArray annot_data_arr = pdf_context.GetPage3DAnnotArray(0);
if (annot_data_arr.GetSize() == 0) return;
// Class parameter.
PDF3DAnnotInstance annotData = annot_data_arr.GetAt(0);
// Activate the canvas to display the 3d annotation. Pass in a window handle to embed canvas.
annotData.ActivateCanvas(this->GetSafeHwnd());
}
c
#include "include/fs_pdf3d_c.h"
// Load PDF document.
...
FS_PDF3DCONTEXT_HANDLE pdf_context;
FSDK_PDF3DContext_Create(pdf_doc, &pdf_context);
// Get the 3d annotation instance array.
FS_PDF3DANNOTINSTANCE_HANDLE* annot_data_arr = NULL;
FS_UINT32 array_length;
FSDK_PDF3DContext_GetPage3DAnnotArray(pdf_context, 0, NULL, &array_length);
if (array_length == 0) return;
annot_data_arr = (FS_PDF3DANNOTINSTANCE_HANDLE*)malloc(sizeof(FS_PDF3DANNOTINSTANCE_HANDLE) * array_length);
FSDK_PDF3DContext_GetPage3DAnnotArray(pdf_context, 0, annot_data_arr, &array_length);
// Class parameter.
FS_PDF3DANNOTINSTANCE_HANDLE annotData = annot_data_arr[0];
// Activate the canvas to display the 3d annotation. Pass in a window handle to embed canvas.
FSDK_PDF3DAnnotInstance_ActivateCanvas(annotData, window handle);
java
import com.foxit.sdk.addon.pdf3d.*;
// Load PDF document.
...
PDF3DContext pdf_context = new PDF3DContext(pdf_doc);
// Get the 3d annotation instance array.
PDF3DAnnotInstanceArray annot_data_arr = pdf_context.getPage3DAnnotArray(0);
if(annot_data_arr.getSize() == 0 ) return;
// Class parameter.
PDF3DAnnotInstance annotData = annot_data_arr.getAt(0);
// Activate the canvas to display the 3d annotation. Pass in a "window handle" to embed canvas.
annotData.activateCanvas(window handle);
py
import os
import sys
// Load PDF document.
...
pdf_context = PDF3DContext(pdf_doc)
// Get the 3d annotation instance array.
annot_data_arr = pdf_context.GetPage3DAnnotArray(0)
if(annot_data_arr.GetSize() == 0 ) return
// Class parameter.
annotData = annot_data_arr.GetAt(0)
// Activate the canvas to display the 3d annotation. Pass in a "window handle" to embed canvas.
annotData.ActivateCanvas(window handle)
csharp
using foxit.addon.pdf3d;
// Load PDF document.
...
PDF3DContext pdf_context = new PDF3DContext(pdf_doc);
// Get the 3d annotation instance array.
PDF3DAnnotInstanceArray annot_data_arr = pdf_context.GetPage3DAnnotArray(0);
if (annot_data_arr.GetSize() == 0) return;
// Class parameter.
PDF3DAnnotInstance annotData = annot_data_arr.GetAt(0);
// Activate the canvas to display the 3d annotation. Pass in a window handle to embed canvas.
annotData.ActivateCanvas(window handle);
设置渲染模式和 controller
c++
#include "include/addon/3d/fs_pdf3d.h"
// Rotate to view 3D annotations.
annotData.SetController(PDF3DAnnotInstance::e_ControllerRotate);
// Render 3D annotations as transparent.
annotData.SetRenderMode(PDF3DAnnotInstance::e_RenderModeTransparent);
c
#include "include/fs_pdf3d_c.h"
// Rotate to view 3D annotations.
FSDK_PDF3DAnnotInstance_SetController(FSPDF3DController::e_FSControllerRotate);
// Render 3D annotations as transparent.
FSDK_PDF3DAnnotInstance_SetRenderMode(FSPDF3DRenderMode::e_FSRenderModeTransparent);
java
import com.foxit.sdk.addon.pdf3d.*;
// Rotate to view 3D annotations.
annotData.setController(e_ControllerRotate);
// Render 3D annotations as transparent.
annotData.setRenderMode(e_RenderModeTransparent);
py
import os
import sys
// Rotate to view 3D annotations.
annotData.SetController(PDF3DAnnotInstance.e_ControllerRotate)
// Render 3D annotations as transparent.
annotData.SetRenderMode(PDF3DAnnotInstance.e_RenderModeTransparent)
csharp
using foxit.addon.pdf3d;
// Rotate to view 3D annotations.
annotData.SetController(PDF3DAnnotInstance.PDF3DController.e_ControllerRotate);
// Render 3D annotations as transparent.
annotData.SetRenderMode(PDF3DAnnotInstance.PDF3DRenderMode.e_RenderModeTransparent);