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

时间:2015-03-25 11:20:59

标签: c++ pdf mupdf

我在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);

1 个答案:

答案 0 :(得分:1)

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

如果要将图像添加到文档中,则需要执行此操作,而不是尝试使用注释。我相信现在可以使用MuPDF将图像添加到页面内容流中,但我自己也不知道如何做到这一点。