Skip to content

矢量图写入 PDF (Vector Graphics) ​

从 12.0 版本开始,可通过 VectorGraphics 将 SVG、WMF/EMF 矢量图写入 PDF。模块在内部自行打开目标 PDF、写入内容并保存;业务代码只需传入 PDF 路径与矢量文件路径,不必先用 PDFDoc 打开同一份文档。

完整可运行示例见产品包 examples/simple_demo/vectorgraphics。类与方法细节见 API 文档。

系统要求 ​

  • 平台:Win32、Win64、Linux64、Mac(不支持 Linux x86 / Linux ARM、Mac ARM)
  • 开发语言:C、C++、Java、C#、Python、Objective-C、Node.js、Go
  • 授权许可:Library::Initialize 所用授权码需包含 Conversion 模块;
  • 运行依赖:矢量图引擎库 fxvectorgraphics(通过 VectorGraphics::Initialize(library_path) 按完整文件路径加载)

基本流程 ​

  1. Library::Initialize(sn, key)(授权含 Conversion)
  2. VectorGraphics::Initialize(library_path)(library_path = fxvectorgraphics 完整路径)
  3. 调用 InsertSVGToPDF / InsertSVGToPage / InsertWMFToPDF / InsertWMFToPage
  4. VectorGraphics::Release,最后 Library::Release

插入 SVG ​

  • InsertSVGToPDF:在指定位置插入新页并绘制 SVG;pdf_path 为空或不存在时,按 out_pdf_path 新建 PDF。参数含页宽高(pt)与 DPI。
  • InsertSVGToPage:将 SVG 绘制到已有页的矩形区域(左下角坐标 x/y,宽高与 DPI)。源 PDF 路径不可为空。
c++
using namespace foxit;
using namespace foxit::common;
using namespace foxit::addon::vectorgraphics;

// 1) 初始化 PDF SDK(授权需含 Conversion 模块)。
Library::Initialize(sn, key);

// 2) 加载矢量图引擎:必须传入 fxvectorgraphics 的完整路径(不可为空)。
WString library_path = L"C:/path/to/fxvectorgraphics.dll";  // Linux: .../libfxvectorgraphics.so
VectorGraphics::Initialize(library_path);

// 新建 PDF,插入 SVG 为 A4 新页(595 x 842 pt),dpi = 96。
VectorGraphics::InsertSVGToPDF(L"", svg_path, out_pdf_new, 0, 595.f, 842.f, 96);

// 写入已有 PDF 第 0 页矩形区域。
VectorGraphics::InsertSVGToPage(pdf_path, svg_path, out_pdf_page, 0, 50.f, 50.f, 200.f, 200.f, 96);

VectorGraphics::Release();
Library::Release();
C
FSDK_Library_Initialize(sn, key);

const wchar_t* library_path = L"C:/path/to/fxvectorgraphics.dll";
FSDK_VectorGraphics_Initialize(library_path);

FSDK_VectorGraphics_InsertSVGToPDF(L"", svg_path, out_pdf_new, 0, 595.f, 842.f, 96);
FSDK_VectorGraphics_InsertSVGToPage(pdf_path, svg_path, out_pdf_page, 0, 50.f, 50.f, 200.f, 200.f, 96);

FSDK_VectorGraphics_Release();
FSDK_Library_Release();
java
Library.initialize(sn, key);

String libraryPath = "C:/path/to/fxvectorgraphics.dll";
VectorGraphics.initialize(libraryPath);

VectorGraphics.insertSVGToPDF("", svgPath, outPdfNew, 0, 595.f, 842.f, 96);
VectorGraphics.insertSVGToPage(pdfPath, svgPath, outPdfPage, 0, 50.f, 50.f, 200.f, 200.f, 96);

VectorGraphics.release();
Library.release();
py
Library.Initialize(sn, key)

library_path = "C:/path/to/fxvectorgraphics.dll"
VectorGraphics.Initialize(library_path)

VectorGraphics.InsertSVGToPDF("", svg_path, out_pdf_new, 0, 595.0, 842.0, 96)
VectorGraphics.InsertSVGToPage(pdf_path, svg_path, out_pdf_page, 0, 50.0, 50.0, 200.0, 200.0, 96)

VectorGraphics.Release()
Library.Release()
objc
[FSLibrary initialize:sn key:key];

NSString* libraryPath = @"/path/to/libfxvectorgraphics.dylib";
[FSVectorGraphics initialize:libraryPath];

[FSVectorGraphics insertSVGToPDF:@"" svg_path:svgPath out_pdf_path:outPdfNew
                      page_index:0 page_width_pt:595.0f page_height_pt:842.0f dpi:96];
[FSVectorGraphics insertSVGToPage:pdfPath svg_path:svgPath out_pdf_path:outPdfPage
                       page_index:0 x:50.0f y:50.0f width:200.0f height:200.0f dpi:96];

