感谢您的查看和帮助!
我在向PDF右上角插入表格,发现第一张旋转了270度,我把第一张转成图片,在添加到PDF第一页发现,PDF变大了很多,您有办法,让PDF压缩吗?
输入文件:input.pdf (1.5 MB)
输出后变大的PDF文件:output.pdf (2.2 MB)
以下是我的全部代码
string[] sqlData = {
$"46;2020年;1",
$"运输;10年;页码"
};
// 加载源PDF文档 input input测试
Aspose.Pdf.Document doc = new Aspose.Pdf.Document(@"E:\桌面\666\源文件\input.pdf");
//获得第一页
var page1toadd = doc.Pages[1];
//获得总页数 如果不加1 将会在最后一页的前面加
int pagesCount = doc.Pages.Count + 1;
//PDF最后一页插入第一页 pagesCount(是最后一页索引)
doc.Pages.Insert(pagesCount, page1toadd);
//删除第一页
doc.Pages.Delete(1);
//判断PDF第一页是否旋转
Rotation rot = doc.Pages[1].Rotate;
if (!rot.ToString().Equals("None"))
{
Aspose.Pdf.Devices.JpegDevice jpegDevice = new Aspose.Pdf.Devices.JpegDevice();
MemoryStream memStream = new MemoryStream();
//转换一个特定的页面,并保存图像流
jpegDevice.Process(pdfDocument.Pages[pages], memStream);
//接收图片
Aspose.Pdf.ImageStamp imageStamp = new Aspose.Pdf.ImageStamp(memStream );
//删除第一页
doc.Pages.Delete(1);
//在第一页插入空白页
var page = doc.Pages.Insert(1);
page.SetPageSize(Aspose.Pdf.PageSize.A4.Width, Aspose.Pdf.PageSize.A4.Height);
var Width = page.GetPageRect(false).Width;
var Height = page.GetPageRect(false).Height;
imageStamp.Width = Width;
imageStamp.Height = Height;
//第一页插入图片
doc.Pages[1].AddStamp(imageStamp);
// 初始化表的新实例
Aspose.Pdf.Table table = new Aspose.Pdf.Table();
// 将表格边框颜色设置为浅灰色
table.Border = new Aspose.Pdf.BorderInfo(Aspose.Pdf.BorderSide.All, .5f, Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Red));
// 设置表格单元格的边框
table.DefaultCellBorder = new Aspose.Pdf.BorderInfo(Aspose.Pdf.BorderSide.All, .5f, Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Red));
// 使用表的列宽设置
table.ColumnWidths = "2.4cm 1.8cm 1.8cm";
// 创建循环以添加10行
for (int row_count = 0; row_count < 2; row_count++)
{
// 将行添加到表
Aspose.Pdf.Row row = table.Rows.Add();
table.Rows[row_count].FixedRowHeight = 42.525;
string[] rowData = sqlData[row_count].Split(';');
for (int i = 0; i < rowData.Length; i++)
{
TextFragment fragment = new TextFragment();
Aspose.Pdf.Text.TextSegment segment = new Aspose.Pdf.Text.TextSegment($"{rowData[i]}");
Aspose.Pdf.Text.TextState ts = new TextState(System.Drawing.Color.Red);
ts.Font = FontRepository.FindFont("SimSun");
ts.Font.IsEmbedded = true;
ts.FontSize = 13f;
segment.TextState = ts;
fragment.Segments.Add(segment);
Cell cell = new Cell();
row.Cells.Add(cell);
cell.Paragraphs.Add(fragment);
cell.VerticalAlignment = VerticalAlignment.Center;
cell.Alignment = HorizontalAlignment.Center;
}
}
//Pdf页面宽度
double pageWidth = doc.Pages[1].GetPageRect(true).Width;
double pageHeight = doc.Pages[1].GetPageRect(true).Height;
//获得表格的宽
float tableWidth = (float)table.GetWidth();
//右上角
table.Alignment = HorizontalAlignment.Right;
table.Top = 15f;
float rightMargin = (float)(tableWidth / 1.9);
table.Left = (float)(pageWidth - (tableWidth + rightMargin));
//将表对象添加到输入文档的第一页
doc.Pages[1].Paragraphs.Add(table);
//保存包含表对象的更新文档 output.pdf
doc.Save(@"E:\桌面\666\源文件\output.pdf");