【发布时间】:2013-04-04 19:25:18
【问题描述】:
我需要在 ASP.NET 的 PDF 文档中用用户从下拉列表中选择的新词替换一个词。我正在使用 iTextSharp ,但创建的新 PDF 全部失真,因为我无法在提取时提取 PDF 的格式/样式信息。另外,有没有办法逐行阅读pdf?请帮忙..
protected void Page_Load(object sender, EventArgs e)
{
String s = DropDownList1.SelectedValue;
Response.Write(s);
ListFieldNames(s);
}
private void CreatePDF(string text)
{
string outFileName = @"z:\TEMP\PDF\Test_abc.pdf";
Document doc = new Document();
doc.SetMargins(30f, 30f, 30f, 30f);
PdfWriter.GetInstance(doc, new FileStream(outFileName, FileMode.Create));
doc.Open();
BaseFont bfTimes = BaseFont.CreateFont(BaseFont.COURIER, BaseFont.CP1252, false);
Font times = new Font(bfTimes, 12, Font.BOLDITALIC);
//Chunk ch = new Chunk(text,times);
Paragraph para = new Paragraph(text,times);
//para.SpacingAfter = 9f;
para.Alignment = Element.ALIGN_CENTER;
//para.IndentationLeft = 100;
doc.Add(para);
//doc.Add(new Paragraph(text,times));
doc.Close();
Response.Redirect(@"z:\TEMP\PDF\Test_abc.pdf",false);
}
private void ListFieldNames(string s)
{
ArrayList arrCheck = new ArrayList();
try
{
string pdfTemplate = @"z:\TEMP\PDF\abc.pdf";
//string dest = @"z:\TEMP\PDF\Test_abc.pdf";
PdfReader pdfReader = new PdfReader(pdfTemplate);
string pdfText = string.Empty;
string extracttext = "";
for (int page = 1; page <= pdfReader.NumberOfPages; page++)
{
ITextExtractionStrategy its = new iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy();
PdfReader reader = new PdfReader((string)pdfTemplate);
extracttext = PdfTextExtractor.GetTextFromPage(reader, page, its);
extracttext = Encoding.Unicode.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.Unicode, Encoding.Default.GetBytes(extracttext)));
pdfText = pdfText + extracttext;
pdfText = pdfText.Replace("[xyz]", s);
pdfReader.Close();
}
CreatePDF(pdfText);
}
catch (Exception ex)
{
}
finally
{
}
}
【问题讨论】:
-
iText 解析器类(尚未)用于重新构建 PDF,而仅用于(纯)文本和图像提取以及它们的位置和尺寸的提取。此外请注意,PDF 不是可编辑格式; 用一个新词替换一个词, 因此,这不是一件小事,而是(对于通用解决方案)一项艰巨的任务。话虽如此,如果您的任务仅限于一种特殊类型的 PDF,请张贴样本以供检查,也许您的文档的构建方式大大简化了任务。
-
单词替换工作正常。但是,这段代码创建的新 PDF 没有实际的所有样式信息。有什么方法可以提取 PDF 的样式信息以及文本...?
-
您对提取的纯文本进行单词替换。如果这就是你想要的,那就太好了。否则完全不相关。
-
+1 @mkl 的评论
标签: asp.net c#-4.0 pdf itextsharp