当我从 Visual Studio 运行它时,PDFHummus 正在工作,但在使用可执行文件时失败

PDFHummus is working when I run it from visual studio but fail when using the executable

提问人:Diego Fernando Pava 提问时间:11/14/2023 最后编辑:genpfaultDiego Fernando Pava 更新时间:11/14/2023 访问量:32

问:

我正在尝试使用 PDFHummus 生成一个显示绘图的 pdf,我将所有 libs 和 dll 放在主文件夹中,并使用以下代码创建了一个非常简单的 pdf,其中包含文本和图像的一页:

#include <iostream>
#include <string>
// end standard library includes

// pdfwriter library includes
#include "PDFWriter.h"
#include "PDFPage.h"
#include "PageContentContext.h"
#include "PDFFormXObject.h"
#include "ResourcesDictionary.h"
// end pdfwriter library includes

using namespace PDFHummus;

int main(int argc, char** const argv) {
    // Step 1: Create a PDFWriter instance
    PDFWriter pdfWriter;
    if (pdfWriter.StartPDF("HelloWorld.pdf", ePDFVersion13) != PDFHummus::eSuccess)
        return;
    PDFPage* page = new PDFPage();
    page->SetMediaBox(PDFRectangle(0, 0, 791, 612));
    PageContentContext* cxt = pdfWriter.StartPageContentContext(page);
    cxt->DrawImage(300, 570, "avent3.pdf");
//  cxt->DrawImage(300, 570, "avent3.png");
    PDFUsedFont* font = pdfWriter.GetFontForFile("times.ttf");
    AbstractContentContext::TextOptions textOptions(font, 14, AbstractContentContext::eGray, 0);
    cxt->WriteText(30, 570, "Hello World", textOptions);
    pdfWriter.EndPageContentContext(cxt);
    pdfWriter.WritePage(page);
    delete page;


    // Step 2 Close the PDF
    pdfWriter.EndPDF();

    return 0;
}

我将所有库添加到链接器中,并将所有包含添加到属性的 c++ 部分,当我在发布模式下从 Visual Studio 运行它时,它工作正常,但是当我运行可执行文件时,pdf 无法正确创建(它创建文件但已损坏)。

如果我注释所有插入图像行并只保留文本,它可以正常工作 如果我留下文本并插入 png 文件,它可以正常工作

当我尝试添加可执行文件的 pdf 矢量图像文件时,可执行文件停止工作,但同样,从 Visual Studio 中它可以正常工作。我想我缺少一个必须添加到工作文件夹中的dll,但无法弄清楚是哪一个

有什么想法吗?

C++ Visual-Studio PDF 生成

评论

0赞 PaulMcKenzie 11/14/2023
1) 这些 PDF 函数都没有返回任何错误代码?如果是这样,您应该编写代码以确保这些函数成功。2) -- 如果你打电话会怎样?事实上,你甚至不需要成为指针或使用它来创建它:等等。pdfWriter.WritePage(page); delete page; pdfWriter.EndPDF();delete page;pagenewPDFPage page {}; page.SetMediaBox(PDFRectangle(0, 0, 791, 612));
0赞 Diego Fernando Pava 11/14/2023
没有错误,但我怀疑 cxt->DrawImage(300, 570, “avent3.pdf”);是导致问题的原因,当我注释该行并使用 cxt->DrawImage(300, 570, “avent3.png”);相反,一切正常
0赞 PaulMcKenzie 11/14/2023
当您从命令行运行该文件时,可能找不到该文件。另外,没有错误的证据在哪里?我在代码中没有看到您正在检查返回值的位置(如果有的话)。
0赞 Diego Fernando Pava 11/15/2023
该文件肯定在主文件夹中,毫无疑问......我尝试将 cxt->DrawImage(300, 570, “avent3.pdf”);在一次尝试中,没有发现任何错误。

答: 暂无答案