在 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'注释类型。有些注释类型可能会被滥用以在外观中存储图像,但是忽略外观流并从注释字典中创建新注释的阅读器(例如 Adobe Acrobat)仍然不会显示图像。
如果您想将图像添加到文档中,则需要这样做,而不是尝试使用注释。我相信现在可以使用 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);
没有'image'注释类型。有些注释类型可能会被滥用以在外观中存储图像,但是忽略外观流并从注释字典中创建新注释的阅读器(例如 Adobe Acrobat)仍然不会显示图像。
如果您想将图像添加到文档中,则需要这样做,而不是尝试使用注释。我相信现在可以使用 MuPDF 将图像添加到页面内容流,但我自己不知道该怎么做。