Skip to content

Commit

Permalink
Remove NativeLibrary.Load from .NET (Core) builds
Browse files Browse the repository at this point in the history
  • Loading branch information
sungaila committed Oct 12, 2023
1 parent c839acd commit 81d6889
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 189 deletions.
78 changes: 35 additions & 43 deletions src/PDFtoImage/PdfiumViewer/NativeMethods.Pdfium.cs
Original file line number Diff line number Diff line change
Expand Up @@ -343,120 +343,112 @@ private static int FPDF_GetBlock(IntPtr param, uint position, IntPtr buffer, uin
}
#endregion

private const string _dllName =
#if NET6_0_OR_GREATER
"libpdfium"
#else
"pdfium"
#endif
;

private static class Imports
{
[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern void FPDF_InitLibrary();

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern void FPDF_DestroyLibrary();

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public static extern IntPtr FPDF_LoadCustomDocument([MarshalAs(UnmanagedType.LPStruct)] FPDF_FILEACCESS access, string? password);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern void FPDF_CloseDocument(IntPtr document);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern int FPDF_GetPageCount(IntPtr document);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern uint FPDF_GetDocPermissions(IntPtr document);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr FPDFDOC_InitFormFillEnvironment(IntPtr document, FPDF_FORMFILLINFO formInfo);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern void FPDF_SetFormFieldHighlightColor(IntPtr hHandle, int fieldType, uint color);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern void FPDF_SetFormFieldHighlightAlpha(IntPtr hHandle, byte alpha);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern void FORM_DoDocumentJSAction(IntPtr hHandle);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern void FORM_DoDocumentOpenAction(IntPtr hHandle);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern void FPDFDOC_ExitFormFillEnvironment(IntPtr hHandle);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern void FORM_DoDocumentAAction(IntPtr hHandle, FPDFDOC_AACTION aaType);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr FPDF_LoadPage(IntPtr document, int page_index);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr FPDFText_LoadPage(IntPtr page);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern void FORM_OnAfterLoadPage(IntPtr page, IntPtr _form);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern void FORM_DoPageAAction(IntPtr page, IntPtr _form, FPDFPAGE_AACTION fPDFPAGE_AACTION);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern double FPDF_GetPageWidth(IntPtr page);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern double FPDF_GetPageHeight(IntPtr page);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern void FORM_OnBeforeClosePage(IntPtr page, IntPtr _form);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern void FPDFText_ClosePage(IntPtr text_page);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern void FPDF_ClosePage(IntPtr page);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern void FPDF_RenderPageBitmap(IntPtr bitmapHandle, IntPtr page, int start_x, int start_y, int size_x, int size_y, int rotate, FPDF flags);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern int FPDF_GetPageSizeByIndex(IntPtr document, int page_index, out double width, out double height);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr FPDFBitmap_CreateEx(int width, int height, int format, IntPtr first_scan, int stride);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern void FPDFBitmap_FillRect(IntPtr bitmapHandle, int left, int top, int width, int height, uint color);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern void FPDFBitmap_Destroy(IntPtr bitmapHandle);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern uint FPDFDest_GetDestPageIndex(IntPtr document, IntPtr dest);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr FPDFBookmark_GetFirstChild(IntPtr document, IntPtr bookmark);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr FPDFBookmark_GetNextSibling(IntPtr document, IntPtr bookmark);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern uint FPDFBookmark_GetTitle(IntPtr bookmark, byte[]? buffer, uint buflen);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr FPDFBookmark_GetDest(IntPtr document, IntPtr bookmark);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern uint FPDF_GetLastError();

#region Save/Edit APIs
[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern void FPDF_FFLDraw(IntPtr form, IntPtr bitmap, IntPtr page, int start_x, int start_y, int size_x, int size_y, int rotate, FPDF flags);

[DllImport(_dllName, CallingConvention = CallingConvention.Cdecl)]
[DllImport("pdfium", CallingConvention = CallingConvention.Cdecl)]
public static extern void FPDF_RemoveFormFieldHighlight(IntPtr form);
#endregion
}
Expand Down
Loading

0 comments on commit 81d6889

Please sign in to comment.