有一个需求,使用aspose 从word转到PDF格式后,通过其他的PDF编辑工具,或者将PDF转换回word其中的图片可以被复制。
我希望pdf中的图片不能被复制,有没有办法能够实现?
有一个需求,使用aspose 从word转到PDF格式后,通过其他的PDF编辑工具,或者将PDF转换回word其中的图片可以被复制。
我希望pdf中的图片不能被复制,有没有办法能够实现?
@zou_yw 如果我理解正确的话,您需要禁用从文档中复制内容的功能。遗憾的是,使用 Aspose.Words 无法禁用复制选项。唯一的办法是使用 Aspose.Words 将 Word 转换为 PDF,然后使用 Aspose.Pdf 设置文档权限。
Document doc = new Document("input.docx");
doc.save("output.pdf");
DocumentPrivilege privilege = DocumentPrivilege.getForbidAll();
privilege.setChangeAllowLevel(1);
privilege.setAllowPrint(true);
PdfFileSecurity fileSecurity = new PdfFileSecurity();
fileSecurity.bindPdf("output.pdf");
fileSecurity.setPrivilege(privilege);
fileSecurity.save("output_privilege.pdf");
也许 Aspose.Pdf 团队能为您提供更多信息。
FYI @asad.ali
这样确实可以保护PDF,但是从PDF文件转换回WORD后依然可以提取出图片。
有没有什么办法,可以直接将word文件转换为纯图类型的PDF?
不是的,类似PDF转图片,将word转换到PDF,这个pdf的每一页包括里面的文字是一整张图片;
@zou_yw 您可以使用此代码获取带有一组图像的 pdf 文件。
Document wordDoc = new Document("input.docx");
Document pdfDoc = new Document();
DocumentBuilder builder = new DocumentBuilder(pdfDoc);
ImageSaveOptions imageSaveOptions = new ImageSaveOptions(SaveFormat.Png);
for (int page = 0; page < wordDoc.PageCount; page++)
{
using (MemoryStream imageStream = new MemoryStream())
{
imageSaveOptions.PageSet = new PageSet(page);
wordDoc.Save(imageStream, imageSaveOptions);
// Read the image from file, ensure it is disposed.
using (Image image = Image.FromStream(imageStream))
{
// Insert a section break before each new page
if (page != 0)
builder.InsertBreak(BreakType.SectionBreakNewPage);
// We want the size of the page to be the same as the size of the image.
// Convert pixels to points to size the page to the actual image size.
PageSetup ps = builder.PageSetup;
ps.PageWidth = ConvertUtil.PixelToPoint(image.Width, image.HorizontalResolution);
ps.PageHeight = ConvertUtil.PixelToPoint(image.Height, image.VerticalResolution);
// Insert the image into the document and position it at the top left corner of the page.
builder.InsertImage(
image,
RelativeHorizontalPosition.Page,
0,
RelativeVerticalPosition.TopMargin,
0,
ps.PageWidth,
ps.PageHeight,
WrapType.Through);
}
}
}
PdfSaveOptions saveOptions = new PdfSaveOptions();
saveOptions.EmbedFullFonts = true;
saveOptions.UseCoreFonts = true;
saveOptions.DownsampleOptions.DownsampleImages = false;
pdfDoc.Save("output.pdf", saveOptions);