簡體   English   中英

如何在Android上使用PdfDocument設置PDF文件大小

[英]How to set PDF file size using PdfDocument on Android

我必須在Android上將一些文本和一個小圖像轉換為PDF文檔,為此我使用API​​ 19中添加的PdfDocument

與此相關的是,由此生成的PDF大約是在iOS上生成的PDF的3倍(文件大小)。

此外,我嘗試使用在線免費壓縮工具壓縮Android和iOS PDF文件,結果如下:

  • iOS :壓縮無法做任何事情因為已經足夠壓縮了

  • Android :結果PDF與iOS版相同(約小3倍)

即使我從文檔中刪除了圖像,生成的Android PDF也比iOS中包含圖像的PDF大約多2倍的空間(正如我所說,圖像很小)。

正如我所看到的,沒有方法或屬性可以設置來改變PDF文件的質量或壓縮..有沒有人也有這個問題?

你能給我一些建議嗎? 也許一些可以壓縮pdf的java庫?

謝謝!

PS:我不想為PDF使用付費庫,我知道有iText庫,但我想使用原生庫。

UPDATE

在這里,您可以找到兩個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();

再次感謝!

好的,直到有人找到或找到更好的解決方案,我發現這個庫似乎比Android API(目前)更好地工作。

圖書館可能不支持太復雜的圖紙,但它可以滿足我的需要。 它也壓縮了pdf,似乎現在我可以將它與iOS進行比較並說它比它小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM