我需要在ASP.NET的PDF文檔中用用戶的下拉列表中選擇的新單詞替換單詞。我正在使用iTextSharp,但創建的新PDF全部失真,因爲我無法在解壓縮時提取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,請張貼樣本以供檢查,也許您的文檔是以簡單地完成任務的方式構建的。 – mkl
單詞替換工作正常。但是,由這段代碼創建的新PDF沒有實際的所有樣式信息。有什麼方法可以提取PDF的樣式信息以及文本...? – tk2013
你在提取的純文本上做文字替換。很好,如果這就是你想要的。否則完全不相關。 – mkl