java - 是什么使 Pdf 文件成为 Pdf 文件?

标签 java android-studio pdf adobe

我想知道我们是否可以仅使用编码将文件类型从 png、jpeg 更改为 pdf。 因此,为了做到这一点,我首先必须弄清楚 pdf 文件与其他文件的不同之处。

最佳答案

您可以通过添加页眉和预告片将 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

这对于发布来说会非常臃肿,因此通常会导入源 scrap.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 不可逆)

关于java - 是什么使 Pdf 文件成为 Pdf 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70381266/

相关文章:

java - 滑动查看图像阵列中的下一张图片

java - 正则表达式在方法 replaceAll() 中不起作用 - Android

android - Android Studio Gradle错误

带有 Unicode 字符的 PDF 表单

excel - 优化 VBA Excel 打印 - 创建 PDF?

java - 如何将 2 个或多个值放入 ArrayList<NameValuePair>

java - 从文件读取到列表

android-studio - Dart 。理念。如何防止格式合并为单行

gradle - Android Studio 今天更新并回归

pdf - 为什么 varnum 停止 sas 中的 proc 内容?