mirror of
https://github.com/UglyToad/PdfPig.git
synced 2025-09-19 19:07:56 +08:00
fix width and height order in jpeg parsing
height is before width, incorrect order caused adobe reader to draw image strangely.
This commit is contained in:
@@ -399,7 +399,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void CanWriteSinglePageWithJpg()
|
public void CanWriteSinglePageWithJpeg()
|
||||||
{
|
{
|
||||||
var builder = new PdfDocumentBuilder();
|
var builder = new PdfDocumentBuilder();
|
||||||
var page = builder.AddPage(PageSize.A4);
|
var page = builder.AddPage(PageSize.A4);
|
||||||
@@ -417,7 +417,7 @@
|
|||||||
page.AddJpeg(imageBytes, expectedBounds);
|
page.AddJpeg(imageBytes, expectedBounds);
|
||||||
|
|
||||||
var bytes = builder.Build();
|
var bytes = builder.Build();
|
||||||
WriteFile(nameof(CanWriteSinglePageWithJpg), bytes);
|
WriteFile(nameof(CanWriteSinglePageWithJpeg), bytes);
|
||||||
|
|
||||||
using (var document = PdfDocument.Open(bytes))
|
using (var document = PdfDocument.Open(bytes))
|
||||||
{
|
{
|
||||||
|
@@ -278,6 +278,9 @@
|
|||||||
public static readonly NameToken If = new NameToken("IF");
|
public static readonly NameToken If = new NameToken("IF");
|
||||||
public static readonly NameToken Im = new NameToken("IM");
|
public static readonly NameToken Im = new NameToken("IM");
|
||||||
public static readonly NameToken Image = new NameToken("Image");
|
public static readonly NameToken Image = new NameToken("Image");
|
||||||
|
public static readonly NameToken ImageB = new NameToken("ImageB");
|
||||||
|
public static readonly NameToken ImageC = new NameToken("ImageC");
|
||||||
|
public static readonly NameToken ImageI = new NameToken("ImageI");
|
||||||
public static readonly NameToken ImageMask = new NameToken("ImageMask");
|
public static readonly NameToken ImageMask = new NameToken("ImageMask");
|
||||||
public static readonly NameToken Index = new NameToken("Index");
|
public static readonly NameToken Index = new NameToken("Index");
|
||||||
public static readonly NameToken Indexed = new NameToken("Indexed");
|
public static readonly NameToken Indexed = new NameToken("Indexed");
|
||||||
|
@@ -33,8 +33,8 @@
|
|||||||
// ReSharper disable once UnusedVariable
|
// ReSharper disable once UnusedVariable
|
||||||
var length = ReadShort(stream, shortBuffer);
|
var length = ReadShort(stream, shortBuffer);
|
||||||
var bpp = stream.ReadByte();
|
var bpp = stream.ReadByte();
|
||||||
var width = ReadShort(stream, shortBuffer);
|
|
||||||
var height = ReadShort(stream, shortBuffer);
|
var height = ReadShort(stream, shortBuffer);
|
||||||
|
var width = ReadShort(stream, shortBuffer);
|
||||||
|
|
||||||
return new JpegInformation(width, height, bpp);
|
return new JpegInformation(width, height, bpp);
|
||||||
}
|
}
|
||||||
|
@@ -142,6 +142,8 @@
|
|||||||
var operations = pageContentParser.Parse(pageNumber, new ByteArrayInputBytes(contentBytes),
|
var operations = pageContentParser.Parse(pageNumber, new ByteArrayInputBytes(contentBytes),
|
||||||
log);
|
log);
|
||||||
|
|
||||||
|
var text = OtherEncodings.BytesAsLatin1String(contentBytes);
|
||||||
|
|
||||||
var context = new ContentStreamProcessor(cropBox.Bounds, resourceStore, userSpaceUnit, rotation, pdfScanner,
|
var context = new ContentStreamProcessor(cropBox.Bounds, resourceStore, userSpaceUnit, rotation, pdfScanner,
|
||||||
pageContentParser,
|
pageContentParser,
|
||||||
filterProvider,
|
filterProvider,
|
||||||
|
@@ -247,9 +247,18 @@
|
|||||||
context.WriteObject(memory, streamToken, image.Value.ObjectNumber);
|
context.WriteObject(memory, streamToken, image.Value.ObjectNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var procSet = new List<NameToken>
|
||||||
|
{
|
||||||
|
NameToken.Create("PDF"),
|
||||||
|
NameToken.Text,
|
||||||
|
NameToken.ImageB,
|
||||||
|
NameToken.ImageC,
|
||||||
|
NameToken.ImageI
|
||||||
|
};
|
||||||
|
|
||||||
var resources = new Dictionary<NameToken, IToken>
|
var resources = new Dictionary<NameToken, IToken>
|
||||||
{
|
{
|
||||||
{ NameToken.ProcSet, new ArrayToken(new []{ NameToken.Create("PDF"), NameToken.Create("Text") }) }
|
{ NameToken.ProcSet, new ArrayToken(procSet) }
|
||||||
};
|
};
|
||||||
|
|
||||||
if (fontsWritten.Count > 0)
|
if (fontsWritten.Count > 0)
|
||||||
|
Reference in New Issue
Block a user