Aspose.pdf 如何将原有pdf里面的每页设置A4纸大小,内容也要A4纸大小,感谢技术大哥帮忙查看。
源文件:pdflj.pdf (7.8 MB)
将原有pdf页面设置成A4成功,但是里面的内容没有缩小如下截图。
QQ截图20190907170112.jpg (25.5 KB)
复制代码便可使用: 请技术大牛提供内容缩小到A4纸大小的源代码,万分感谢。
Aspose.Pdf.Document pdfDocument6 = new Aspose.Pdf.Document(pdflj);
for (int i = 1; i <= pdfDocument6 .Pages.Count; i++)
{
//将原有pdf页面设置成A4成功,但是里面的内容没有缩小。
Aspose.Pdf.Page page = pdfDocument3.Pages[i];
page.SetPageSize(Aspose.Pdf.PageSize.A4.Width, Aspose.Pdf.PageSize.A4.Height);
}
pdfDocument6.Save("cc.pdf");
你好,当时ASPOSE的技术人员给我以下代码,确实可以调整内容的大小,但是我无法掌握数值的多少,所以没有用ASPOSE第三方实现。我的需求是在A4纸循环插入表格数据,使用的是Spire.Pdf可以实现。
以下代码可以调整页面内容的大小:
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("cc.pdf");
/* //指定用于调整大小的参数
PdfFileEditor fileEditor = new PdfFileEditor();
//list转数组类型
int[] pages = sz.ToArray();
PdfFileEditor.ContentsResizeParameters parameters = new
PdfFileEditor.ContentsResizeParameters(
PdfFileEditor.ContentsResizeValue.Percents(1), //leftmargin左边缘
null, //contentswidth 目录宽度
PdfFileEditor.ContentsResizeValue.Percents(-170),//rightmargin 右边缘
PdfFileEditor.ContentsResizeValue.Percents(-170),//topmargin 顶边距
//PdfFileEditor.ContentsResizeValue.Percents(900),
null, // contentHeight 高度
PdfFileEditor.ContentsResizeValue.Percents(0));// Bottom margin 底边距
//调整页面内容的大小
fileEditor.ResizeContents(pdfDocument, pages, parameters);*/
//设置第一页目录的大小和第二页相同
//pdfDocument.Pages[1].SetPageSize(pdfDocument.Pages[2].Rect.Width,
pdfDocument.Pages[2].Rect.Height);
/*double height = pdfDocument.Pages[2].GetPageRect(false).Height;
double width = pdfDocument.Pages[2].GetPageRect(false).Width;
pdfDocument.Pages[1].SetPageSize(width, height);*/
以下是ASPOSE技术人员给的代码,希望能帮助到您。
int[] pages = { 1 };
// Create PdfFileEditor Object
PdfFileEditor fileEditor = new PdfFileEditor();
// Open PDF Document
Document doc = new Document(dataDir + “cc (1).pdf”);
// Specify Parameter to be used for resizing
PdfFileEditor.ContentsResizeParameters parameters = new PdfFileEditor.ContentsResizeParameters(
PdfFileEditor.ContentsResizeValue.Percents(0), null,
PdfFileEditor.ContentsResizeValue.Percents(0),
PdfFileEditor.ContentsResizeValue.Percents(0), null,
PdfFileEditor.ContentsResizeValue.Percents(-30));
// Resize Page Contents
fileEditor.ResizeContents(doc, pages ,parameters);
// Save document into new location.
doc.Save(dataDir + “ResizePageContents_19.8.pdf”);
1 Like
icejd
March 24, 2020, 4:37am
6
非常感谢,还是没有解决我的问题,可能我们的目的不太一样,我是想将一个有着大尺寸图片的PDF中的图片缩小以减小页面的大小,但是我把图片提取出来并缩小再替换进去,图片是小了,图片的区域并没有减小,区域还是那么大,把图片给放大了,没有达到缩小的目的
我认为你的需求是,想将pdf里面的图片缩小或放大到 A4纸大小。
所有我使用了一个比较笨的办法,先从pdf里面提取照片,然后获取pdf页面的大小,照片=pdf页面大小
注意:
以下代码是简单的测试,还有很多不完善的地方,请根据自己的需求更改。
以下是代码,复制使用:
PdfExtractor pdfExtractor = new PdfExtractor();
pdfExtractor.BindPdf("C:\\Users\\fhn\\Desktop\\新建文档.pdf");
// 提取所有图像
pdfExtractor.ExtractImage();
int imageCount = 1;
// 得到所有提取的图像
while (pdfExtractor.HasNextImage())
{
//调用GetNextImage方法将图像存储为文件
pdfExtractor.GetNextImage("C:\\Users\\fhn\\Desktop\\1\\6.jpg");
//递增图像计数器变量
imageCount++;
}
ImageStamp imageStamp = new ImageStamp("C:\\Users\\fhn\\Desktop\\1\\6.jpg");
Aspose.Pdf.Document cc = new Aspose.Pdf.Document();
cc.Pages.Add();
//将新创建pdf页面设置成A4大小
Aspose.Pdf.Page page = cc.Pages[1];
page.SetPageSize(Aspose.Pdf.PageSize.A4.Width, Aspose.Pdf.PageSize.A4.Height);
var Height = cc.Pages[1].GetPageRect(false).Height;
var Width = cc.Pages[1].GetPageRect(false).Width;
imageStamp.Height = Height;
imageStamp.Width = Width;
cc.Pages[1].AddStamp(imageStamp);
//将文档保存到新位置。
cc.Save("C:\\Users\\fhn\\Desktop\\1\\66.pdf");
@fhn123456
感谢您分享建议。
很高兴知道您已经成功解决了问题。
@icejd
您能否与我们分享您的样本PDF文档。我们将在我们的环境中测试该场景并相应地解决它。
icejd
March 26, 2020, 8:59am
9
太感谢了,感谢你的无私帮助,我用下面的方法完美实现了,
共享一下
PdfFileEditor fileEditor = new PdfFileEditor();
PdfFileEditor.ContentsResizeParameters parameters = new PdfFileEditor.ContentsResizeParameters(
// Left margin = 10% of page width
PdfFileEditor.ContentsResizeValue.Percents(0),
// New contents width calculated automatically as width - left margin - right margin (100% - 10% - 10% = 80%)
PdfFileEditor.ContentsResizeValue.Units(Aspose.Pdf.PageSize.A4.Width),
// Right margin is 10% of page
PdfFileEditor.ContentsResizeValue.Percents(0),
// Top margin = 10% of height
PdfFileEditor.ContentsResizeValue.Percents(0),
// New contents height is calculated automatically (similar to width)
PdfFileEditor.ContentsResizeValue.Units(Aspose.Pdf.PageSize.A4.Height),
// Bottom margin is 10%
PdfFileEditor.ContentsResizeValue.Percents(0)
);
fileEditor.ResizeContents(document, parameters);
PdfPageEditor pageEditor = new PdfPageEditor(document);
pageEditor.Zoom = 1.0f;
pageEditor.PageSize = PageSize.A4;
pageEditor.Save(txtpicDir.Text + “.pdf”);
@icejd
很高兴知道您已经达到要求。请继续使用我们的API,如果您遇到任何问题,请随时告诉我们。
@icejd
很高兴知道您已经达到要求。请继续使用我们的API,如果您遇到任何问题,请随时告诉我们。