Rank: Newbie
Groups: Registered
Joined: 2/10/2016(UTC) Posts: 1  Location: antwerp
|
ExceptionCode:
"Patagames.Pdf.Net.Exceptions.PdfiumException: Unexpected error code\r\n at Patagames.Pdf.Net.PdfPage.get_Handle()\r\n at Patagames.Pdf.Net.PdfPage.get_Width()\r\n at Connective.WebSigner.SignController.PdfActions.Pdf2Image.RenderPage(PdfPage page, Single resolution, Int32 scaleLevel, ImageFormat format)
Code:Code:
static Pdf2Image()
{
PdfCommon.Initialize(
"abc"
+ "def"
+ "123"
+ "234);
}
/// <summary>
/// Creates an image convertor by reading the PDF from a path on disk.
/// </summary>
public Pdf2Image(string documentpath)
{
_pdfFile = PdfDocument.Load(documentpath);
}
/// <summary>
/// Returns a jagged array holding several images of a PDF document.
/// </summary>
/// <param name="resolution"><see cref="float"/> depicting image resolution.
/// 72 or 96 is a good default.</param>
/// <param name="scaleLevel">Further scaling modifier, treated as percent.</param>
/// <param name="format"><see cref="ImageFormat"/> to use. Png is recommended.</param>
public byte[][] RenderPagesToByteArrays(float resolution, int scaleLevel, ImageFormat format)
{
byte[][] imBA = new byte[_pdfFile.Pages.Count][];
int i = 0;
foreach (var imageBytes in RenderPagesToBytes(resolution, scaleLevel, format))
{
imBA[i] = imageBytes;
i++;
}
return imBA;
}
/// <summary>
/// Returns a List holding several images of a PDF document.
/// </summary>
/// <param name="resolution"><see cref="float"/> depicting image resolution.
/// 72 or 96 is a good default.</param>
/// <param name="scaleLevel">Further scaling modifier, treated as percent.</param>
/// <param name="format"><see cref="ImageFormat"/> to use. Png is recommended.</param>
public List<byte[]> RenderPagesToByteList(float resolution, int scaleLevel, ImageFormat format)
{
var result = new List<byte[]>(PageCount);
result.AddRange(RenderPagesToBytes(resolution, scaleLevel, format));
return result;
}
/// <summary>
/// Returns a List holding several base64-encoded images of a PDF document.
/// </summary>
/// <param name="resolution"><see cref="float"/> depicting image resolution.
/// 72 or 96 is a good default.</param>
/// <param name="scaleLevel">Further scaling modifier, treated as percent.</param>
/// <param name="format"><see cref="ImageFormat"/> to use. Png is recommended.</param>
public List<string> RenderPagesToBase64List(float resolution, int scaleLevel, ImageFormat format)
{
List<string> imageList = new List<string>(PageCount);
foreach (var bytes in RenderPagesToBytes(resolution, scaleLevel, format))
{
imageList.Add(Convert.ToBase64String(bytes));
}
return imageList;
}
/// <summary>
/// Returns an IEnumerable holding several images of a PDF document.
/// </summary>
/// <param name="resolution"><see cref="float"/> depicting image resolution.
/// 72 or 96 is a good default.</param>
/// <param name="scaleLevel">Further scaling modifier, treated as percent.</param>
/// <param name="format"><see cref="ImageFormat"/> to use. Png is recommended.</param>
public IEnumerable<byte[]> RenderPagesToBytes(float resolution, int scaleLevel,
ImageFormat format)
{
foreach (var page in _pdfFile.Pages)
{
yield return RenderPage(page, resolution, scaleLevel, format);
}
}
/// <summary>
/// Returns a byte array containing an image of a single page in a PDF document.
/// </summary>
/// <param name="pageNumber">Integer defining the page number. Zero-based.</param>
/// <param name="resolution"><see cref="float"/> depicting image resolution.
/// 72 or 96 is a good default.</param>
/// <param name="scaleLevel">Further scaling modifier, treated as percent.</param>
/// <param name="format"><see cref="ImageFormat"/> to use. Png is recommended.</param>
public byte[] RenderPageToBytes(int pageNumber, float resolution,
int scaleLevel, ImageFormat format)
{
var page = _pdfFile.Pages[pageNumber];
return RenderPage(page, resolution, scaleLevel, format);
}
private byte[] RenderPage(PdfPage page, float resolution, int scaleLevel, ImageFormat format)
{
int width = (int)(page.Width * resolution / 72f);
int height = (int)(page.Height * resolution / 72f);
using (PdfBitmap bitmap = new PdfBitmap(width, height, false))
{
// Fill background
bitmap.FillRect(0, 0, width, height, Color.White);
page.Render(bitmap, 0, 0, width, height, Patagames.Pdf.Enums.PageRotate.Normal,
Patagames.Pdf.Enums.RenderFlags.FPDF_ANNOT);
Image scaled;
if (scaleLevel == 100)
{
scaled = bitmap.Image;
}
else
{
int scaledWidth = bitmap.Width * scaleLevel / 100;
int scaledHeight = bitmap.Height * scaleLevel / 100;
scaled = new Bitmap(bitmap.Image, scaledWidth, scaledHeight);
}
using (scaled)
{
using (MemoryStream ms = new MemoryStream())
{
scaled.Save(ms, format);
return ms.ToArray();
}
}
}
}
|