Преобразование изображения в PDF в Android

Мне нужно отправить изображение в виде файла PDF в моем приложении для Android, но у меня нет идеи, как преобразовать bitmap в PDF.

Я могу писать pdf только с текстом.

Есть ли решение?

Я думаю, вы используете iText Library для преобразования текста в pdf. Используйте это, чтобы преобразовать изображение в pdf.

import java.io.*; import com.lowagie.text.*; import com.lowagie.text.pdf.*; public class imagesPDF { public static void main(String arg[])throws Exception { Document document=new Document(); PdfWriter.getInstance(document,new FileOutputStream("YourPDFHere.pdf")); document.open(); Image image = Image.getInstance ("yourImageHere.jpg"); document.add(new Paragraph("Your Heading for the Image Goes Here")); document.add(image); document.close(); } } 

Загрузите исходный код отсюда ( конвертируйте изображение в pdf в андроидную программу )

MainActivity.java

 package com.deepshikha.convertbitmap; import android.Manifest; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.pdf.PdfDocument; import android.net.Uri; import android.provider.MediaStore; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.DisplayMetrics; import android.util.Log; import android.view.Display; import android.view.View; import android.view.WindowManager; import android.widget.Button; import android.widget.ImageView; import android.widget.Toast; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; public class MainActivity extends AppCompatActivity implements View.OnClickListener { public static final int GALLERY_PICTURE = 1; Button btn_select, btn_convert; ImageView iv_image; boolean boolean_permission; boolean boolean_save; Bitmap bitmap; public static final int REQUEST_PERMISSIONS = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); listener(); fn_permission(); } private void init() { btn_select = (Button) findViewById(R.id.btn_select); btn_convert = (Button) findViewById(R.id.btn_convert); iv_image = (ImageView) findViewById(R.id.iv_image); } private void listener() { btn_select.setOnClickListener(this); btn_convert.setOnClickListener(this); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.btn_select: Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(intent, GALLERY_PICTURE); break; case R.id.btn_convert: if (boolean_save){ Intent intent1=new Intent(getApplicationContext(),PDFViewActivity.class); startActivity(intent1); }else { createPdf(); } break; } } private void createPdf(){ WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay(); DisplayMetrics displaymetrics = new DisplayMetrics(); this.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); float hight = displaymetrics.heightPixels ; float width = displaymetrics.widthPixels ; int convertHighet = (int) hight, convertWidth = (int) width; // Resources mResources = getResources(); // Bitmap bitmap = BitmapFactory.decodeResource(mResources, R.drawable.screenshot); PdfDocument document = new PdfDocument(); PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(bitmap.getWidth(), bitmap.getHeight(), 1).create(); PdfDocument.Page page = document.startPage(pageInfo); Canvas canvas = page.getCanvas(); Paint paint = new Paint(); paint.setColor(Color.parseColor("#ffffff")); canvas.drawPaint(paint); bitmap = Bitmap.createScaledBitmap(bitmap, bitmap.getWidth(), bitmap.getHeight(), true); paint.setColor(Color.BLUE); canvas.drawBitmap(bitmap, 0, 0 , null); document.finishPage(page); // write the document content String targetPdf = "/sdcard/test.pdf"; File filePath = new File(targetPdf); try { document.writeTo(new FileOutputStream(filePath)); btn_convert.setText("Check PDF"); boolean_save=true; } catch (IOException e) { e.printStackTrace(); Toast.makeText(this, "Something wrong: " + e.toString(), Toast.LENGTH_LONG).show(); } // close the document document.close(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == GALLERY_PICTURE && resultCode == RESULT_OK) { if (resultCode == RESULT_OK) { Uri selectedImage = data.getData(); String[] filePathColumn = {MediaStore.Images.Media.DATA}; Cursor cursor = getContentResolver().query( selectedImage, filePathColumn, null, null, null); cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); String filePath = cursor.getString(columnIndex); cursor.close(); bitmap = BitmapFactory.decodeFile(filePath); iv_image.setImageBitmap(bitmap); btn_convert.setClickable(true); } } } private void fn_permission() { if ((ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)|| (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)) { if ((ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, android.Manifest.permission.READ_EXTERNAL_STORAGE))) { } else { ActivityCompat.requestPermissions(MainActivity.this, new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_PERMISSIONS); } if ((ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE))) { } else { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_PERMISSIONS); } } else { boolean_permission = true; } } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == REQUEST_PERMISSIONS) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { boolean_permission = true; } else { Toast.makeText(getApplicationContext(), "Please allow the permission", Toast.LENGTH_LONG).show(); } } } } 

Благодаря!

  • Удалить будильник из AlarmManager с помощью функции cancel () - Android
  • Android UI Design: поддержка нескольких экранов
  • Изменение источника ImageView
  • setRotation (90) для съемки в портретном режиме не работает на устройствах samsung
  • Разница между контекстом работы и контекстом приложения
  • Окно оверлей системы Android
  • как использовать getSharedPreferences в android
  • Доступ к заголовкам ответов HTTP в WebView?
  • Как я могу получить список смонтированного внешнего хранилища Android-устройства
  • Макет дизайна для нескольких экранов
  • Получение ошибки: не удалось найти class 'android.app.AppOpsManager', на который ссылается метод com.google.android.gms.common.GooglePlayServicesUtil.zza
  • Interesting Posts

    Общие настройки сбрасывают данные, когда приложение принудительно закрывается или устройство перезапускается

    Общее решение Ruby для SQLite3 «LIKE» или PostgreSQL «ИЛИКЕ»?

    Мне нужно восстановить раздел после неудачной попытки изменения размера

    Зашифрованы ли URL HTTPS?

    Возможно ли теперь сборка сетевого программного обеспечения Windows 10?

    Как я могу разархивировать .tar.gz за один шаг (используя 7-Zip)?

    Загрузка HTML-файла в WebView

    Клиент WinSCP для Ubuntu

    Развертывание петли для достижения максимальной пропускной способности с помощью Ivy Bridge и Haswell

    Как выполнить двойную загрузку, когда Windows XP была установлена ​​после Windows 7?

    удалить несколько элементов в пользовательском listview

    Лучшая практика настройки местоположений JFrame

    Реализация алгоритма Хой Шамоса с помощью C #

    Синхронизировать локальные и удаленные каталоги с помощью rsync?

    В Vim, как эффективно вставлять одни и те же символы в несколько строк?

    Давайте будем гением компьютера.