gpt4 book ai didi

java - 如何在 Android 上使用 PdfDocument 设置 PDF 文件大小

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:16:07 25 4
gpt4 key购买 nike

我必须在 Android 上将一些文本和小图像转换为 PDF 文档,为此我使用 API 19 中添加的 PdfDocument

问题在于,此生成的 PDF 文件大小(文件大小)大约是 iOS 上生成的文件的 3 倍。

此外,我尝试使用在线免费压缩工具压缩 Android 和 iOS PDF 文件,结果是:

  • iOS:压缩无能为力,因为已经足够压缩

  • Android:生成的 PDF 与 iOS 相同(大约小 3 倍)

即使我从文档中删除图像,生成的 Android PDF 占用的空间也比 iOS 中包含图像的 PDF 占用的空间多 2 倍(正如我所说,图像很小)。

正如我所看到的,没有方法或属性可以设置为更改 PDF 文件的质量或压缩。有人也有这个问题吗?

你能给我一些建议吗?也许一些 java 库只能压缩 pdf?

谢谢!

PS:我不想为 PDF 使用付费库,我知道有 iText 库,但我想使用原生库。

更新

Here您会找到两个 PDF 示例,一个用于 Android,一个用于 iOS。

在android中生成pdf的代码是:

// Create a shiny new (but blank) PDF document in memory
PdfDocument document = new PdfDocument();

// crate a page description
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(612, 792, 1).create();

// create a new page from the PageInfo
PdfDocument.Page page = document.startPage(pageInfo);

TextPaint textPaint = new TextPaint();
textPaint.setColor(Color.BLACK);
textPaint.setTextSize(12);
textPaint.setTextAlign(Paint.Align.LEFT);

Typeface textTypeface = Typeface.create(Typeface.MONOSPACE, Typeface.NORMAL);
textPaint.setTypeface(textTypeface);

String text = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Typi non habent claritatem insitam; est usus legentis in iis qui facit eorum claritatem. Investigationes demonstraverunt lectores legere me lius quod ii legunt saepius. Claritas est etiam processus dynamicus, qui sequitur mutationem consuetudium lectorum. Mirum est notare quam littera gothica, quam nunc putamus parum claram, anteposuerit litterarum formas humanitatis per seacula quarta decima et quinta decima. Eodem modo typi, qui nunc nobis videntur parum clari, fiant sollemnes in futurum.";

StaticLayout mTextLayout = new StaticLayout(text, textPaint, page.getCanvas().getWidth(),
Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);

mTextLayout.draw(page.getCanvas());

// do final processing of the page
document.finishPage(page);

mPDFFilePath = new File(getFilesDir(), "demo_android.pdf");

try
{
FileOutputStream mFileOutStream = new FileOutputStream(mPDFFilePath);

// write the document content
document.writeTo(mFileOutStream);
mFileOutStream.flush();
mFileOutStream.close();

}
catch(Exception e)
{
Log.v("log_tag", e.toString());
}

//close the document
document.close();

再次感谢!

最佳答案

好的,直到有人找到或提供更好的解决方案,我才找到 this不幸的是,这个库似乎比 Android API(目前)做得更好。

该库可能不支持太复杂的绘图,但可以满足我的需要。它还压缩了 pdf,现在我似乎可以将它与 iOS 进行比较,并说它比它小。

关于java - 如何在 Android 上使用 PdfDocument 设置 PDF 文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27941522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com