【问题标题】:How to display a PDF file with push a button in gtk3 c code?如何使用 gtk3 c 代码中的按钮显示 PDF 文件?
【发布时间】:2025-12-14 16:25:01
【问题描述】:

我想在 gtk3 c 代码中按下按钮时显示 PDF 文件。事实上,我想在帮助中插入用户手册按钮,当按下按钮时会显示一个 PDF 文件:

我插入按钮(如图所示),但我无法为用户手册功能编写代码以显示 PDF 文件。

我使用“poppler”并包含

#include <C:\Users\Alireza\Desktop\poppler-0.18.4\poppler-0.18.4\glib/poppler.h>

到我的代码中。

我的功能是

void UserManual(GtkWidget *widget, gpointer data)
{
    GtkWidget* win;
GError* err = NULL;


doc = poppler_document_new_from_file("C:/Program Files (x86)/Sepand64bit/logo/UserManual.pdf", NULL, &err);
if (!doc) {
    printf("%s\n", err->message);
    g_object_unref(err);
    //return 2;
}

page = poppler_document_get_page(doc, 0);
if (!page) {
    printf("Could not open first page of document\n");
    g_object_unref(doc);
    //return 3;
}

int pages = poppler_document_get_n_pages(doc);
printf("There are %d pages in this pdf.\n", pages);
}

但我有错误:

*error LNK2001: 无法解析的外部符号 poppler_document_get_page

*错误 LNK2001:无法解析的外部符号 poppler_document_new_from_file

*错误 LNK2001:无法解析的外部符号 poppler_document_get_n_pages

我认为 poppler 以错误的方式安装在我的代码上。您对如何解决此任务有什么建议?或者我可以在 Internet 上的哪些资源上找到帮助?

【问题讨论】:

    标签: pdf gtk3 poppler


    【解决方案1】:

    如果您不需要使用 Poppler 在应用程序中显示 PDF,那么我建议您采用更简单的方法(尽管对结果的控制较少)并使用

    gtk_show_uri(gdk_screen_get_default(), "file:///path/to/UserManual.pdf",
        GDK_CURRENT_TIME, &error);
    

    它将在 PDF 文件的默认查看器中打开 PDF。

    【讨论】:

    • 我使用了这个函数没有使用poppler: void UserManual(GtkWindow *win) { GError *error = NULL; gtk_show_uri(gdk_screen_get_default(), "file:///C:/Program Files (x86)/Sepand64bit/logo/UserManual.pdf", GDK_CURRENT_TIME, &error); 它不显示