2014-01-23 83 views
-1

我想用我的C#代码以编程方式编辑PDF文件。我知道这很难。有没有可能使用itextsharp?或者有什么选择。如何使用iTextSharp编辑PDF?

+0

您是指真正的编辑还是仅将一些黑色斑点放在页面上?后者很容易做到;对于前者,您可以使用iText(Sharp)作为框架来检索内容并将其重新写回并进行相应的更改,但是您的任务仍然非常庞大。 – mkl

+0

谢谢。我的要求是标记/删除的文本不应该出现在PDF的打印/视图中,是否可以使用一个叫做黑色斑点的文本?请指导。 – user3122606

+0

*黑色blob *的意思是隐喻地描述只是在文本上画一个黑色的矩形(或一些类似的形式)的过程。下面的文本不会出现在打印中,并且不会立即在PDF查看器中显示。但它仍然存在,并且可以被提取,例如,通过复制和粘贴。如果没关系,我会介绍如何去做。 – mkl

回答

0

正如注释到问题澄清OP:

标记/移除文本不应该出现在打​​印的PDF

的/视图。因此,这里一个简单的解决方案,其仅仅是在文字上画一个黑色的矩形。下面的文本不会出现在打印中,并且不会立即在PDF查看器中显示。但它仍然存在,并且可以被提取,例如,通过复制&粘贴。

此外,由于我更习惯于使用Java,所以我提供了用于iText的Java代码。它应该很容易地移植到iTextSharp的,但是,通过Method()通过GetXXsetX更换getX通过SetXX,并且method()和使用一些净流,而不是FileOutputStream

PdfReader reader = new PdfReader("source.pdf"); 
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("target.pdf")); 

PdfContentByte content = stamper.getOverContent(1); 
content.setColorFill(BaseColor.BLACK); 

// Do this for every rectangle given as x, y, width, heigth 
content.rectangle(100f, 600f, 200f, 100f); 
// Done 

content.fill(); 

stamper.close(); 
reader.close(); 
+0

谢谢,只要我能够正确地提供坐标,但是我无法提供/捕获确切的坐标,特别是因为它取决于查看器控件的缩放级别,所以这是完全可以的。我也知道Acrobat SDK现在是免费的,那么我可以用它来执行新版本吗?或者从PDF查看器控件获取实际的坐标? – user3122606

+0

我不知道你可以用SDK做什么以及如何从该查看器控件中提取正确的坐标。如果您想使用外部组件,例如iText(夏普),但他们显然需要知道正确的坐标。 – mkl

0

编修功能,最近已添加到iTextSharp 5.5.5。另请参阅此threadchange log

+0

请注意,此功能是最近的一项新增功能,目前仍在开发之中,可用于真正的安全环境。 – mkl