[FSVectorGraphics destroy];
[FSLibrary destroy];
js
const FSDK = require("@fuxinsoft/fuxin-pdf-sdk-node");

FSDK.Library.Initialize(sn, key);

let library_path = "C:/path/to/fxvectorgraphics.dll";
FSDK.VectorGraphics.Initialize(library_path);

FSDK.VectorGraphics.InsertSVGToPDF("", svg_path, out_pdf_new, 0, 595.0, 842.0, 96);
FSDK.VectorGraphics.InsertSVGToPage(pdf_path, svg_path, out_pdf_page, 0, 50.0, 50.0, 200.0, 200.0, 96);

FSDK.VectorGraphics.Release();
FSDK.Library.Release();
csharp
Library.Initialize(sn, key);

string library_path = @"C:\path\to\fxvectorgraphics.dll";
VectorGraphics.Initialize(library_path);

VectorGraphics.InsertSVGToPDF("", svg_path, out_pdf_new, 0, 595.0f, 842.0f, 96);
VectorGraphics.InsertSVGToPage(pdf_path, svg_path, out_pdf_page, 0, 50.0f, 50.0f, 200.0f, 200.0f, 96);

VectorGraphics.Release();
Library.Release();
go
fsdk.LibraryInitialize(sn, key)

libraryPath := "/path/to/libfxvectorgraphics.so"
fsdk.VectorGraphicsInitialize(libraryPath)

fsdk.VectorGraphicsInsertSVGToPDF("", svgPath, outPdfNew, 0, 595.0, 842.0, 96)
fsdk.VectorGraphicsInsertSVGToPage(pdfPath, svgPath, outPdfPage, 0, 50.0, 50.0, 200.0, 200.0, 96)

fsdk.VectorGraphicsRelease()
fsdk.LibraryRelease()

插入 WMF / EMF ​

InsertWMFToPDF / InsertWMFToPage 参数形态与 SVG 对应接口相同。示例中的 WMF 路径也可指向 EMF 文件。调用前须已完成上一节的 Library::Initialize 与 VectorGraphics::Initialize。

c++
VectorGraphics::InsertWMFToPDF(L"", wmf_path, out_pdf_new, 0, 595.f, 842.f, 96);
VectorGraphics::InsertWMFToPage(pdf_path, wmf_path, out_pdf_page, 0, 50.f, 50.f, 200.f, 200.f, 96);
C
FSDK_VectorGraphics_InsertWMFToPDF(L"", wmf_path, out_pdf_new, 0, 595.f, 842.f, 96);
FSDK_VectorGraphics_InsertWMFToPage(pdf_path, wmf_path, out_pdf_page, 0, 50.f, 50.f, 200.f, 200.f, 96);
java
VectorGraphics.insertWMFToPDF("", wmfPath, outPdfNew, 0, 595.f, 842.f, 96);
VectorGraphics.insertWMFToPage(pdfPath, wmfPath, outPdfPage, 0, 50.f, 50.f, 200.f, 200.f, 96);
py
VectorGraphics.InsertWMFToPDF("", wmf_path, out_pdf_new, 0, 595.0, 842.0, 96)
VectorGraphics.InsertWMFToPage(pdf_path, wmf_path, out_pdf_page, 0, 50.0, 50.0, 200.0, 200.0, 96)
objc
[FSVectorGraphics insertWMFToPDF:@"" wmf_path:wmfPath out_pdf_path:outPdfNew
                      page_index:0 page_width_pt:595.0f page_height_pt:842.0f dpi:96];
[FSVectorGraphics insertWMFToPage:pdfPath wmf_path:wmfPath out_pdf_path:outPdfPage
                       page_index:0 x:50.0f y:50.0f width:200.0f height:200.0f dpi:96];
js
FSDK.VectorGraphics.InsertWMFToPDF("", wmf_path, out_pdf_new, 0, 595.0, 842.0, 96);
FSDK.VectorGraphics.InsertWMFToPage(pdf_path, wmf_path, out_pdf_page, 0, 50.0, 50.0, 200.0, 200.0, 96);
csharp
VectorGraphics.InsertWMFToPDF("", wmf_path, out_pdf_new, 0, 595.0f, 842.0f, 96);
VectorGraphics.InsertWMFToPage(pdf_path, wmf_path, out_pdf_page, 0, 50.0f, 50.0f, 200.0f, 200.0f, 96);
go
fsdk.VectorGraphicsInsertWMFToPDF("", wmfPath, outPdfNew, 0, 595.0, 842.0, 96)
fsdk.VectorGraphicsInsertWMFToPage(pdfPath, wmfPath, outPdfPage, 0, 50.0, 50.0, 200.0, 200.0, 96)