Проблема с печатью веб-страницы в ОС Android с помощью браузера Google ChromeAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Проблема с печатью веб-страницы в ОС Android с помощью браузера Google Chrome

Сообщение Anonymous »

На мою страницу кодирования Vue.js 3 я импортирую эту страницу:

Код: Выделить всё

import { PrintReport } from "@/views/app/Anbar/Input/print.js";
затем, используя вычисляемое свойство, когда я получу данные из хранилища, выполните его:

Код: Выделить всё

const print_data = computed(() => {
if (store.state.tradeModule.anbar_print) {
if (store.state.tradeModule.anbar_print.master) {
if (store.state.tradeModule.anbar_print.master[0]) {
PrintReport(store.state.tradeModule.anbar_print);
}
}
}
return store.state.tradeModule.anbar_print;
});
Это код, который получает данные из хранилища и создает html-страницу, а с помощью js добавляет пустую страницу в браузер и показывает форму, готовую для печати:

Код: Выделить всё

import PersianDate        from "persian-date";
import { PrintCss }       from "@/composables/PrintReport.js";
import { setNumber }      from "@/components/base/mixins.js";
import { htmlContent }    from "@/views/app/Anbar/Input/print_html.js";

export const PrintReport = (data) => {
const date = new Date();
const jalal = new PersianDate();
const url = new URL(location.origin + '/printable.html');
const win = window.open(url);
const title = "نمایش و چاپ ورودی انبار"

let matn = data.master[0].Matn
if(data.master[0].Matn===null || data.master[0].Matn===undefined || data.master[0].Matn.length===0){
matn = data.master[0].TypeHamlName
} else {
matn = data.master[0].TypeHamlName + ' | ' + data.master[0].Matn
}

let htmlFileText = String(htmlContent)
.replace(/@PreFactor.Company/g, data.master[0].TypeName)
.replace(/@PreFactor.PrintHeader/g, data.master[0].EventName)
.replace(/@PeopleName/g, data.master[0].PeopleUserName)
.replace(/@value_PrintDate/g, jalal.rangeName().weekdays[jalal.State.persianAstro.weekday-1]+':'+jalal.year()+'/'+jalal.month()+'/'+jalal.date() +" ("+date.getHours()+':'+date.getMinutes()+")")
.replace(/@ErsaliAz/g, data.master[0].PeopleName)
.replace(/@Daryafi/g, data.master[0].AnbarListName)
.replace(/@DateAnbar/g, data.master[0].DateAnbar)
.replace(/@Serial/g, data.master[0].Id)
.replace(/@value_matn_master/g, matn)
.replace(/@report_rows/g, print_data(data.list))

win.document.write(`


${title}
${PrintCss}



${htmlFileText}



`);
}
const print_data = (mores) => {
let result = ""
mores.forEach((dr, index) => {
result +=`

[b]${index+1}[/b]


[b]${dr.KalaName}[/b]


[b]${setNumber(dr.inPut)}[/b]


[b]${dr.StateName}[/b]


[b]${dr.TypePackageName }[/b]


[b]${setNumber(dr.PackageCount)}[/b]

`
if (dr.Matn && dr.Matn.length>0){
result +=`

${dr.Matn}

`
}
})
return result
}
Открывается новая вкладка, присутствуют только данные в формате HTML, а печать выполняется без проблем в браузере, на рабочем столе или на компьютере.
* * htmlContent — это строка в чистом формате HTML, которая форматирует окончательную работу.
Проблема:
при использовании #Android OS и # google_chrome, я открываю ту же страницу и нажимаю значок печати, открывается новая страница, а затем я пытаюсь печатать с помощью обычных приложений для печати, таких как NokoPrint, PrinterSharen, но это невозможно.
Точка:
Я могу печатать родительская страница, но не всплывающая страница, разница, которую я заметил, заключается в том, что родительская страница имеет действительный URL-адрес, но страница печати имеет URL-адрес «about:blank», и, как я обнаружил, приложения пытаются загрузить страницу по своему внутренний браузер и не получают контент с текущей страницы, поэтому они могут распечатать.
Даже я пытался загрузить веб-сайт внутри NokoPrint, но всплывающая страница игнорируется или блокируется.
Вы практиковали такую ​​ситуацию?
Есть ли у вас подобный опыт?
Как отправить распечатку на Android+chrome, можете помочь?

Подробнее здесь: https://stackoverflow.com/questions/792 ... me-browser
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»