Skip to content

Commit 30a5c71

Browse files
committed
优化PDF文件加载时的卡顿问题.未提供印章位置时使用随机偏移
1 parent f67abe5 commit 30a5c71

File tree

3 files changed

+49
-20
lines changed

3 files changed

+49
-20
lines changed

PDFQFZ/Form1.Designer.cs

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

PDFQFZ/Form1.cs

Lines changed: 47 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
using Org.BouncyCastle.Crypto.Generators;
1515
using PDFQFZ.Library;
1616
using System.Text;
17+
using System.Threading.Tasks;
1718

1819
namespace PDFQFZ
1920
{
@@ -893,8 +894,28 @@ private bool PDFWatermark(string inputfilepath, string outputfilepath)
893894
{
894895
continue;
895896
}
897+
int random_w = 0, random_h = 0;
898+
Random random = new Random();
899+
random_w = random.Next(-5, 6);//随机偏移
900+
random_h = random.Next(-5, 6);//随机偏移
896901
wbl = Convert.ToSingle(textPx.Text);//这里根据比例来定位
902+
if((wbl + 0.01f * random_w) < 1f)
903+
{
904+
wbl = wbl + 0.01f * random_w;
905+
}
906+
else
907+
{
908+
wbl = wbl - 0.01f * random_w;
909+
}
897910
hbl = 1 - Convert.ToSingle(textPy.Text);//这里根据比例来定位
911+
if ((hbl - 0.01f * random_h) > 0f)
912+
{
913+
hbl = hbl - 0.01f * random_h;
914+
}
915+
else
916+
{
917+
hbl = hbl + 0.01f * random_h;
918+
}
898919
}
899920
else
900921
{
@@ -1751,29 +1772,13 @@ private void comboQmtype_SelectionChangeCommitted(object sender, EventArgs e)
17511772

17521773
}
17531774
//选择PDF预览文件
1754-
private void comboPDFlist_SelectionChangeCommitted(object sender, EventArgs e)
1775+
private async void comboPDFlist_SelectionChangeCommitted(object sender, EventArgs e)
17551776
{
17561777
dtPages.Rows.Clear();//清空PDF页下拉项
17571778
previewPath = comboPDFlist.SelectedValue.ToString();
17581779
if (previewPath != "")
17591780
{
1760-
PDFFile viewPdfFile = PDFFile.Open(previewPath);
1761-
imgStartPage = 1;
1762-
imgPageCount = viewPdfFile.PageCount;
1763-
viewPdfimgs = new Bitmap[imgPageCount];
1764-
int dpi = 72;
1765-
//一次性把PDF所有页都读取到一个图片数组,虽然很卡,但是好像也没有啥好办法
1766-
for (int i = 0; i < viewPdfFile.PageCount; i++)
1767-
{
1768-
Bitmap pageImage = viewPdfFile.GetPageImage(i, dpi);
1769-
viewPdfimgs[i] = pageImage;
1770-
//pageImage.Save("D:\\tmp\\img\\" + i + ".png", System.Drawing.Imaging.ImageFormat.Png);
1771-
1772-
1773-
dtPages.Rows.Add(new object[] { imgStartPage + i, imgStartPage + i });
1774-
}
1775-
viewPdfFile.Dispose();
1776-
viewPDFPage();
1781+
await LoadPageImagesAsync(previewPath);
17771782
}
17781783
else
17791784
{
@@ -1791,6 +1796,30 @@ private void comboPDFlist_SelectionChangeCommitted(object sender, EventArgs e)
17911796
}
17921797

17931798
}
1799+
async Task LoadPageImagesAsync(string previewPath)
1800+
{
1801+
PDFFile viewPdfFile = PDFFile.Open(previewPath);
1802+
imgStartPage = 1;
1803+
imgPageCount = viewPdfFile.PageCount;
1804+
viewPdfimgs = new Bitmap[imgPageCount];
1805+
int dpi = 72;
1806+
1807+
// 使用异步方式加载第一页
1808+
viewPdfimgs[0] = await Task.Run(() => viewPdfFile.GetPageImage(0, dpi));
1809+
dtPages.Rows.Add(new object[] { 1, 1 });
1810+
viewPDFPage();
1811+
1812+
// 异步加载剩余的页面
1813+
for (int i = 1; i < viewPdfFile.PageCount; i++)
1814+
{
1815+
int currentIndex = i;
1816+
viewPdfimgs[currentIndex] = await Task.Run(() => viewPdfFile.GetPageImage(currentIndex, dpi));
1817+
currentIndex++;
1818+
dtPages.Rows.Add(new object[] { currentIndex, currentIndex });
1819+
}
1820+
1821+
viewPdfFile.Dispose();
1822+
}
17941823
//根据印章类型切换窗口大小
17951824
private void comboYz_SelectionChangeCommitted(object sender, EventArgs e)
17961825
{

PDFQFZ/Form1.resx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@
124124
<data name="pictureBox2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
125125
<value>
126126
iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAIAAAC1nk4lAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
127-
vQAADr0BR/uQrQAAArhJREFUaEPllkty5SAQBH2QWc79bzZneK4RZYwSEA1CL+aTkQuHqrupcHjhj9c+
127+
vAAADrwBlbxySQAAArhJREFUaEPllkty5SAQBH2QWc79bzZneK4RZYwSEA1CL+aTkQuHqrupcHjhj9c+
128128
fv34eaGHdnC3NJoF9fIqi6VRYlmfm2S6NF7dok+HmSiNl7brZwJES+OBph7tgOGmHh0RKo3T0ENhsA49
129129
dMmgNC6WeuIGOFjqiQ5XpXGo1BO3wdlST7TolsaJrOOt4Ims44p2aSxnHT8AHso6PhMt7eBh8Kh0cKZR
130130
GmvSwVvA09JBAUtjQTp4IyggHXxxKo3RpLNJ7u9CZweD0g4m2Xsh6eDguzSGpINJcEQ6mARHpIM/ubTo

0 commit comments

Comments
 (0)