我在这里看到了很多解决方案,但没有一个是明确或好的答案.
这是我的简单问题,希望得到一个简单的答案.
我有一个PDF文件(模板),其创建的文本如下:
{FIRSTNAME} {LASTNAME} {ADDRESS} {PHONENUMBER}
是否可以使用C#代码用我选择的文本替换这些模板?
没有领域,没有其他复杂的东西.
有没有任何开源库帮助我实现这一目标?
PDF 文档的“问题”在于它们本质上不适合编辑。尤其是没有字段的。最好的办法是回过头来看看你的过程,看看是否有办法在生成 PDF 之前替换文本。显然,您可能并不总是拥有这种自由。
如果您能够替换文本,那么您应该知道替换文本之后的文本不会自动重排。鉴于您对此感到满意,那么很少有解决方案可以让您替换文本。
我知道您正在寻找开源解决方案,所以我不愿意为您提供商业解决方案。我们提供一种称为 PDFKit.NET 的产品。它允许您将页面上的所有内容提取为所谓的形状(文本、图像、曲线等)。请参阅类型参考中的 Page.CreateShapes 方法。然后,您可以以编程方式导航和编辑此形状结构,然后再次将其写回 PDF。
这是:http : //www.tallcomponents.com/pdfkit
披露:我是 TallComponents 的创始人,该组件的供应商
小智 5
对于简单的文本替换,请使用iTextSharp库。将一个字符串替换为另一个字符串的代码如下。请注意,这只会替换简单的文本,并且可能不适用于所有情况。
//using iTextSharp.text.pdf;
void VerySimpleReplaceText(string OrigFile, string ResultFile, string origText, string replaceText)
{
using (PdfReader reader = new PdfReader(OrigFile))
{
for (int i = 1; i <= reader.NumberOfPages; i++)
{
byte[] contentBytes = reader.GetPageContent(i);
string contentString = PdfEncodings.ConvertToString(contentBytes, PdfObject.TEXT_PDFDOCENCODING);
contentString = contentString.Replace(origText, replaceText);
reader.SetPageContent(i, PdfEncodings.ConvertToBytes(contentString, PdfObject.TEXT_PDFDOCENCODING));
}
new PdfStamper(reader, new FileStream(ResultFile, FileMode.Create, FileAccess.Write)).Close();
}
}
Run Code Online (Sandbox Code Playgroud)
正如类似线程中所述,这实际上并不是一种简单的方法。更简单的方法似乎是获取 DocX 文件并使用DocX库,该库允许轻松进行单词交换,然后将 DocX 转换为 PDF(使用 PDF Creator 打印机等)。
或者使用pdf Sharp/migradoc创建新文档。
| 归档时间: |
|
| 查看次数: |
22009 次 |
| 最近记录: |