通过 .net 应用程序,我想通过向下移动第一行或第一个单词的小空间来修改 pdf 文档。
是否有任何库可以帮助我以编程方式更改 pdf 文档上的某些文本位置?
我想更改 pdf 上文本对象的 y 位置,此操作将对许多文件进行,并且我不想使用任何中间过程,例如转换为 svg 或 word,我想直接修改 pdf文件。
我检查了一些库,如 PdfSharp 、 iTextSharp 、 PDFLibNet 、 Amyuni 、 pdfclown ,但我没有找到解决这个问题的方法。
一个多月来研究在 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;
}
我希望这对遇到同样问题的其他人有所帮助。
我认为您可以使用 .NET 的特定 API(例如 iTextSharp)重新编辑 pdf 文件。