如何允许表单(pdf)在保存后可重新编辑(目标 C)
Posted
技术标签:
【中文标题】如何允许表单(pdf)在保存后可重新编辑(目标 C)【英文标题】:How to allow forms(pdf) to be re-editable after they have been saved(Objective C) 【发布时间】:2015-08-26 14:21:25 【问题描述】:我是 CoreGraphics 框架的新手。 我们使用 ILPDFKit 库来渲染 PDF 或表单 我们将绘制的路径嵌入到现有 PDF。这里是代码
-(NSData *)embededPdfAnnotationPointsInPdfAtPath:(NSString *)pdfPath
NSURL *pdfUrl = [NSURL fileURLWithPath:pdfPath];
CGPDFDocumentRef pdf = CGPDFDocumentCreateWithURL((CFURLRef)pdfUrl);
NSMutableData *data = [NSMutableData new];
UIGraphicsBeginPDFContextToData(data, CGRectZero, nil);
for(NSUInteger pageIndex = 1; pageIndex <= [self pdfDrawViewInfo].count; pageIndex ++)
// Get the current page and page frame
CGPDFPageRef pdfPage = CGPDFDocumentGetPage(pdf, pageIndex);
const CGRect pageFrame = CGPDFPageGetBoxRect(pdfPage, kCGPDFMediaBox);
UIGraphicsBeginPDFPageWithInfo(pageFrame, nil);
// Draw the page (flipped)
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSaveGState(ctx);
CGContextScaleCTM(ctx, 1, -1);
CGContextTranslateCTM(ctx, 0, -pageFrame.size.height);
CGContextDrawPDFPage(ctx, pdfPage);
CGContextRestoreGState(ctx);
UIImage *drawViewImage = [self annotatedImageForPdfPageAtIndex:(pageIndex - 1)];
UIImage *annotatedImgForPdfPage = [self imageWithImage:drawViewImage scaledToSize:pageFrame.size] ;
[annotatedImgForPdfPage drawInRect:pageFrame];
UIGraphicsEndPDFContext();
// CGPDFDocumentRelease(pdf);
// CGImageRelease(annotatedImgCGref);
return data;
上面的代码表明,我们只是在现有的 PDF 上粘贴图像(绘制的路径)。
后来的功能更改为“保存带有注释的 PDF(手绘)后,我们需要控制带注释的东西”
问题: 编辑带有注释的PDF(手绘),保存。保存带有注释的PDF后,我们需要再次获得它的编辑能力。我们需要知道这个过程的保存机制和步骤。请把你的意见放在这里,这样对我有很大的帮助。
谢谢你
【问题讨论】:
【参考方案1】:我可能会保留 pdf 原始版本,并将编辑内容存储在另一个文件中。
比每次用户保存时,应用程序都会将注释和其他内容应用到原始版本并生成最终的 pdf(在共享或导出功能的情况下)
这会给你一个完全的控制,(我想这也是“apple photo”、“iPhoto”和“Aperture”管理图片修改的相同方式......)
【讨论】:
感谢您的支持。将编辑内容存储在另一个文件中。请详细说明步骤。以上是关于如何允许表单(pdf)在保存后可重新编辑(目标 C)的主要内容,如果未能解决你的问题,请参考以下文章
如何在保存 PDF 表单时阻止 Adobe Reader 询问“另存为”(即只允许“保存”)?
具有多值的 Magnolia 可折叠复合字段允许我保存但在编辑时无法重新打开
Adobe Reader来填写的表单无法保存,我怎么做pdf表单才能使别人可以用Adobe Reader来填写的表单能保存