在PDF文档上移动项目

时间:2009-10-09 14:38:59

标签: c# .net pdf

我被指控为他们完成特定培训课程时为客户打印的证书功能。目前,我们为他们提供了一个基本的PDF文件,看起来像普通的Joe奖,但我们的许多客户希望能够在实际PDF上添加和重新定位内容然后打印它们。我开始使用名为PDFSharp的开源C#.NET代码解决方案,发现它有很多很棒的功能,但我不确定如何制作新放置的项目(假设用户导入了自己的证书功能区或密封图形) 。是否有任何C#功能我应该看看或任何第三方软件将为我做这一切?

我对这两种路线都持开放态度。

提前致谢!

2 个答案:

答案 0 :(得分:2)

我正在使用Itext

代码在Boo,打开“template.pdf”并绘制一个矩形并写入“hello world”然后创建一个新的pdf文件并打开它

import iTextSharp.text
import iTextSharp.text.pdf
import iTextSharp.text.Color
import System.IO
import iTextSharp.text
import System.Diagnostics

# we create a reader for a certain document
reader = PdfReader("template.pdf")

# we retrieve the size of the first page
psize = reader.GetPageSize(1);

# step 1: creation of a document-object
Document.Compress = true
documentGlobal = Document(psize, 50, 50, 50, 50)
# step 2: we create a writer that listens to the document

thePdfFile = MemoryStream()
writer = PdfWriter.GetInstance(documentGlobal, thePdfFile)

documentGlobal.Open()
cbLocal = writer.DirectContent

page1 = writer.GetImportedPage(reader, 1)
cbLocal.AddTemplate(page1, 1f, 0, 0, 1f, 0, 0)

#Drawing a rectangle
rec = Rectangle(100, 100, 150, 150)
rec.BackgroundColor =  iTextSharp.text.Color(0,0,0)
cbLocal.Rectangle(rec);

#Writing some text 
#There are many ways to write text, check the examples
bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED)
font = Font(bf, 10, 0)
font.SetColor(0, 0, 0)
ColumnText.ShowTextAligned(cbLocal, 0, Phrase("Hello World", font), 50, 50, 0)

documentGlobal.Close()

tempFile = Path.GetTempFileName();
ms =  MemoryStream(thePdfFile.ToArray());
stream = FileStream(tempFile + ".pdf", FileMode.Create);
ms.WriteTo(stream);
ms.Close();
stream.Close();
Process.Start(tempFile + ".pdf");

修改

哎呀,似乎我不明白这个问题......

答案 1 :(得分:0)

PDFSharp可以在PDF上创建注释吗?我认为他们可以在Acrobat中移动。