- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 libHARU library 生成 PDF结合Wt Web Toolkit .我正在尝试构建他们在 Wt Widget Gallery ( Wt PDF Renderer ) 中提供的示例代码,该代码从 XHTML 导出 PDF。
我正在使用 g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 启用 C++11 功能进行编译。
我在下面提供了示例代码,它是从他们网站上直接复制的。
我得到的错误如下:
In function `ReportResource::renderPdf(Wt::WString const&, _HPDF_Doc_Rec*)':
undefined reference to `Wt::Render::WPdfRenderer::WPdfRenderer(_HPDF_Doc_Rec*, _HPDF_Dict_Rec*)'
undefined reference to `Wt::Render::WPdfRenderer::setMargin(double, Wt::WFlags<Wt::Side>)'
undefined reference to `Wt::Render::WPdfRenderer::setDpi(int)'
undefined reference to `Wt::Render::WPdfRenderer::~WPdfRenderer()'
undefined reference to `Wt::Render::WPdfRenderer::~WPdfRenderer()'
我不明白这个错误的原因,因为我已经构建了 libHARU 库并将其链接到我的项目中。就像完整性检查一样——我可以右键单击 Wt::Render::WPdfRenderer::WPdfRenderer
并打开声明(如果您熟悉 Eclipse IDE),Eclipse 会将我带到这个类的头文件。是什么导致了“ undefined reference 错误”?
namespace {
void error_handler(HPDF_STATUS error_no, HPDF_STATUS detail_no, void *user_data) {
fprintf(stderr, "libharu error: error_no=%04X, detail_no=%d\n",
(unsigned int) error_no, (int) detail_no);
}
}
class ReportResource : public Wt::WResource
{
public:
ReportResource(Wt::WObject *parent = 0)
: Wt::WResource(parent)
{
suggestFileName("cycle-times.pdf");
}
virtual void handleRequest(const Wt::Http::Request& request,
Wt::Http::Response& response)
{
response.setMimeType("application/pdf");
HPDF_Doc pdf = HPDF_New(error_handler, 0);
// Note: UTF-8 encoding (for TrueType fonts) is only available since libharu 2.3.0 !
HPDF_UseUTFEncodings(pdf);
renderReport(pdf);
HPDF_SaveToStream(pdf);
unsigned int size = HPDF_GetStreamSize(pdf);
HPDF_BYTE *buf = new HPDF_BYTE[size];
HPDF_ReadFromStream (pdf, buf, &size);
HPDF_Free(pdf);
response.out().write((char*)buf, size);
delete[] buf;
}
private:
void renderReport(HPDF_Doc pdf) {
renderPdf(Wt::WString::tr("report.example"), pdf);
}
void renderPdf(const Wt::WString& html, HPDF_Doc pdf)
{
HPDF_Page page = HPDF_AddPage(pdf);
HPDF_Page_SetSize(page, HPDF_PAGE_SIZE_A4, HPDF_PAGE_PORTRAIT);
Wt::Render::WPdfRenderer renderer(pdf, page);
renderer.setMargin(2.54);
renderer.setDpi(96);
renderer.render(html);
}
};
最佳答案
PDF 是使用 The Haru 免费 PDF 库生成的,只有在构建库期间找到 libharu 时,此类才会包含在库中。
任何发现这个问题的人都需要先构建 libharu,然后在构建 Wt 之前告诉 cmake:
cmake ../ -DHARU_PREFIX=/path/to/libharu
如果 libharu 未构建或找不到,您将在 cmake 的输出中看到类似如下的错误消息:
libharu libraries not found - set HARU_PREFIX after running cmake ../
关于c++ - 使用 Wt 和 libHARU 未定义引用渲染 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21439461/
我正在尝试为一个项目学习 Wt,现在我正在尝试学习其中的数据库部分。 我卡在了开头。我正在尝试从 dbo 教程(网站 http://www.webtoolkit.eu/wt/doc/tutorial/
考虑背包算法实现的以下部分: // Build table K[][] in bottom up manner for (i = 0; i <= n; i++) { for (w = 0;
我的 mongodb 现在无法启动,当我想启动 mongo 时出现错误 *** aborting after invariant() failure 现在我想将 collection-0-****.w
我是 Wt 和 c++ 的新手,我刚刚将 Ubuntu 16.04 LTS 上的 Wt webframework 安装到我的主目录中的自定义文件夹中。我无法在这台计算机的 /usr 目录中安装或构建任
我是 WT 的新手,我正在尝试上传文件示例。 当我单击发送按钮时,代码工作正常,文件进度条运行到 100%,但我不确定它上传到哪里?我们可以定义在某个路径上传.. class HelloApplica
不幸的是,我的 MongoDB 服务器由于服务器意外关闭而崩溃。之后,我将 MongoDB 更新到了 3.6 版。现在,当我尝试使用新安装恢复过去的数据库时,服务器无法识别旧的 .wt文件。.wt文件
使用 Wt(一个用于 Web 开发的 C 库),我尝试上传 .wav 文件,然后在图表中打印其值。有没有办法动态地做到这一点,换句话说,将点添加到已经创建的图表中? 最佳答案 是的,有一种方法可以做到
更新 3 user52875 也有一个很好的答案,Can WT present web pages as part of the host page?它使用 HTML,实际上比搞乱 JS 容易得多。
各位C++程序员大家好, 今天我正在研究优秀的 Wt 框架 Wt - 一个 C++ 库开发网络应用程序:http://www.webtoolkit.eu/wt . 我正在缓慢而稳定地取得进步。让我好奇
您好,各位 WT 用户。我在使用户能够为我的应用程序中的某些数据选择保存位置方面遇到问题。我注意到 WT 缺少易于使用的保存/打开文件对话框或小部件,用于浏览机器的硬盘驱动器以查找保存位置或要加载的文
我开始学习如何编写 Wt 应用程序,但我收到一个编译错误,我不知道如何修复。编译时,我收到一条错误消息 g++ -lwthttp -lwt hello.cpp /usr/bin/ld: /usr/li
ICSharpCode(从 JVM 到 .NET 的 SWT 端口)#WT (SharpWT) 发生了什么?我到处都找不到它。谢谢。 我尝试在网上寻找它,但找不到。当我在 Fantom 中编写一个使用
Wt 建议使用前向声明以避免循环依赖。 // Settings.h #include #include class User; // Forward declaration of User Wt:
所以最近我问了一个问题,看看Can multiple WT applications run on same port?答案是肯定的(+1 给 Jorge Núñez 的那个很棒的答案)。但是,现在我
我有一个到另一个页面的 WAnchor,它改变了内部路径。我还有一个函数 internalPathChange(),它对 internalPathChanged() 作出 react ,并根据内部路径
我有一个关于 Wt 的小问题。当我创建 WText(WContainerWidget 的子项并具有很长的文本)时,不会为此 WText 创建滚动条。我已经尝试了很多东西,比如设置溢出(使用 WCont
我需要显示一个包含准确内容的模态对话框,但我无法手动设置内容的高度。它使可滚动区域具有固定高度 (400),我无法将内容扩展到该区域。通过读取生成页面的 HTML 代码,找到了这个 div 在浏览器
大多数情况下,在 wt 3 中释放内存的位置很清楚(在 wt 4 中非常明确),但在这种情况下我不明白其中的逻辑。 下面的函数内容为我的 wt 3 应用程序设置了一个容器。一切正常,但谁能解释如何(或
在任何端口(例如 200.59.43.32:3333)上使用 Wt 创建网页都很容易。 但是,当有人向它发送数据(一些数据字符串、json 等)时,是否有一个函数(我找不到)在同一个端口上监听。换句话
我正在为我的项目使用 C++ webframework。我正在尝试向 gitmodel 示例添加身份验证。 我收到以下错误: ../hangman/CMakeFiles/hangman.wt.dir/
我是一名优秀的程序员,十分优秀!