Ikram Shams

Ikram Shams

  • 0
  • 82
  • 0

TextFragmentCollection of Aspose.Pdf is taking too much time

Feb 4 2020 1:07 PM
I am using Aspose.Pdf to find and replace text in a Pdf File. If a Pdf File has 10 words to find and replace then it is taking 2 to 3 minute. But if a Pdf File has 80 words(10 words are repeating 8 times on the File) then it is taking 20 to 25 minutes in Finding and replacing text on a Pdf File. I am using the below code. Please suggest me what the changes i will make in my code that it will take minimum time.
  1. private void PrintPdfDocument(object FileNameSource, DataTable dt)  
  2. {  
  3. object fileNameSource = FileNameSource;  
  4. object fileName = System.IO.Path.GetDirectoryName(System.IO.Path.GetTempPath()) + "\\" + DateTime.Now.Ticks.ToString() + ".pdf";  
  5. File.Copy(fileNameSource.ToString(), fileName.ToString(), false);  
  6. pdfDocument = new Document(FileNameSource.ToString());  
  7. try  
  8. {  
  9. TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("@color_arabic");  
  10. pdfDocument.Pages.Accept(textFragmentAbsorber);  
  11. TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;  
  12. foreach (TextFragment textFragment in textFragmentCollection)  
  13. {  
  14. textFragment.Text = txtColorArabic.Text.ToString().Trim();  
  15. }  
  16. textFragmentAbsorber = new TextFragmentAbsorber("@color_english");  
  17. pdfDocument.Pages.Accept(textFragmentAbsorber);  
  18. textFragmentCollection = textFragmentAbsorber.TextFragments;  
  19. foreach (TextFragment textFragment in textFragmentCollection)  
  20. {  
  21. textFragment.Text = txtColorEnglish.Text.Trim();  
  22. }  
  23. textFragmentAbsorber = new TextFragmentAbsorber("@unit_arabic");  
  24. pdfDocument.Pages.Accept(textFragmentAbsorber);  
  25. textFragmentCollection = textFragmentAbsorber.TextFragments;  
  26. foreach (TextFragment textFragment in textFragmentCollection)  
  27. {  
  28. textFragment.Text = ConvertNumeralsToArabic(txt_ArabicUnit.Text.ToString());  
  29. }  
  30. textFragmentAbsorber = new TextFragmentAbsorber("@unit_english");  
  31. pdfDocument.Pages.Accept(textFragmentAbsorber);  
  32. textFragmentCollection = textFragmentAbsorber.TextFragments;  
  33. foreach (TextFragment textFragment in textFragmentCollection)  
  34. {  
  35. textFragment.Text = txtUnitEnglish.Text.ToString().Trim();  
  36. }  
  37. textFragmentAbsorber = new TextFragmentAbsorber("@mfg_arabic");  
  38. pdfDocument.Pages.Accept(textFragmentAbsorber);  
  39. textFragmentCollection = textFragmentAbsorber.TextFragments;  
  40. foreach (TextFragment textFragment in textFragmentCollection)  
  41. {  
  42. textFragment.Text = ConvertNumeralsToArabic(dt.Rows[0]["ProdDate"].ToString());  
  43. }  
  44. textFragmentAbsorber = new TextFragmentAbsorber("@mfg_english");  
  45. pdfDocument.Pages.Accept(textFragmentAbsorber);  
  46. textFragmentCollection = textFragmentAbsorber.TextFragments;  
  47. foreach (TextFragment textFragment in textFragmentCollection)  
  48. {  
  49. textFragment.Text = dt.Rows[0]["ProdDate"].ToString().Trim();  
  50. }  
  51. textFragmentAbsorber = new TextFragmentAbsorber("@exp_arabic");  
  52. pdfDocument.Pages.Accept(textFragmentAbsorber);  
  53. textFragmentCollection = textFragmentAbsorber.TextFragments;  
  54. string expArabic = dt.Rows[0]["ExpDate"].ToString();  
  55. foreach (TextFragment textFragment in textFragmentCollection)  
  56. {  
  57. textFragment.Text = ConvertNumeralsToArabic(dt.Rows[0]["ExpDate"].ToString());  
  58. }  
  59. textFragmentAbsorber = new TextFragmentAbsorber("@exp_english");  
  60. pdfDocument.Pages.Accept(textFragmentAbsorber);  
  61. textFragmentCollection = textFragmentAbsorber.TextFragments;  
  62. foreach (TextFragment textFragment in textFragmentCollection)  
  63. {  
  64. textFragment.Text = dt.Rows[0]["ExpDate"].ToString().Trim();  
  65. }  
  66. if ((dt.Rows[0]["InventBatchId"].ToString().Trim().Contains("B")) &&  
  67. (dt.Rows[0]["InventBatchId"].ToString().Trim().Substring(0, 1) == "B"))  
  68. {  
  69. textFragmentAbsorber = new TextFragmentAbsorber("@bch_arabic");  
  70. pdfDocument.Pages.Accept(textFragmentAbsorber);  
  71. textFragmentCollection = textFragmentAbsorber.TextFragments;  
  72. foreach (TextFragment textFragment in textFragmentCollection)  
  73. {  
  74. textFragment.Text = ConvertNumeralsToArabic(dt.Rows[0]["InventBatchId"].ToString().Trim().Substring(1).Replace("-"""));  
  75. }  
  76. textFragmentAbsorber = new TextFragmentAbsorber("@bch_english");  
  77. pdfDocument.Pages.Accept(textFragmentAbsorber);  
  78. textFragmentCollection = textFragmentAbsorber.TextFragments;  
  79. foreach (TextFragment textFragment in textFragmentCollection)  
  80. {  
  81. textFragment.Text = dt.Rows[0]["InventBatchId"].ToString().Trim().Substring(1).Replace("-""");  
  82. }  
  83. }  
  84. else  
  85. {  
  86. textFragmentAbsorber = new TextFragmentAbsorber("@bch_arabic");  
  87. pdfDocument.Pages.Accept(textFragmentAbsorber);  
  88. textFragmentCollection = textFragmentAbsorber.TextFragments;  
  89. foreach (TextFragment textFragment in textFragmentCollection)  
  90. {  
  91. textFragment.Text = ConvertNumeralsToArabic(dt.Rows[0]["InventBatchId"].ToString().Trim());  
  92. }  
  93. textFragmentAbsorber = new TextFragmentAbsorber("@bch_english");  
  94. pdfDocument.Pages.Accept(textFragmentAbsorber);  
  95. textFragmentCollection = textFragmentAbsorber.TextFragments;  
  96. foreach (TextFragment textFragment in textFragmentCollection)  
  97. {  
  98. textFragment.Text = dt.Rows[0]["InventBatchId"].ToString().Trim();  
  99. }  
  100. }  
  101. pdfDocument.Save(@fileName.ToString());  
  102. }  

Answers (2)