C# 更改PDF-文本重新定位
是否有方法将现有pdf页面中的文本移动到其他位置 比如在x=100,y=100,w=100,h=100区域有一些文本,我想把它移到x=50,y=200,w=100,h=100 我做了很多研究,但似乎C# 更改PDF-文本重新定位,c#,pdf,itextsharp,pdfsharp,C#,Pdf,Itextsharp,Pdfsharp,是否有方法将现有pdf页面中的文本移动到其他位置 比如在x=100,y=100,w=100,h=100区域有一些文本,我想把它移到x=50,y=200,w=100,h=100 我做了很多研究,但似乎iTextSharp做不到这一点PDFSharp声称这是可以做到的,但我找不到任何例子 一种方法是为我要移动的文本的特定区域制作位图,在该区域上绘制白色矩形,然后在新位置插入位图。我不想使用这个解决方案,因为我处理的是超过1K页的大型pdf文件,每个页面都需要修改 我发现我需要找到一种方法来改变文本定
iTextSharp
做不到这一点PDFSharp
声称这是可以做到的,但我找不到任何例子
一种方法是为我要移动的文本的特定区域制作位图,在该区域上绘制白色矩形,然后在新位置插入位图。我不想使用这个解决方案,因为我处理的是超过1K页的大型pdf文件,每个页面都需要修改
我发现我需要找到一种方法来改变文本定位操作符(文本矩阵和文本状态参数),这并不是那么简单
有人有什么想法吗?或者你可以在新位置绘制并创建一个只读文本表单我认为如果所有PDF文件都是来自同一个应用程序的简单文件(而不是复杂文件),就可以做到这一点。
如果你需要这个,例如用户可以上传文件的网站,那么最好忘记它:你永远不会得到一个能完美处理任何PDF文件的解决方案 PDFsharp可以提供帮助,但AFAIK PDFsharp只能完成您需要的一半。PDFsharp将为您提供构成PDF文件的块。您必须解析块以找到绘图说明、检查位置并重新定位它们。
有些应用程序甚至不绘制单词,因此一个简单的单词,如“Hello”,可以分为3个块(可能是“He”、“ll”和“o”)。你可能要注意这一点;如果所有文件都来自同一个应用程序,则可能不是 我认为这里显示的用于提取文本的代码可能会有所帮助:
要重新定位文本,首先必须找到它-还需要大量额外的工作…您可以使用Page.Contents.Elements.RemoveAt(8)删除对象 通过检查Page.Contents.Elements.count验证元素计数 您可以获取每个元素的字符串值(进行一些字符串验证),您可以按如下方式获取数据
public static string GetElementStream(PdfPage page, int elementIndex)
{
string strStreamValue;
byte[] streamValue;
strStreamValue = "";
if (page.Contents.Elements.Count >= elementIndex)
{
PdfDictionary.PdfStream stream = page.Contents.Elements.GetDictionary(elementIndex).Stream;
streamValue = stream.Value;
foreach (byte b in streamValue)
{
strStreamValue += (char)b;
}
}
return strStreamValue;
}
这是针对单个pdf,还是需要为任意pdf移动文本?用户可以选择要移动的文本区域(矩形)。它适用于单个pdf及其所有页面。