在 Windows 8.1 上使用 MuPDF 创建 pdf 图像注释

Create image annotation of pdf using MuPDF on Windows 8.1

我正在使用 C++ 开发一个 WinRT 应用程序,它应该可以帮助用户阅读和注释 PDF 文件。我正在使用 MuPDF 来解析 PDF。我能够阅读 PDF 并添加行和自由文本注释,但无法将图像插入页面。我找不到任何样本,也找不到任何解释我正在寻找的内容的手册。 我正在使用以下代码创建图像,但图像没有出现:

std::string pathToOutputBook3 += "\testPDF.pdf";
std::string pathToImage3 = "Assets/hortitsa.jpg";

fz_point pts[4] = { { 0, 0 }, { 0, 0 }, { 600, 0 }, { 600, 499 } };
fz_rect rect = fz_empty_rect;
pdf_document *pdfDoc = (pdf_document *)this->mu_doc;
pdf_page *pdfPage = (pdf_page *)page;
image_document *imgDoc = (image_document *)fz_open_document(this->mu_ctx, pathToImage3.c_str());
fz_image *image = imgDoc->image;
fz_matrix page_ctm = { 1, 0, 0, 1, 0, 0 };

fz_include_point_in_rect(&rect, &pts[0]);
fz_include_point_in_rect(&rect, &pts[1]);
fz_include_point_in_rect(&rect, &pts[2]);
fz_include_point_in_rect(&rect, &pts[3]);

display_list = fz_new_display_list(this->mu_ctx);
dev = fz_new_list_device(this->mu_ctx, display_list);

auto annot = pdf_create_annot(pdfDoc, pdfPage, fz_annot_type::FZ_ANNOT_SQUARE);

fz_fill_image(dev, image, &page_ctm, 1.0f);

fz_transform_rect(&rect, &page_ctm);
pdf_set_annot_appearance(pdfDoc, annot, &rect, display_list);

fz_write_document(this->mu_doc, (char *)pathToOutputBook3.c_str(), nullptr);

没有'image'注释类型。有些注释类型可能会被滥用以在外观中存储图像,但是忽略外观流并从注释字典中创建新注释的阅读器(例如 Adob​​e Acrobat)仍然不会显示图像。

如果您想将图像添加到文档中,则需要这样做,而不是尝试使用注释。我相信现在可以使用 MuPDF 将图像添加到页面内容流,但我自己不知道该怎么做。