Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
fpdf_thumbnail_embeddertest.cpp
Go to the documentation of this file.
1// Copyright 2019 The PDFium Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include <vector>
6
7#include "public/fpdf_thumbnail.h"
8#include "public/fpdfview.h"
9#include "testing/embedder_test.h"
10#include "testing/utils/hash.h"
11
12namespace {
13
14const char kSimpleThumbnailChecksum[] = "f6a8e8db01cccd52abb91ea433a17373";
15const char kThumbnailWithNoFiltersChecksum[] =
16 "b5696e586382b3373741f8a1d651cab0";
17
18} // namespace
19
21
23 ASSERT_TRUE(OpenDocument("simple_thumbnail.pdf"));
24
25 {
26 const char kHashedDecodedData[] = "7902d0be831c9024960f4ebd5d7df1f7";
27 const unsigned long kExpectedSize = 1138u;
28
29 FPDF_PAGE page = LoadPage(0);
30 ASSERT_TRUE(page);
31
32 unsigned long length_bytes =
34 ASSERT_EQ(kExpectedSize, length_bytes);
35 std::vector<uint8_t> thumb_buf(length_bytes);
36
37 EXPECT_EQ(kExpectedSize, FPDFPage_GetDecodedThumbnailData(
38 page, thumb_buf.data(), length_bytes));
39 EXPECT_EQ(kHashedDecodedData, GenerateMD5Base16(thumb_buf));
40
41 UnloadPage(page);
42 }
43
44 {
45 const char kHashedDecodedData[] = "e81123a573378ba1ea80461d25cc41f6";
46 const unsigned long kExpectedSize = 1110u;
47
48 FPDF_PAGE page = LoadPage(1);
49 ASSERT_TRUE(page);
50
51 unsigned long length_bytes =
53 ASSERT_EQ(kExpectedSize, length_bytes);
54 std::vector<uint8_t> thumb_buf(length_bytes);
55
56 EXPECT_EQ(kExpectedSize, FPDFPage_GetDecodedThumbnailData(
57 page, thumb_buf.data(), length_bytes));
58 EXPECT_EQ(kHashedDecodedData, GenerateMD5Base16(thumb_buf));
59
60 UnloadPage(page);
61 }
62}
63
66 ASSERT_TRUE(OpenDocument("thumbnail_with_no_filters.pdf"));
67
68 const unsigned long kExpectedSize = 301u;
69
70 FPDF_PAGE page = LoadPage(0);
71 ASSERT_TRUE(page);
72
73 unsigned long length_bytes =
75 ASSERT_EQ(kExpectedSize, length_bytes);
76 std::vector<uint8_t> thumb_buf(length_bytes);
77
78 EXPECT_EQ(kExpectedSize, FPDFPage_GetDecodedThumbnailData(
79 page, thumb_buf.data(), length_bytes));
80 EXPECT_EQ(kThumbnailWithNoFiltersChecksum, GenerateMD5Base16(thumb_buf));
81
82 UnloadPage(page);
83}
84
87 ASSERT_TRUE(OpenDocument("hello_world.pdf"));
88
89 FPDF_PAGE page = LoadPage(0);
90 ASSERT_TRUE(page);
91
92 EXPECT_EQ(0u, FPDFPage_GetDecodedThumbnailData(page, nullptr, 0));
93
94 UnloadPage(page);
95}
96
100
102 ASSERT_TRUE(OpenDocument("simple_thumbnail.pdf"));
103
104 {
105 const unsigned long kExpectedSize = 1851u;
106
107 FPDF_PAGE page = LoadPage(0);
108 ASSERT_TRUE(page);
109
110 unsigned long length_bytes = FPDFPage_GetRawThumbnailData(page, nullptr, 0);
111 ASSERT_EQ(kExpectedSize, length_bytes);
112 std::vector<uint8_t> thumb_buf(length_bytes);
113
114 EXPECT_EQ(kExpectedSize, FPDFPage_GetRawThumbnailData(
115 page, thumb_buf.data(), length_bytes));
116 EXPECT_EQ(kSimpleThumbnailChecksum, GenerateMD5Base16(thumb_buf));
117
118 UnloadPage(page);
119 }
120
121 {
122 const char kHashedRawData[] = "c7558a461d5ecfb1d4757218b473afc0";
123 const unsigned long kExpectedSize = 1792u;
124
125 FPDF_PAGE page = LoadPage(1);
126 ASSERT_TRUE(page);
127
128 unsigned long length_bytes = FPDFPage_GetRawThumbnailData(page, nullptr, 0);
129 ASSERT_EQ(kExpectedSize, length_bytes);
130 std::vector<uint8_t> thumb_buf(length_bytes);
131
132 EXPECT_EQ(kExpectedSize, FPDFPage_GetRawThumbnailData(
133 page, thumb_buf.data(), length_bytes));
134 EXPECT_EQ(kHashedRawData, GenerateMD5Base16(thumb_buf));
135
136 UnloadPage(page);
137 }
138}
139
141 ASSERT_TRUE(OpenDocument("thumbnail_with_no_filters.pdf"));
142
143 const unsigned long kExpectedSize = 301u;
144
145 FPDF_PAGE page = LoadPage(0);
146 ASSERT_TRUE(page);
147
148 unsigned long length_bytes = FPDFPage_GetRawThumbnailData(page, nullptr, 0);
149 ASSERT_EQ(kExpectedSize, length_bytes);
150 std::vector<uint8_t> thumb_buf(length_bytes);
151
152 EXPECT_EQ(kExpectedSize,
153 FPDFPage_GetRawThumbnailData(page, thumb_buf.data(), length_bytes));
154 EXPECT_EQ(kThumbnailWithNoFiltersChecksum, GenerateMD5Base16(thumb_buf));
155
156 UnloadPage(page);
157}
158
160 ASSERT_TRUE(OpenDocument("hello_world.pdf"));
161
162 FPDF_PAGE page = LoadPage(0);
163 ASSERT_TRUE(page);
164
165 EXPECT_EQ(0u, FPDFPage_GetRawThumbnailData(page, nullptr, 0));
166
167 UnloadPage(page);
168}
169
173
175 ASSERT_TRUE(OpenDocument("simple_thumbnail.pdf"));
176
177 {
178 FPDF_PAGE page = LoadPage(0);
179 ASSERT_TRUE(page);
180
181 ScopedFPDFBitmap thumb_bitmap(FPDFPage_GetThumbnailAsBitmap(page));
182
183 EXPECT_EQ(50, FPDFBitmap_GetWidth(thumb_bitmap.get()));
184 EXPECT_EQ(50, FPDFBitmap_GetHeight(thumb_bitmap.get()));
185 EXPECT_EQ(FPDFBitmap_BGR, FPDFBitmap_GetFormat(thumb_bitmap.get()));
186 CompareBitmap(thumb_bitmap.get(), 50, 50,
187 "52b75451e396f55e95d1cb68e6018226");
188
189 UnloadPage(page);
190 }
191
192 {
193 FPDF_PAGE page = LoadPage(1);
194 ASSERT_TRUE(page);
195
196 ScopedFPDFBitmap thumb_bitmap(FPDFPage_GetThumbnailAsBitmap(page));
197
198 EXPECT_EQ(50, FPDFBitmap_GetWidth(thumb_bitmap.get()));
199 EXPECT_EQ(50, FPDFBitmap_GetHeight(thumb_bitmap.get()));
200 EXPECT_EQ(FPDFBitmap_BGR, FPDFBitmap_GetFormat(thumb_bitmap.get()));
201 CompareBitmap(thumb_bitmap.get(), 50, 50,
202 "1f448be08c6e6043ccd0bad8ecc2a351");
203
204 UnloadPage(page);
205 }
206}
207
210 ASSERT_TRUE(OpenDocument("hello_world.pdf"));
211
212 FPDF_PAGE page = LoadPage(0);
213 ASSERT_TRUE(page);
214
215 ScopedFPDFBitmap thumb_bitmap(FPDFPage_GetThumbnailAsBitmap(page));
216 ASSERT_EQ(nullptr, thumb_bitmap.get());
217
218 UnloadPage(page);
219}
220
223 ASSERT_TRUE(OpenDocument("thumbnail_with_empty_stream.pdf"));
224
225 FPDF_PAGE page = LoadPage(0);
226 ASSERT_TRUE(page);
227
228 ScopedFPDFBitmap thumb_bitmap(FPDFPage_GetThumbnailAsBitmap(page));
229 ASSERT_EQ(nullptr, thumb_bitmap.get());
230
231 UnloadPage(page);
232}
233
236 ASSERT_TRUE(OpenDocument("thumbnail_with_no_filters.pdf"));
237
238 FPDF_PAGE page = LoadPage(0);
239 ASSERT_TRUE(page);
240
241 ScopedFPDFBitmap thumb_bitmap(FPDFPage_GetThumbnailAsBitmap(page));
242
243 EXPECT_EQ(10, FPDFBitmap_GetWidth(thumb_bitmap.get()));
244 EXPECT_EQ(10, FPDFBitmap_GetHeight(thumb_bitmap.get()));
245 EXPECT_EQ(FPDFBitmap_BGR, FPDFBitmap_GetFormat(thumb_bitmap.get()));
246 CompareBitmap(thumb_bitmap.get(), 10, 10, "fe02583f9e6d094042a942ff686e9936");
247
248 UnloadPage(page);
249}
250
252 ASSERT_TRUE(OpenDocument("simple_thumbnail.pdf"));
253
254 const unsigned long kExpectedRawSize = 1851u;
255
256 FPDF_PAGE page = LoadPage(0);
257 ASSERT_TRUE(page);
258
259 // Get the raw data
260 unsigned long raw_size = FPDFPage_GetRawThumbnailData(page, nullptr, 0);
261 ASSERT_EQ(kExpectedRawSize, raw_size);
262 std::vector<uint8_t> raw_thumb_buf(raw_size);
263
264 EXPECT_EQ(kExpectedRawSize,
265 FPDFPage_GetRawThumbnailData(page, raw_thumb_buf.data(), raw_size));
266 EXPECT_EQ(kSimpleThumbnailChecksum, GenerateMD5Base16(raw_thumb_buf));
267
268 // Get the thumbnail
269 ScopedFPDFBitmap thumb_bitmap(FPDFPage_GetThumbnailAsBitmap(page));
270
271 EXPECT_EQ(50, FPDFBitmap_GetWidth(thumb_bitmap.get()));
272 EXPECT_EQ(50, FPDFBitmap_GetHeight(thumb_bitmap.get()));
273 EXPECT_EQ(FPDFBitmap_BGR, FPDFBitmap_GetFormat(thumb_bitmap.get()));
274 CompareBitmap(thumb_bitmap.get(), 50, 50, "52b75451e396f55e95d1cb68e6018226");
275
276 // Get the raw data again
277 unsigned long new_raw_size = FPDFPage_GetRawThumbnailData(page, nullptr, 0);
278 ASSERT_EQ(kExpectedRawSize, new_raw_size);
279 std::vector<uint8_t> new_raw_thumb_buf(new_raw_size);
280
281 EXPECT_EQ(kExpectedRawSize,
282 FPDFPage_GetRawThumbnailData(page, new_raw_thumb_buf.data(),
283 new_raw_size));
284 EXPECT_EQ(kSimpleThumbnailChecksum, GenerateMD5Base16(new_raw_thumb_buf));
285
286 UnloadPage(page);
287}
288
FPDF_EXPORT unsigned long FPDF_CALLCONV FPDFPage_GetRawThumbnailData(FPDF_PAGE page, void *buffer, unsigned long buflen)
FPDF_EXPORT unsigned long FPDF_CALLCONV FPDFPage_GetDecodedThumbnailData(FPDF_PAGE page, void *buffer, unsigned long buflen)
FPDF_EXPORT FPDF_BITMAP FPDF_CALLCONV FPDFPage_GetThumbnailAsBitmap(FPDF_PAGE page)
TEST_F(FPDFThumbnailEmbedderTest, GetDecodedThumbnailDataFromPageWithFilters)
#define FPDFBitmap_BGR
Definition fpdfview.h:1100