1

我有一些 C 代码试图使用 libharu。虽然我可以使用这个库的所有功能(甚至是 UTF8),但我几乎无法绘制图像。这是一些非常基本的代码:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <setjmp.h>
#include "hpdf.h"

jmp_buf env;

#ifdef HPDF_DLL
void  __stdcall
#else
void
#endif
error_handler  (HPDF_STATUS   error_no,
                HPDF_STATUS   detail_no,
                void         *user_data)
{
    printf ("ERROR: error_no=%04X, detail_no=%u\n", (HPDF_UINT)error_no,
                (HPDF_UINT)detail_no);
    longjmp(env, 1);
}

int main (int argc, char **argv)
{
    HPDF_Doc  pdf;
    HPDF_Font font;
    HPDF_Page page;
    char fname[256];
    HPDF_Image image;

    strcpy (fname, argv[0]);
    strcat (fname, ".pdf");

    pdf = HPDF_New (error_handler, NULL);
    if (!pdf) {
        printf ("error: cannot create PdfDoc object\n");
        return 1;
    }

    /* error-handler */
    if (setjmp(env)) {
        HPDF_Free (pdf);
        return 1;
    }


    font = HPDF_GetFont (pdf, "Helvetica", NULL);


    page = HPDF_AddPage (pdf);

    HPDF_Page_SetWidth (page, 550);
    HPDF_Page_SetHeight (page, 500);

    image = HPDF_LoadPngImageFromFile (pdf, "img.png");


    HPDF_SaveToFile (pdf, fname);


    HPDF_Free (pdf);

    return 0;
}

当我编译这个时,我有ERROR: error_no=1015, detail_no=0. 我在 stackoverflow 中找到了类似的帖子:this。然而,尽管原始海报说问题已经解决,但它几乎没有帮助我。我将 img.png 移动到一个文件夹并重新编译了该文件。更改了说明/home/name/path/to/img.png哪个是图像的直接路径的代码。没有任何效果。我“总是”有同样的错误,但是当我更改我拥有的文件名时,ERROR: error_no=1017, detail_no=2这基本上意味着程序找不到图像(根据 libharu 的引用)所以我推断程序找到了 img.png;但是,奇怪的是,无法分配必要的内存。这很奇怪,因为我看不出这个程序不分配内存的任何理由。我有各种许可。

我在 Ubuntu Quantal Quetzal 和 libharu 2.3.0 RC2 下使用 GCC 4.7.2。谢谢您的帮助。

4

1 回答 1

0

你好多项式的等式。

haru sdk当我在我的 macOS 环境中集成时,我也遇到了同样的问题。

error_handler返回的ERROR: error_no=1017, detail_no=2,然后我haruhttp://libharu.sourceforge.net/error_handling.html查看了官方文档,查询0x1017表明文件打开失败,所以我怀疑该方法的 第二个参数HPDF_LoadPngImageFromFile需要传递一个精确的png图片文件路径,所以我修改后问题解决了,希望对你有帮助。

代码广告如下:

char filename1[255];
strcpy(filename1, "/Users/xx/Downloads/lusaceg.com.png");
image = HPDF_LoadPngImageFromFile (pdf, filename1);

肃然。

于 2021-11-03T13:27:21.530 回答