问题标签 [pdfium]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2332 浏览

c# - 如何将 dll 文件添加到 UWP 项目中

我正在为 Pdfium 库(pdfium.dll)构建一个 UWP 查看器。pdfium.dll 是一个 C++ 类库。在我的 Visual Studio 解决方案中,我有两个 UWP 项目。First Project(PdfiumViewer) 是一个 UWP 类库,它从 pdfium.dll 导入函数并创建用户控件。例如:

第二个项目(PdfiumViewer.Demo)是一个 UWP 空白应用程序,我在这里引用了第一个项目,以便我可以在这个项目中使用它的用户控件。我将 pdfium.dll 包含在我的第二个项目的 bin 文件夹中。但是当我运行程序时,我得到一个异常说“无法加载 pdfium.dll”。

为 .Net Windows Forms 和 WPF 应用程序开发了一个现有的类似查看器。

我试图通过右键单击参考 - >“添加参考”来添加 pdfium.dll 作为参考。在所有这些情况下(.Net WinForm、.Net WPF、UWP),添加它给了我一个错误。(错误:无法添加对 ....\pdfium.dll 的引用。请确保该文件可访问,并且它是有效的程序集或 COM 组件)

我以类似的方式(添加到 bin 文件夹)将 pdfium.dll 添加到 .Net WinForm 和 .Net WPF 中并运行它们。两种类型的应用程序查看器都运行良好。

我的问题: 由于 UWP 应用程序在沙箱中运行,是否有特殊位置可以添加此 dll(pdfium.dll)?

注意:我尝试将文件添加到不同的位置。(在 APPX 文件夹内、在 bin\Debug 文件夹内、在 bin\Debug\x64 内等)

0 投票
1 回答
207 浏览

c# - 加载非托管 dll 而不将其写入磁盘

我们使用 Syncfusion.PdfViewer.WPF 来显示 PDF。从版本 16.1.0.24 开始,它使用 Pdfium 进行渲染。它在 dll 中嵌入了非托管的 pdfium.dll,并在运行时将其解压缩到应用程序文件夹。这在安装应用程序时不起作用,因为用户没有对 c:/Program Files/ 的写入权限。

有没有办法在不先将它们写入磁盘的情况下加载这些 dll?

从 dll 中提取它们并使用 Assembly.Load 加载不起作用,因为它是非托管 dll。

0 投票
1 回答
774 浏览

c# - 使用 PdfiumViewer 更改 HardMarginX 以打印 PDF 文件

我使用 pdfiumViewer 打印由 itextshape 创建的标签,我在 stackoverflow 中找到了此代码,它适用于 A4 纸,但对于像我的标签这样的自定义纸张,问题将会发生。这是代码:

问题是 HardMarginX 总是 20。它是只读属性,所以我无法更改。所以当我打印时,纸张总是留有一些空间。所以无论如何我可以解决这个问题。感谢阅读

0 投票
1 回答
1572 浏览

asp.net - 内置 Chrome PDF 查看器不会为 ASP.NET Web App 中经过身份验证的用户完全加载大型 PDF 文件

内置 Chrome PDF 查看器不会为经过身份验证的用户完全加载大型 PDF 文件。

在我的环境中重现的步骤:

  1. 在 Visual Studio 2019 中创建一个具有身份验证的新WebForms项目Individual User Accounts
  2. solution explorer创建一些文件夹,例如MyPDFs并放入一些大的pdf 文件中。
  3. 使用以下命令保护此文件夹web.config

    <location path="MyPDFs"> <system.web> <authorization> <deny users="?" /> </authorization> </system.web> </location>

    并为此测试目的设置runAllManagedModulesForAllRequeststrue

    <modules runAllManagedModulesForAllRequests="true">

  4. 使用 IISExpress 运行此站点并导航到~/MyPDFs/A17_FlightPlan.pdf在我的情况下https://localhost:44302/pdfs/A17_FlightPlan.pdf

  5. 登录屏幕出现,用户成功登录后,内置 Chrome PDF 查看器(pdfium) 部分呈现 pdf(仅第一页)部分渲染的图像

  6. 当您从 中删除授权规则web.config或将 PDF 文件放到其他位置时,它会正确加载

  7. 我可以在生产中重现相同的行为 - 完整的 IIS

  8. 其他浏览器也能正常工作:FireFox、EDGE 甚至 Chrome,替换为 Adob​​e Acrobat 阅读器扩展的内置 PDF 查看器

问题可能出在哪里?标头正常吗?

响应标头

0 投票
1 回答
117 浏览

c++ - static_assert 与带有自定义分配器的 std::vector 一起失败

我正在尝试使用 MSVC 141 编译从铬源代码中获取的 PDFium。该代码是自定义分配器。可以看到自定义分配器可以用wchar_t实例化没问题。wchar_t 显然是算术。但是,将其传递到向量中会使静态断言失败。下面的代码给出了一个静态断言,我没想到:

这超出了我的能力范围。到目前为止,我的猜测是 MSVC 编译器的工作方式与 GCC 不同,或者我缺少编译器选项。我已经尝试过 MSVC 141 和 142。C++11 到 c++17。谁能向我解释为什么这不能编译?

0 投票
1 回答
773 浏览

c++ - 如何使用 PDFIUM c++ 保存 pdf

是否有任何示例显示如何使用FPDF_SaveAsCopy()保存 PDF 文档的功能?我在任何地方都找不到任何例子!

0 投票
1 回答
224 浏览

pdf-generation - 向 pdf 文档添加注释时 FPDFAnnot_SetRect 和 FPDFAnnot_AppendAttachmentPoints 之间的区别

我正在使用 pdfium 向 pdf 文件添加注释。我使用 Notepad++ 打开了 pdf 文件并查看了它的对象。注释对象存在于 Page 对象中,如下所示,

我使用以下代码将矩形和附加点添加到注释中。

据我了解,附加点设置为我们希望它位于的突出显示注释的位置。但我不明白为此注释设置 Rect 的目的。

有人可以告诉使用 FPDFAnnot_SetRect 函数的原因吗?

另一件事,

0 投票
0 回答
153 浏览

javascript - JavaScript 和 pdfium(原生 Chrome PDF 查看器)。你能得到当前页码吗

我正在寻找如何通过 JavaScript 获取在 chrome pdf 文件中打开的当前页面。我试过这两个建议: caseOnecaseTwo

我不确定我是否失明或做错了什么,但我无法让它发挥作用。因此,如果有人分享它是否可能以及如何分享,我会非常高兴。

我将使用它来创建有用的免费和开源 Chrome 扩展程序,因此您将成为它的一部分。谢谢你,祝你有美好的一天!

0 投票
0 回答
230 浏览

emscripten - 如何使用 emscripten 构建 PDFium

我想知道是否有人可以引导我完成使用 emscripten 构建 PDFium 以生成 Web 组装模块的步骤。我可以看到 PDFium 似乎支持基于此票证的此类构建:https ://bugs.chromium.org/p/chromium/issues/detail?id=804907

我似乎找不到有关执行此构建的文档。

0 投票
1 回答
116 浏览

c# - 不使用 dispose 方法释放非托管代码的内存

我在使用非托管代码的 C# 项目中安装了 NuGet 包。我创建了一个密封类的对象。它没有在类中定义的 dispose 方法。如何释放非托管内存?我可以看到我的内存使用量随着时间的推移而增加,并且我的应用程序被踢出。我的代码是

我试过((IDisposable)bitmap).Dispose(); 它不起作用。

这里 PDFiumBitmap 是一个非托管对象。我想释放记忆。PDFiumBitmap 给了我一个句柄。看起来像一个指针 截图