gpt4 book ai didi

c# - 如何使用 c#` 将 pdf 文件从合法格式调整为字母格式

转载 作者:太空宇宙 更新时间:2023-11-03 13:42:44 27 4
gpt4 key购买 nike

我有导出为合法格式的 pdf 文件,想将它们转换为字母格式(基本上缩小它们),每个文件可能有 1 到 3 页,下面是我尝试过的代码,但我遇到了这些问题:

  • 页面大小减小了,这很好,但我无法使用边距属性将页面放在容器的正确边界处(我缩小了页面但绘制在容器底部的某处)结果 pdf 文件)

  • 我无法增加页数,所以代码绘制了两个页面,一个在另一个之上。

这是代码

PdfImportedPage page;

PdfReader reader = new PdfReader(@"C:\pdf\legalFormat.pdf");
Document doc = new Document(PageSize.A4, 0, 0, 0, 0);
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(@"C:\pdf\letterFormat.PDF", FileMode.Create));
doc.Open();

PdfContentByte cb = writer.DirectContent;
for (int i = 1 ; i < reader.NumberOfPages + 1; i++){
page = writer.GetImportedPage(reader, i); // i is the number of page
float Scale = 0.67f;
cb.AddTemplate(page, Scale, 0, 0, Scale, 0, 0);
}
doc.Close();

最佳答案

问题解决:

在主过程中运行它进行测试。

            string original = args[0];

string inPDF = original;
string outPDF = Directory.GetDirectoryRoot(original) + "temp.pdf";
PdfReader pdfr = new PdfReader(inPDF);

Document doc = new Document(PageSize.LETTER);
Document.Compress = true;

PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(outPDF, FileMode.Create));
doc.Open();

PdfContentByte cb = writer.DirectContent;

PdfImportedPage page;

for (int i = 1; i < pdfr.NumberOfPages + 1; i++)
{
page = writer.GetImportedPage(pdfr, i);
cb.AddTemplate(page, PageSize.LETTER.Width / pdfr.GetPageSize(i).Width, 0, 0, PageSize.LETTER.Height / pdfr.GetPageSize(i).Height, 0, 0);
doc.NewPage();
}

doc.Close();

//just renaming, conversion / resize process ends at doc.close() above
File.Delete(original);
File.Copy(outPDF, original);

关于c# - 如何使用 c#` 将 pdf 文件从合法格式调整为字母格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16444606/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com