通过.net应用程序,我想通过移动第一行或第一个单词小空格来修改pdf文档。
是否有任何库可以帮助我以编程方式更改pdf文档中的某些文本位置?
我想改变pdf上文本对象的y位置,这个操作将针对许多文件进行,我不想使用任何中间过程,如转换为svg或word,我想要直接修改到pdf文件。
我检查了一些像PdfSharp,iTextSharp,PDFLibNet,Amyuni,pdfclown这样的库,我找不到解决这个问题的方法。
答案 0 :(得分:1)
在一个多月的时间里研究了在pdf文件上移动文本对象的解决方案,我检查了许多库,如[Docotic,pdfclown,iTextSharp,PdfSharp,PDFLibNet,Amyuni,asppdf,PDFTechLib等],我有找到了两个可以执行此操作的库
另一个库是foxitsoftware,这是我如何做的示例代码。
public static void Modify(string pdfFile)
{
IntPtr pdf_doc = IntPtr.Zero;
IntPtr pdf_page = IntPtr.Zero;
TextInfo TxtInfo = null;
ObjectInfo ObjInfo = null;
ArrBuf = new ArrayList();
FPDFView.FPDF_InitLibrary(System.Diagnostics.Process.GetCurrentProcess().Handle);
FPDFView.FPDF_UnlockDLL("xxxxxx", "xxxxxxxxxxxxxxxxxxxxxxxxxxxx");
pdf_doc = FPDFLIB.FPDFView.FPDF_LoadDocument(pdfFile, "");
pdf_page = FPDFView.FPDF_LoadPage(pdf_doc, 0);
IntPtr Page_Obj = FPDFEditBase.FPDFPage_GetObject(pdf_page, 0);
FPDFEditBase.FPDFPageObj_Transform(Page_Obj, 1, 0,0, 1, 0, -40);
ObjInfo = new ObjectInfo(pdf_doc, pdf_page, -1);
ObjInfo.Delete(-1);
FPDFLIB.FPDFEditBase.FPDF_FILEWRITE pFileWriter = new FPDFLIB.FPDFEditBase.FPDF_FILEWRITE();
pFileWriter.wb = new FPDFEditBase.WriteBlock(MyDelegateFunc);
//FPDFEditBase.FPDF_SaveDocument(pdf_doc, ref pFileWriter, 0, null, 0, null, 0, 0);
bool flag = FPDFEditBase.FPDF_SaveDocument(pdf_doc, ref pFileWriter, 0, null, 0, null, 0, 0);
if (flag == false)
return;
FileStream fs = new FileStream(pdfFile, FileMode.Create, FileAccess.Write);
object[] myArr = ArrBuf.ToArray();
for (int i = 0; i < myArr.Length; i++)
{
byte[] mybyte = (byte[])myArr[i];
fs.Write(mybyte, 0, mybyte.Length);
}
fs.Close();
fs.Dispose();
FPDFLIB.FPDFView.FPDF_CloseDocument(pdf_doc);
}
static ArrayList ArrBuf = new ArrayList();
public static int MyDelegateFunc(ref FPDFEditBase.FPDF_FILEWRITE pThis, IntPtr pData, UInt32 size)
{
byte[] byteData = new byte[size];
System.Runtime.InteropServices.Marshal.Copy(pData, byteData, 0, (int)size);
ArrBuf.Add(byteData);
return 1;
}
我希望这对那些遇到同样问题的人有所帮助。
答案 1 :(得分:0)
我认为您可以使用针对.NET的特定API(例如iTextSharp)重新编辑pdf文件。