gpt4 book ai didi

c# - 使用 Xamarin Android 创建 PDF

转载 作者:太空狗 更新时间:2023-10-29 14:58:46 25 4
gpt4 key购买 nike

我正在尝试创建一个可以通过外部应用程序打开的 PDF 文档。用户正在选择存储在 List<byte[]> 中的任意数量的图像。 .忽略这一点,我什至无法创建可以打开的空白 PDF。如果我尝试打开生成的 PDF,Adobe Reader 会提示该文件不受支持或已损坏。由于似乎生成了 PDF,因此我不确定错误发生在哪里。我想当尝试将 PDF 写入 FileStream 时会出现问题。以下代码有什么问题?

private void CreatePDFWithImages(List<byte[]> images)
{
// create PDF
PdfDocument pdf = new PdfDocument();

// create a page description
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(612, 792, 0).Create();

// draw image to pag
for (int i = 0; i < images.Count; i++)
{
// start page
PdfDocument.Page page = pdf.StartPage(pageInfo);

// create bitmap from each byte[]
byte[] currentByteArray = images[i];
Android.Graphics.BitmapFactory.Options options = new Android.Graphics.BitmapFactory.Options();
options.InMutable = true;
Android.Graphics.Bitmap bitmap = Android.Graphics.BitmapFactory.DecodeByteArray(currentByteArray, 0, currentByteArray.Length, options);

// matrix
Android.Graphics.Matrix matrix = new Android.Graphics.Matrix();
matrix.PreTranslate(300, 300);
matrix.PreScale(2, 2);

// add image to the page
page.Canvas.DrawBitmap(bitmap, matrix, null);

// finish the page
pdf.FinishPage(page);
}

// save PDF
string path = "/mnt/shared/POC_Documents/temp.pdf";
FileStream fileStream = new FileStream(path, FileMode.Create);

pdf.WriteTo(fileStream);

// close PDF
pdf.Close();

// try to open...
this.OpenPDF(path);
}

最佳答案

在 pageInfo 中,您必须将页码作为 1 而不是 0 传递和

如果你添加

fileStream.flush();

在这一行之后

pdf.WriteTo(fileStream);

它将创建 pdf

关于c# - 使用 Xamarin Android 创建 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28886045/

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