什么使 Pdf 文件成为 Pdf 文件?
Posted
技术标签:
【中文标题】什么使 Pdf 文件成为 Pdf 文件?【英文标题】:What Makes a Pdf file a Pdf file? 【发布时间】:2022-01-19 16:14:24 【问题描述】:我想知道我们是否可以仅使用编码将文件类型从 png、jpeg 更改为 pdf。 因此,为了做到这一点,我首先必须弄清楚 pdf 文件与其他文件的不同之处。
【问题讨论】:
您打算使用什么语言?有一个使用c#
中的库将图像转换为 pdf 的示例,这可能很有用。 ***.com/a/36053104/8678978
实际上,我正在android studio中使用java进行尝试,并且还想知道pdf文件一般是如何制作的? @chrisbyte
PDF 文件是二进制文件。它具有特定的结构,其中的对象通过 a.map 标识到字节偏移量。获取规范副本并阅读。
要了解一般来说如何制作 pdf 文件,请考虑查看规范。
【参考方案1】:
您可以通过添加页眉和尾声将 image.PDF 文件编写为纯文本,所以这里是一个简单的单色图像,如简单的 f 和 0 所示。注意彩色图像会更加多样化。所以每个黑色像素是000000
,每个白色像素是FFFFFF
%PDF-1.7
%µ¶
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Count 1
/Kids [ 5 0 R ]
>>
endobj
3 0 obj
<<
/Length 2683981
/Type /XObject
/Subtype /Image
/Width 744
/Height 592
/BitsPerComponent 8
/ColorSpace /DeviceRGB
/Filter /ASCIIHexDecode
>>
stream
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
....
Dozens of lines later
ffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff
ffffffffffffffffffffffffffffff000000000000000000000000ffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000
....
Thousands of lines later
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
>
endstream
endobj
4 0 obj
<<
/Length 43
>>
stream
q
557.93026 0 0 443.9445 0 0 cm
/Img3 Do
Q
endstream
endobj
5 0 obj
<<
/Type /Page
/MediaBox [ 0 0 557.93026 443.9445 ]
/Rotate 0
/Resources <<
/XObject <<
/Img3 3 0 R
>>
>>
/Contents 4 0 R
/Parent 2 0 R
>>
endobj
xref
0 6
0000000000 65536 f
0000000016 00000 n
0000000070 00000 n
0000000136 00000 n
0002684310 00000 n
0002684406 00000 n
trailer
<<
/Size 6
/Info <<
/Producer (SumatraPDF 3.4.14236)
>>
/Root 1 0 R
>>
startxref
2684589
%%EOF
这对于发布来说会非常臃肿,因此更通常导入源crisp.PNG 或fuzzy.peg 和zip 样式“DeFlated”(“FlateDecode”重新加密为二进制)
SumatraPDF 生成的源 PDF 仅为 23082 字节,如下所示,但对于这个问题,它被故意扩展以显示内部工作原理,但是图像可以被任何 PDF 库压缩回二进制文件
3 0 obj
<</DecodeParms<<>>/Type/XObject/Subtype/Image/Width 744/Height 592/BitsPerComponent 8/ColorSpace/DeviceRGB/Length 23082/Filter/FlateDecode>>
stream
xœíÙ–Ûº®Eóÿ?íûpƨëm‰àBÃNšó)±ÑAX®T>..............
注意图像一旦放入 PDF 中就没有 PNG 标识或 DPI (PDF 不可逆)
【讨论】:
以上是关于什么使 Pdf 文件成为 Pdf 文件?的主要内容,如果未能解决你的问题,请参考以下文章