API referenceCore SDK

pdfGetCanvasDC

Create an in-memory GDI device context sized

C
uintptr_t __stdcall pdfGetCanvasDC(PPDF IPDF, int32_t CanvasWidth, int32_t CanvasHeight);
int32_t __stdcall pdfGetCanvasDCEx(PPDF IPDF, int32_t CanvasWidth, int32_t CanvasHeight, int32_t ReferenceDC);
Delphi
function pdfGetCanvasDC(const IPDF: PPDF; CanvasWidth, CanvasHeight: Integer): NativeUInt; stdcall;
function pdfGetCanvasDCEx(const IPDF: PPDF; CanvasWidth, CanvasHeight, ReferenceDC: Integer): Integer; stdcall;

Purpose. Create an in-memory GDI device context sized CanvasWidth x CanvasHeight for the caller to draw into with standard Windows GDI calls, later captured into the PDF via pdfLoadFromCanvasDC/ pdfNewPageFromCanvasDC below.

Description. pdfGetCanvasDC returns the real, usable DC handle (as a NativeUInt/uintptr_t) from CreateCanvasDCH. pdfGetCanvasDCEx does not — despite creating the identical canvas via the same CreateCanvasDCH call, it discards the actual handle and returns only a 1/0 success flag, making the created DC unreachable by any means through this entry point; a caller cannot actually draw into the canvas pdfGetCanvasDCEx creates, since its real HDC value is never surfaced. ReferenceDC is additionally accepted but never passed to CreateCanvasDCH at all.

Parameters.

ParameterDescription
IPDFDocument handle.
CanvasWidth, CanvasHeightCanvas pixel dimensions.
ReferenceDC*(Ex only)* Accepted but never consulted.

Return value. pdfGetCanvasDC: the real, usable GDI DC handle; 0 if IPDF is invalid. pdfGetCanvasDCEx: 1 on success, 0 on failure — never the actual DC handle, making this variant unusable for its apparent purpose.

Remarks. Use pdfGetCanvasDC, not pdfGetCanvasDCEx, to obtain a drawable canvas.

See also. pdfLoadFromCanvasDC.

C# (P/Invoke)

wrappers/dotnet/LumasPdf.cs
public static extern UIntPtr pdfGetCanvasDC(IntPtr IPDF, int CanvasWidth, int CanvasHeight);
Area
Core SDK
Category

Getters

Exported names

pdfGetCanvasDC

String variants

The …A form takes UTF-8, …W takes UTF-16; a bare name aliases the ANSI form.

See working code

Worked examples — complete programs in ten languages.