- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 PDF 文档,我想显示其指定的目的地。我正在使用 Poppler 来做到这一点。我需要的是文档中指定目的地的列表,包括名称和位置。目前,我只考虑 XYZ
目的地。
让我们使用LaTeX hyperbar manual作为示例 PDF。从pdfinfo -dests hyperbar.pdf
中,我们可以看到该文档中有一些XYZ
命名的目的地:
Page Destination Name
1 [ XYZ 145 716 null ] "Doc-Start"
1 [ XYZ 71 502 null ] "HD.1"
1 [ XYZ 144 754 null ] "page.1"
....
我们以HD.1
为例。可以按预期从 PopplerDocument 中查找此指定目的地,包括位置。但是,named_dest
字段为 NULL
:
PopplerDoc* poppler_doc = poppler_document_new_from_file("hyperbar.pdf", NULL, NULL);
PopplerDest* dest = poppler_document_find_dest (poppler_doc, "HD.1");
printf("pos: p %d L %f T %f\n", dest->page_num, dest->left, dest->top);
printf("name: %s\n", dest->named_dest);
产生:
pos: p 1 L 71.004000 T 502.496000
name: (null)
根据Poppler documentation ,只有当目标是 POPPLER_DEST_NAMED
时才会设置 PopplerDest.named_dest
字段,但事实并非如此。
迭代通过 poppler_document_create_dests_tree()
返回的文档中的所有目标是相同的 - named_dest
始终为 NULL。
所以,我的问题是:考虑到 pdfinfo
能够报告目的地的名称,即使是 XYZ
目的地,我可以从 PDF 文件中获取这些名称吗使用 Poppler?
最佳答案
循环遍历文档的所有页面,提取链接对象,然后您可以获得指定的目的地。
GError *err = NULL;
PopplerDocument *doc = poppler_document_new_from_file("<uri to your file>",
NULL,
&err);
if(!doc){
g_print("Failed to load document.\ndomain: %d, \ncode: %d, \nmessage: %s\n",
err->domain, err->code, err->message);
return;
}
int num_pages = poppler_document_get_n_pages(doc);
for(int page_num = 0; page_num < num_pages; page_num++){
PopplerPage *page = poppler_document_get_page(doc,
page_num);
GList *link_mappings = poppler_page_get_link_mapping(page);
GList *link_p = link_mappings;
while(link_p){
PopplerLinkMapping *link_mapping = link_p->data;
switch(link_mapping->action->type){
case POPPLER_ACTION_GOTO_DEST:
{
PopplerActionGotoDest *goto_dest_action = (PopplerActionGotoDest*)
link_mapping->action;
if(goto_dest_action->dest->type == POPPLER_DEST_NAMED){
g_print("Page: '%d', named_dest: '%s'\n",
page_num, dest->named_dest);
}
break;
}
default:;
}
link_p = link_p->next;
}
poppler_page_free_link_mapping(link_mappings);
g_object_unref(page);
}
g_object_unref(doc);
关于c - 使用 Poppler 获取指定目的地的 "name",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58890799/
将 pdf 页面转换为图像时,如果输入的 pdf 中未嵌入字体,则使用默认字体替换(通常为 Arial)。但是,我想更改默认字体。 有一个description here但是信息太少了。我不知道如何创
请不要将其标记为重复,因为类似问题的解决方案对我不起作用 我的系统是ubuntu 16.04,我用的是python 2.7.12 我想做的是使用 pdftohtml 将 pdf 文件转换为 html。
我正在使用 poppler 实用程序将 PDF 文档转换为 HTML。但它为每个页面创建单独的 html 文件,但我在将 pdf 转换为 html 后想要一个 HTML 文件。 我使用了以下语法: p
我正在使用 Poppler 在 Qt 和 C++ 中编写一个 pdf 查看器。如何呈现 pdf 页面以适合我的小部件大小? Poppler 提供了一个名为 renderToImage 的方法,它接受一
在 Ubuntu 上交叉编译 Poppler 包时出现以下错误 配置后我给出了命令 make然后在出现以下错误时出现 GlobalParams.cc:81:35: fatal error : font
我已经下载并安装了python-poppler-qt4我现在正在尝试一个简单的 Qt 应用程序来显示 PDF 页面。我已经按照我能够从网络上获得的内容进行操作,即将 PDF 转换为 QImage,然后
语言 C,UI库: GTK,渲染器: poppler 我是 GTK/Poppler 编程的新手,对如何使用 poppler 解决缩放问题有点困惑。当我使用下面的功能时,一切正常,除了缩放(因此 - 滚
尽管文档位于 pypi明确指出 d = popplerqt5.Poppler.Document.load('file.pdf') 这样做会导致以下错误: TypeError: Document.loa
大家好,我在这个存储库中找到了 https://github.com/dept2/Poppler-QML-plugin 一个qml插件,用于将pdf文件显示为qml文件,但我不知道如何使用它有人可以帮
我正在尝试使用 mgufrone 库(https://github.com/mgufrone/pdf-to-html)在 php 中将 pdf 转换为 html。我在我的 Mac 上运行它,它工作正常
最新版本ScraperWiki取决于Poppler (或者 GitHub 是这么说的)。不幸的是,它只指定了如何在 macOS 和 Linux 上获取它,而不是 Windows。 快速谷歌搜索后发现没
我想使用 python 创建一个 Azure 函数应用程序。在我的应用程序中,我需要将 pdf 转换为图像。这个需要用到popple-utils。当我运行应用程序并且想要将 pdf 转换为图像时:co
我想使用 python 创建一个 Azure 函数应用程序。在我的应用程序中,我需要将 pdf 转换为图像。这个需要用到popple-utils。当我运行应用程序并且想要将 pdf 转换为图像时:co
我刚刚下载了 Poppler 0.16.5,但我不知道如何在 cygwin 上安装这个包。谁能告诉我安装 poppler 的正确命令是什么? 最佳答案 实际上Cygwin 1.7.17-1内部有一个p
我有一个 PDF 文档,我想显示其指定的目的地。我正在使用 Poppler 来做到这一点。我需要的是文档中指定目的地的列表,包括名称和位置。目前,我只考虑 XYZ 目的地。 让我们使用LaTeX hy
我对如何以真实比例(即比例 = 100%)显示 PDF 文档感到困惑。 注意:我正在使用 python-poppler-qt4 . Poppler-qt4 提供 a method to get the
我需要一个 pdf 查看器库才能在我的应用程序中使用,我正在使用 C++ 和 QT 我下载了 Poppler和代码示例 The Poppler Qt4 interface library但是,我不知道
我正在使用 pdf2htmlEX为了将pdf文件转换为html。之后我也从文件中提取文本。 问题: 我遇到一个文件,转换后的 html 中的文本不可读: https://dspace.mit.edu/
我正在尝试使用 pdf2image,看来我需要一个名为 propeller 的东西: (sum_env) C:\Users\antoi\Documents\Programming\projects\s
我从 this page 下载了预构建的 win32 poppler 二进制文件.在.pro文件中添加了include文件夹和lib文件夹的路径: INCLUDEPATH += "C:\\test_f
我是一名优秀的程序员,十分优秀!