首先请原谅我的英语不好!我想在pdf文档中搜索"Hello"之类的单词.所以我必须通过PdfTextExtractor阅读pdf中的每一页.我做得很好.我可以分别读取每个页面中的所有单词,并将其保存在字符串缓冲区中.但是当我在For循环中推送此代码时(例如从第1页到第7页进行搜索),前一页的单词将保留在字符串缓冲区中.我跳了解你的问题.Tanx全部.这是我的代码:
PdfReader reader2 = new PdfReader(openFileDialog1.FileName);
int pagen = reader2.NumberOfPages;
reader2.Close();
ITextExtractionStrategy its = new iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy();
for (int i = 1; i < pagen; i++)
{
textBox1.Text = "";
PdfReader reader = new PdfReader(openFileDialog1.FileName);
String s = PdfTextExtractor.GetTextFromPage(reader, i, its);
//MessageBox.Show(s.Length.ToString());
//PdfTextArray h = new PdfTextArray(s);
//
// s = "";
s = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(s)));
textBox1.Text = s;
reader.Close();
Run Code Online (Sandbox Code Playgroud)
}
我已经能够在单独的文档中创建纵向页面和横向页面,但现在需要在一个文档中执行此操作.我正在使用ITextSharp库,document.setpagesize似乎适用于所有页面.它是否正确?
我正在使用PDFLib并且更改页面方向在该库中不是问题.
有什么建议?保罗.
我希望以编程方式从pdf文档中获取单词count.
我看过PDFSharp,但它对我想做的事情来说太笨重了.我没有访问服务器,所以我无法安装acrobat来获取他们的api或任何东西.我愿意在iTextSharp或其他工具中做到这一点.
您好我已成功使用HTMLWorker使用asp.NET/C#转换gridview.
(1)我已经对结果表应用了一些有限的样式,但是无法看到如何将tablestyle应用于实例网格线或应用其他格式样式,例如特定列的大列宽.(2)我实际上想把这个文本放到一个包含徽标等的预先存在的模板上.之前我曾使用过PDF Stamper,但是看不出我如何同时使用PDFStamper和HTMLWorker.HTMLWorker需要一个实现iDocListener的Document ......但这似乎与使用PDFStamper兼容.我想我要找的是一种创建PDFStamper,写标题等的方法,然后从网格中添加解析后的HTML.另一个问题是解析的内容不与页面上的其他内容交互.例如下面我向页面添加一个标题块.解析的HTML不是从它下面开始,而是在顶部写入.如何将已解析的HTML内容与PDF文档中的其余内容进行放置/交互?
在此先感谢Rob
这是我已经拥有的代码
Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 30f, 0f);
HTMLWorker htmlWorker = new HTMLWorker(pdfDoc);
StyleSheet styles = new StyleSheet();
styles.LoadTagStyle("th", "size", "12px");
styles.LoadTagStyle("th", "face", "helvetica");
styles.LoadTagStyle("span", "size", "10px");
styles.LoadTagStyle("span", "face", "helvetica");
styles.LoadTagStyle("td", "size", "10px");
styles.LoadTagStyle("td", "face", "helvetica");
htmlWorker.SetStyleSheet(styles);
PdfWriter.GetInstance(pdfDoc, HttpContext.Current.Response.OutputStream);
pdfDoc.Open();
//Title - but this gets obsured by data, doesnt move it down
Font font = new Font(Font.FontFamily.HELVETICA, 14, Font.BOLD);
Chunk chunk = new Chunk(title, font);
pdfDoc.Add(chunk);
//Body
htmlWorker.Parse(sr);
Run Code Online (Sandbox Code Playgroud) 如何在C#中使用iTextSharp更改现有PDF文件的字体?
我想将整个文档字体更改为一个,例如Arial
我正在使用iTextSharp并尝试从PDF中提取透明图像.当我提取图像时,透明度变为纯黑色并丢失.我发现了多个图像提取示例,但所有这些示例似乎都有相同的问题.我正在使用的代码如下
另一个例子来自itextpdf.com/examples/iia.php?id=284.此示例包括顶部"结果"部分中的图像.如果单击Img7.png,您将在图像中看到黑色边框,但是在页面底部有一个指向原始图像info.png的链接,该链接显示了它应该看起来的透明度.这是我遇到的确切问题.任何帮助或想法将不胜感激
public void ExtractImage(string pdfFile)
{
const int pageNumber = 1; //Page number to extract the image from
PdfReader pdf = new PdfReader(pdfFile);
PdfDictionary pg = pdf.GetPageN(pageNumber);
PdfDictionary res = (PdfDictionary)PdfReader.GetPdfObject(pg.Get(PdfName.RESOURCES));
PdfDictionary xobj = (PdfDictionary)PdfReader.GetPdfObject(res.Get(PdfName.XOBJECT));
foreach (PdfName name in xobj.Keys)
{
PdfObject obj = xobj.Get(name);
if (obj.IsIndirect())
{
PdfDictionary tg = (PdfDictionary)PdfReader.GetPdfObject(obj);
string width = tg.Get(PdfName.WIDTH).ToString();
string height = tg.Get(PdfName.HEIGHT).ToString();
ImageRenderInfo imgRI =
ImageRenderInfo.CreateForXObject(new Matrix(float.Parse(width), float.Parse(height)),
(PRIndirectReference)obj, tg);
var fileType= imgRI.GetImage().GetFileType();
RenderImage(imgRI, imgPath + +imgRI.GetRef().Number …Run Code Online (Sandbox Code Playgroud) 我现在试过这个,但它不起作用.form.GenerateAppearances = true;我合并了我的2个文件然后保存.然后我再次打开它以填充所有字段.它说所有的Acrofields钥匙都不见了,但是当我在Nitro pro中打开它的时候.为什么我不能在代码中看到它们?在保存之前我是否必须添加一些东西?
private static void CombineAndSavePdf1(string savePath, List<string> lstPdfFiles)
{
using (Stream outputPdfStream = new FileStream(savePath, FileMode.Create, FileAccess.Write, FileShare.None))
{
Document document = new Document();
PdfSmartCopy copy = new PdfSmartCopy(document, outputPdfStream);
document.Open();
PdfReader reader;
int totalPageCnt;
PdfStamper stamper;
string[] fieldNames;
foreach (string file in lstPdfFiles)
{
reader = new PdfReader(file);
totalPageCnt = reader.NumberOfPages;
for (int pageCnt = 0; pageCnt < totalPageCnt; )
{
//have to create new reader for each page or PdfStamper will throw error …Run Code Online (Sandbox Code Playgroud) 我正在使用iTextSharp将单页TIF文件转换和拼接为多页PDF文件。单页TIF文件具有不同的位深和压缩率。
这是代码-
private void button1_Click(object sender, EventArgs e)
{
List<string> TIFfiles = new List<string>();
Document document;
PdfWriter pdfwriter;
Bitmap tifFile;
pdfFilename = <file path>.PDF;
TIFfiles = <load the path to each TIF file in this array>;
//Create document
document = new Document();
// creation of the different writers
pdfwriter = PdfWriter.GetInstance(document, new System.IO.FileStream(pdfFilename, FileMode.Create));
document.Open();
document.SetMargins(0, 0, 0, 0);
foreach (string file in TIFfiles)
{
//load the tiff image
tifFile = new Bitmap(file);
//Total number of pages
iTextSharp.text.Rectangle pgSize = …Run Code Online (Sandbox Code Playgroud) 我编写了一个应用程序,以编程方式从数据库中填写PDF模板中的表格并将结果保存到磁盘。除了未按预期呈现的任何多行文本字段之外,所有内容均正常运行。它们应该在顶部,并在行与行之间保持无间隔。
我得到的结果是在这里:

但是,当我使用任何PDF阅读器单击表单字段时,该字段都会根据我的期望进行自我更正。见:

我使用的代码非常漂亮。
PdfStamper stamper = new PdfStamper(reader, ms, '\0', false);
AcroFields form = stamper.AcroFields;
List<DocumentField> fields = GetData(id);
foreach (DocumentField field in fields)
{
form.SetField(field.FieldName, field.Value);
}
stamper.FormFlattening = true;
stamper.Close();
reader.Close();
Run Code Online (Sandbox Code Playgroud)
我System.Environment.NewLine用来添加回程报酬。有谁知道是什么原因导致这种现象,以及解决方案使左上角对齐而没有大的间隙。谢谢。
更新解决方案
我删除了该字段并重新添加它,它的行为符合预期。实际上似乎是问题出在,我使用的是一种名为“ Cambria”的字体,如果我将该字段设置回使用该字体,则会返回该行为。
我花了3天时间为什么使用iTextSharp.tool.xml添加命名空间无法正常工作.我已经将itextsharp.dll放在bin文件夹中.其他相关的命名空间正在运行.Plz的帮助.