Rework/expose format conversions
This commit is contained in:
parent
28bb06d18e
commit
09fbb96a7e
12 changed files with 410 additions and 105 deletions
|
@ -4,6 +4,9 @@ import "../pages/utils.js" as Utils
|
||||||
|
|
||||||
Setting {
|
Setting {
|
||||||
property var choices
|
property var choices
|
||||||
|
property string mime_type
|
||||||
|
|
||||||
|
property var limited_choices: Utils.limitChoices(name, choices, mime_type)
|
||||||
|
|
||||||
ValueButton {
|
ValueButton {
|
||||||
enabled: valid
|
enabled: valid
|
||||||
|
@ -17,12 +20,12 @@ Setting {
|
||||||
id: menu
|
id: menu
|
||||||
enabled: valid
|
enabled: valid
|
||||||
Repeater {
|
Repeater {
|
||||||
model: choices
|
model: limited_choices
|
||||||
MenuItem {
|
MenuItem {
|
||||||
text: Utils.ippName(name, choices[index])
|
text: Utils.ippName(name, limited_choices[index])
|
||||||
onClicked:
|
onClicked:
|
||||||
{
|
{
|
||||||
choice = choices[index];
|
choice = limited_choices[index];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import Sailfish.Silica 1.0
|
import Sailfish.Silica 1.0
|
||||||
|
import seaprint.mimer 1.0
|
||||||
import "utils.js" as Utils
|
import "utils.js" as Utils
|
||||||
import Nemo.Configuration 1.0
|
import Nemo.Configuration 1.0
|
||||||
|
|
||||||
|
@ -47,6 +48,7 @@ Page {
|
||||||
// ListElement {name: "orientation-requested"; prettyName: qsTr("Orientation"); tag: 0x23}
|
// ListElement {name: "orientation-requested"; prettyName: qsTr("Orientation"); tag: 0x23}
|
||||||
ListElement {name: "print-quality"; prettyName: qsTr("Quality"); tag: 0x23}
|
ListElement {name: "print-quality"; prettyName: qsTr("Quality"); tag: 0x23}
|
||||||
ListElement {name: "printer-resolution"; prettyName: qsTr("Resolution"); tag: 0x32}
|
ListElement {name: "printer-resolution"; prettyName: qsTr("Resolution"); tag: 0x32}
|
||||||
|
ListElement {name: "document-format"; prettyName: qsTr("Transfer format"); tag: 0x49}
|
||||||
}
|
}
|
||||||
|
|
||||||
SilicaListView {
|
SilicaListView {
|
||||||
|
@ -100,13 +102,15 @@ Page {
|
||||||
case 0x32:
|
case 0x32:
|
||||||
case 0x23:
|
case 0x23:
|
||||||
case 0x44:
|
case 0x44:
|
||||||
|
case 0x49:
|
||||||
loader.setSource("../components/ChoiceSetting.qml",
|
loader.setSource("../components/ChoiceSetting.qml",
|
||||||
{name: name,
|
{name: name,
|
||||||
prettyName: prettyName,
|
prettyName: prettyName,
|
||||||
tag: tag,
|
tag: tag,
|
||||||
valid: printer.attrs.hasOwnProperty(name+"-supported"),
|
valid: printer.attrs.hasOwnProperty(name+"-supported"),
|
||||||
choices: printer.attrs[name+"-supported"].value,
|
choices: printer.attrs[name+"-supported"].value,
|
||||||
default_choice: printer.attrs[name+"-default"].value
|
default_choice: printer.attrs[name+"-default"].value,
|
||||||
|
mime_type: Mimer.get_type(selectedFile)
|
||||||
})
|
})
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,6 +114,27 @@ function ippName(name, value)
|
||||||
{
|
{
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
case "document-format":
|
||||||
|
switch(value) {
|
||||||
|
case "application/octet-stream":
|
||||||
|
return qsTr("Auto-sense");
|
||||||
|
case "application/pdf":
|
||||||
|
return qsTr("PDF");
|
||||||
|
case "application/postscript":
|
||||||
|
return qsTr("Postscript");
|
||||||
|
case "image/pwg-raster":
|
||||||
|
return qsTr("PWG-raster");
|
||||||
|
case "image/urf":
|
||||||
|
return qsTr("URF-raster");
|
||||||
|
case "image/png":
|
||||||
|
return qsTr("PNG");
|
||||||
|
case "image/jpeg":
|
||||||
|
return qsTr("JPEG");
|
||||||
|
case "image/gif":
|
||||||
|
return qsTr("GIF");
|
||||||
|
default:
|
||||||
|
return value;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
@ -123,6 +144,38 @@ function endsWith(ending, string)
|
||||||
return string.lastIndexOf(ending) == (string.length - ending.length);
|
return string.lastIndexOf(ending) == (string.length - ending.length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function canConvertPdfTo(type)
|
||||||
|
{
|
||||||
|
var targets = ["application/octet-stream", "application/pdf", "image/pwg-raster", "image/urf"];
|
||||||
|
return has(targets, type)
|
||||||
|
}
|
||||||
|
|
||||||
|
function canConvertImageTo(type)
|
||||||
|
{
|
||||||
|
var targets = ["application/octet-stream", "image/jpeg", "image/png", "image/pwg-raster", "image/urf", "image/gif"];
|
||||||
|
return has(targets, type)
|
||||||
|
}
|
||||||
|
|
||||||
|
function limitChoices(name, choices, mimeType)
|
||||||
|
{
|
||||||
|
switch(name) {
|
||||||
|
case "document-format":
|
||||||
|
if(mimeType == "application/pdf")
|
||||||
|
{
|
||||||
|
return choices.filter(canConvertPdfTo)
|
||||||
|
}
|
||||||
|
else if(mimeType == "image/jpeg" || mimeType == "image/png")
|
||||||
|
{
|
||||||
|
return choices.filter(canConvertImageTo);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return ["application/octet-stream"];
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
return choices;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var media =
|
var media =
|
||||||
{"asme_f_28x40in": "28 x 40″",
|
{"asme_f_28x40in": "28 x 40″",
|
||||||
|
|
|
@ -32,9 +32,25 @@ void ppm2PwgEnv(QStringList& env, bool urf, quint32 Quality, QString PaperSize,
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConvertWorker::convertPdf(QNetworkRequest request, QString filename, QTemporaryFile* tempfile,
|
void ConvertWorker::convertPdf(QNetworkRequest request, QString filename, QTemporaryFile* tempfile,
|
||||||
bool urf, quint32 Colors, quint32 Quality, QString PaperSize,
|
QString targetFormat, quint32 Colors, quint32 Quality, QString PaperSize,
|
||||||
quint32 HwResX, quint32 HwResY, bool TwoSided, bool Tumble)
|
quint32 HwResX, quint32 HwResY, bool TwoSided, bool Tumble)
|
||||||
{
|
{
|
||||||
|
bool urf = false;
|
||||||
|
|
||||||
|
if(targetFormat == "image/urf")
|
||||||
|
{
|
||||||
|
urf = true;
|
||||||
|
}
|
||||||
|
else if(targetFormat == "image/pwg-raster")
|
||||||
|
{
|
||||||
|
//ok
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
emit failed(tr("Unsupported target format"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if(urf && (HwResX != HwResY))
|
if(urf && (HwResX != HwResY))
|
||||||
{ // URF only supports symmetric resolutions
|
{ // URF only supports symmetric resolutions
|
||||||
qDebug() << "Unsupported URF resolution" << PaperSize;
|
qDebug() << "Unsupported URF resolution" << PaperSize;
|
||||||
|
@ -141,9 +157,31 @@ void ConvertWorker::convertPdf(QNetworkRequest request, QString filename, QTempo
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConvertWorker::convertImage(QNetworkRequest request, QString filename, QTemporaryFile* tempfile,
|
void ConvertWorker::convertImage(QNetworkRequest request, QString filename, QTemporaryFile* tempfile,
|
||||||
bool urf, quint32 Colors, quint32 Quality, QString PaperSize,
|
QString targetFormat, quint32 Colors, quint32 Quality, QString PaperSize,
|
||||||
quint32 HwResX, quint32 HwResY)
|
quint32 HwResX, quint32 HwResY)
|
||||||
{
|
{
|
||||||
|
bool urf = false;
|
||||||
|
QString imageFormat = "";
|
||||||
|
QStringList supportedImageFormats = {"image/jpeg", "image/png", "image/gif"};
|
||||||
|
|
||||||
|
if(targetFormat == "image/urf")
|
||||||
|
{
|
||||||
|
urf = true;
|
||||||
|
}
|
||||||
|
else if(targetFormat == "image/pwg-raster")
|
||||||
|
{
|
||||||
|
//ok
|
||||||
|
}
|
||||||
|
else if(supportedImageFormats.contains(targetFormat))
|
||||||
|
{
|
||||||
|
imageFormat = targetFormat.split("/")[1];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
emit failed(tr("Unsupported target format"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if(urf && (HwResX != HwResY))
|
if(urf && (HwResX != HwResY))
|
||||||
{ // URF only supports symmetric resolutions
|
{ // URF only supports symmetric resolutions
|
||||||
qDebug() << "Unsupported URF resolution" << PaperSize;
|
qDebug() << "Unsupported URF resolution" << PaperSize;
|
||||||
|
@ -184,9 +222,25 @@ void ConvertWorker::convertImage(QNetworkRequest request, QString filename, QTem
|
||||||
painter.drawImage(0, (outImage.height()-inImage.height())/2, inImage);
|
painter.drawImage(0, (outImage.height()-inImage.height())/2, inImage);
|
||||||
painter.end();
|
painter.end();
|
||||||
|
|
||||||
|
if(imageFormat != "")
|
||||||
|
{ // We are converting to a supported image format
|
||||||
QTemporaryFile tmpImage;
|
QTemporaryFile tmpImage;
|
||||||
tmpImage.open();
|
tmpImage.open();
|
||||||
qDebug() << "Raw image: " << tmpImage.fileName();
|
qDebug() << "Raw image: " << tmpImage.fileName();
|
||||||
|
|
||||||
|
outImage.save(tmpImage.fileName(), imageFormat.toStdString().c_str());
|
||||||
|
QFile tempfileAsFile(tempfile->fileName());
|
||||||
|
tempfileAsFile.open(QIODevice::Append);
|
||||||
|
tempfileAsFile.write(tmpImage.readAll());
|
||||||
|
tempfileAsFile.close();
|
||||||
|
tmpImage.close();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ // We are converting to a raster format
|
||||||
|
QTemporaryFile tmpImage;
|
||||||
|
tmpImage.open();
|
||||||
|
qDebug() << "Raw image: " << tmpImage.fileName();
|
||||||
|
|
||||||
outImage.save(tmpImage.fileName(), Colors == 1 ? "pgm" : "ppm");
|
outImage.save(tmpImage.fileName(), Colors == 1 ? "pgm" : "ppm");
|
||||||
tmpImage.close();
|
tmpImage.close();
|
||||||
|
|
||||||
|
@ -222,6 +276,7 @@ void ConvertWorker::convertImage(QNetworkRequest request, QString filename, QTem
|
||||||
ppm2pwg->waitForFinished();
|
ppm2pwg->waitForFinished();
|
||||||
|
|
||||||
qDebug() << "Finished";
|
qDebug() << "Finished";
|
||||||
|
}
|
||||||
|
|
||||||
emit done(request, tempfile);
|
emit done(request, tempfile);
|
||||||
qDebug() << "posted";
|
qDebug() << "posted";
|
||||||
|
|
|
@ -9,11 +9,11 @@ class ConvertWorker : public QObject
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void convertPdf(QNetworkRequest request, QString filename, QTemporaryFile* tempfile,
|
void convertPdf(QNetworkRequest request, QString filename, QTemporaryFile* tempfile,
|
||||||
bool urf, quint32 Colors, quint32 Quality, QString PaperSize,
|
QString targetFormat, quint32 Colors, quint32 Quality, QString PaperSize,
|
||||||
quint32 HwResX, quint32 HwResY, bool TwoSided, bool Tumble);
|
quint32 HwResX, quint32 HwResY, bool TwoSided, bool Tumble);
|
||||||
|
|
||||||
void convertImage(QNetworkRequest request, QString filename, QTemporaryFile* tempfile,
|
void convertImage(QNetworkRequest request, QString filename, QTemporaryFile* tempfile,
|
||||||
bool urf, quint32 Colors, quint32 Quality, QString PaperSize,
|
QString targetFormat, quint32 Colors, quint32 Quality, QString PaperSize,
|
||||||
quint32 HwResX, quint32 HwResY);
|
quint32 HwResX, quint32 HwResY);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
|
@ -250,8 +250,9 @@ bool IppPrinter::hasPrinterDeviceIdCmd(QString cmd)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: make alwaysConvert force ratser format
|
||||||
void IppPrinter::print(QJsonObject attrs, QString filename, bool alwaysConvert){
|
void IppPrinter::print(QJsonObject attrs, QString filename, bool alwaysConvert)
|
||||||
|
{
|
||||||
qDebug() << "printing" << filename << attrs;
|
qDebug() << "printing" << filename << attrs;
|
||||||
|
|
||||||
_progress = "";
|
_progress = "";
|
||||||
|
@ -270,15 +271,20 @@ void IppPrinter::print(QJsonObject attrs, QString filename, bool alwaysConvert){
|
||||||
QJsonObject o = opAttrs();
|
QJsonObject o = opAttrs();
|
||||||
o.insert("job-name", QJsonObject {{"tag", IppMsg::NameWithoutLanguage}, {"value", fileinfo.fileName()}});
|
o.insert("job-name", QJsonObject {{"tag", IppMsg::NameWithoutLanguage}, {"value", fileinfo.fileName()}});
|
||||||
|
|
||||||
|
QJsonArray jobCreationAttributes = _attrs["job-creation-attributes-supported"].toObject()["value"].toArray();
|
||||||
|
|
||||||
// Only include if printer supports it
|
QString documentFormat = getAttrOrDefault(attrs, "document-format").toString();
|
||||||
// if (filename.endsWith("pdf"))
|
|
||||||
// {
|
if(documentFormat == "")
|
||||||
// attrs.insert("document-format", QJsonObject {{"tag", 73}, {"value", "application/pdf"}});
|
{
|
||||||
// }
|
emit convertFailed(tr("Unknown document format"));
|
||||||
// else if (filename.endsWith("jpg")) {
|
return;
|
||||||
// attrs.insert("document-format", QJsonObject {{"tag", 73}, {"value", "image/jpeg"}});
|
}
|
||||||
// }
|
|
||||||
|
if(!jobCreationAttributes.contains("document-format"))
|
||||||
|
{ // Only include if printer supports it
|
||||||
|
attrs.remove("document-format");
|
||||||
|
}
|
||||||
|
|
||||||
qDebug() << "Printing job" << o << attrs;
|
qDebug() << "Printing job" << o << attrs;
|
||||||
IppMsg job = IppMsg(o, attrs);
|
IppMsg job = IppMsg(o, attrs);
|
||||||
|
@ -294,16 +300,6 @@ void IppPrinter::print(QJsonObject attrs, QString filename, bool alwaysConvert){
|
||||||
|
|
||||||
Mimer* mimer = Mimer::instance();
|
Mimer* mimer = Mimer::instance();
|
||||||
QString mimeType = mimer->get_type(filename);
|
QString mimeType = mimer->get_type(filename);
|
||||||
ConvertFrom from = NotConvertable;
|
|
||||||
ConvertTarget target = NoConvert;
|
|
||||||
|
|
||||||
if(mimeType == "application/pdf")
|
|
||||||
{
|
|
||||||
from = Pdf;
|
|
||||||
}
|
|
||||||
else if (mimeType.contains("image")) {
|
|
||||||
from = Image;
|
|
||||||
}
|
|
||||||
|
|
||||||
QJsonArray supportedMimeTypes = _attrs["document-format-supported"].toObject()["value"].toArray();
|
QJsonArray supportedMimeTypes = _attrs["document-format-supported"].toObject()["value"].toArray();
|
||||||
|
|
||||||
|
@ -313,23 +309,11 @@ void IppPrinter::print(QJsonObject attrs, QString filename, bool alwaysConvert){
|
||||||
|
|
||||||
qDebug() << "supportsPdf" << supportsPdf;
|
qDebug() << "supportsPdf" << supportsPdf;
|
||||||
|
|
||||||
if(alwaysConvert || from == Image || (from == Pdf && !supportsPdf))
|
|
||||||
{
|
|
||||||
if(supportedMimeTypes.contains("image/pwg-raster"))
|
|
||||||
{
|
|
||||||
target = PwgConvert;
|
|
||||||
}
|
|
||||||
else if (supportedMimeTypes.contains("image/urf"))
|
|
||||||
{
|
|
||||||
target = UrfConvert;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QJsonValue PrinterResolutionRef = getAttrOrDefault(attrs, "printer-resolution");
|
QJsonValue PrinterResolutionRef = getAttrOrDefault(attrs, "printer-resolution");
|
||||||
quint32 HwResX = PrinterResolutionRef.toObject()["x"].toInt();
|
quint32 HwResX = PrinterResolutionRef.toObject()["x"].toInt();
|
||||||
quint32 HwResY = PrinterResolutionRef.toObject()["y"].toInt();
|
quint32 HwResY = PrinterResolutionRef.toObject()["y"].toInt();
|
||||||
|
|
||||||
if(target == UrfConvert)
|
if(documentFormat == "image/urf")
|
||||||
{ // Ensure symmetric resolution for URF
|
{ // Ensure symmetric resolution for URF
|
||||||
if(HwResX < HwResY)
|
if(HwResX < HwResY)
|
||||||
{
|
{
|
||||||
|
@ -358,7 +342,7 @@ void IppPrinter::print(QJsonObject attrs, QString filename, bool alwaysConvert){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(target != NoConvert)
|
if(documentFormat != mimeType)
|
||||||
{
|
{
|
||||||
file.close();
|
file.close();
|
||||||
|
|
||||||
|
@ -370,7 +354,7 @@ void IppPrinter::print(QJsonObject attrs, QString filename, bool alwaysConvert){
|
||||||
|
|
||||||
setBusyMessage("Converting");
|
setBusyMessage("Converting");
|
||||||
|
|
||||||
if(from == Pdf )
|
if(mimeType == "application/pdf")
|
||||||
{
|
{
|
||||||
|
|
||||||
QString Sides = getAttrOrDefault(attrs, "sides").toString();
|
QString Sides = getAttrOrDefault(attrs, "sides").toString();
|
||||||
|
@ -386,12 +370,12 @@ void IppPrinter::print(QJsonObject attrs, QString filename, bool alwaysConvert){
|
||||||
Tumble = true;
|
Tumble = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
emit doConvertPdf(request, filename, tempfile, target==UrfConvert, Colors, Quality,
|
emit doConvertPdf(request, filename, tempfile, documentFormat, Colors, Quality,
|
||||||
PaperSize, HwResX, HwResY, TwoSided, Tumble);
|
PaperSize, HwResX, HwResY, TwoSided, Tumble);
|
||||||
}
|
}
|
||||||
else if (from == Image)
|
else if (mimeType.contains("image"))
|
||||||
{
|
{
|
||||||
emit doConvertImage(request, filename, tempfile, target==UrfConvert, Colors, Quality,
|
emit doConvertImage(request, filename, tempfile, documentFormat, Colors, Quality,
|
||||||
PaperSize, HwResX, HwResY);
|
PaperSize, HwResX, HwResY);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -32,20 +32,6 @@ public:
|
||||||
|
|
||||||
bool hasPrinterDeviceIdCmd(QString cmd);
|
bool hasPrinterDeviceIdCmd(QString cmd);
|
||||||
|
|
||||||
enum ConvertTarget
|
|
||||||
{
|
|
||||||
NoConvert,
|
|
||||||
PwgConvert,
|
|
||||||
UrfConvert
|
|
||||||
};
|
|
||||||
|
|
||||||
enum ConvertFrom
|
|
||||||
{
|
|
||||||
NotConvertable,
|
|
||||||
Pdf,
|
|
||||||
Image
|
|
||||||
};
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void urlChanged();
|
void urlChanged();
|
||||||
void attrsChanged();
|
void attrsChanged();
|
||||||
|
@ -56,11 +42,11 @@ signals:
|
||||||
void cancelStatus(bool status);
|
void cancelStatus(bool status);
|
||||||
|
|
||||||
void doConvertPdf(QNetworkRequest request, QString filename, QTemporaryFile* tempfile,
|
void doConvertPdf(QNetworkRequest request, QString filename, QTemporaryFile* tempfile,
|
||||||
bool urf, quint32 Colors, quint32 Quality, QString PaperSize,
|
QString targetFormat, quint32 Colors, quint32 Quality, QString PaperSize,
|
||||||
quint32 HwResX, quint32 HwResY, bool TwoSided, bool Tumble);
|
quint32 HwResX, quint32 HwResY, bool TwoSided, bool Tumble);
|
||||||
|
|
||||||
void doConvertImage(QNetworkRequest request, QString filename, QTemporaryFile* tempfile, bool urf,
|
void doConvertImage(QNetworkRequest request, QString filename, QTemporaryFile* tempfile,
|
||||||
quint32 Colors, quint32 Quality, QString PaperSize,
|
QString targetFormat, quint32 Colors, quint32 Quality, QString PaperSize,
|
||||||
quint32 HwResX, quint32 HwResY);
|
quint32 HwResX, quint32 HwResY);
|
||||||
|
|
||||||
void busyMessageChanged();
|
void busyMessageChanged();
|
||||||
|
|
|
@ -140,6 +140,10 @@
|
||||||
<source>Unsupported resolution (dpi)</source>
|
<source>Unsupported resolution (dpi)</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Unsupported target format</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>CoverPage</name>
|
<name>CoverPage</name>
|
||||||
|
@ -209,6 +213,10 @@
|
||||||
<source>Cannot convert this file format</source>
|
<source>Cannot convert this file format</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Unknown document format</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>JobsPage</name>
|
<name>JobsPage</name>
|
||||||
|
@ -271,6 +279,10 @@
|
||||||
<source>Print media</source>
|
<source>Print media</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Transfer format</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>utils</name>
|
<name>utils</name>
|
||||||
|
@ -350,5 +362,37 @@
|
||||||
<source>dots/cm</source>
|
<source>dots/cm</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Auto-sense</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>PDF</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Postscript</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>PWG-raster</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>URF-raster</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>PNG</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>JPEG</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GIF</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|
|
@ -140,6 +140,10 @@
|
||||||
<source>Unsupported resolution (dpi)</source>
|
<source>Unsupported resolution (dpi)</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Unsupported target format</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>CoverPage</name>
|
<name>CoverPage</name>
|
||||||
|
@ -209,6 +213,10 @@
|
||||||
<source>Cannot convert this file format</source>
|
<source>Cannot convert this file format</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Unknown document format</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>JobsPage</name>
|
<name>JobsPage</name>
|
||||||
|
@ -271,6 +279,10 @@
|
||||||
<source>Print media</source>
|
<source>Print media</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Transfer format</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>utils</name>
|
<name>utils</name>
|
||||||
|
@ -350,5 +362,37 @@
|
||||||
<source>dots/cm</source>
|
<source>dots/cm</source>
|
||||||
<translation>ppp</translation>
|
<translation>ppp</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Auto-sense</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>PDF</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Postscript</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>PWG-raster</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>URF-raster</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>PNG</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>JPEG</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GIF</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|
|
@ -140,6 +140,10 @@
|
||||||
<source>Unsupported resolution (dpi)</source>
|
<source>Unsupported resolution (dpi)</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Unsupported target format</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>CoverPage</name>
|
<name>CoverPage</name>
|
||||||
|
@ -209,6 +213,10 @@
|
||||||
<source>Cannot convert this file format</source>
|
<source>Cannot convert this file format</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Unknown document format</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>JobsPage</name>
|
<name>JobsPage</name>
|
||||||
|
@ -271,6 +279,10 @@
|
||||||
<source>Print media</source>
|
<source>Print media</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Transfer format</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>utils</name>
|
<name>utils</name>
|
||||||
|
@ -350,5 +362,37 @@
|
||||||
<source>dots/cm</source>
|
<source>dots/cm</source>
|
||||||
<translation>pts/cm</translation>
|
<translation>pts/cm</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Auto-sense</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>PDF</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Postscript</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>PWG-raster</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>URF-raster</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>PNG</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>JPEG</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GIF</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|
|
@ -140,6 +140,10 @@
|
||||||
<source>Unsupported resolution (dpi)</source>
|
<source>Unsupported resolution (dpi)</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Unsupported target format</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>CoverPage</name>
|
<name>CoverPage</name>
|
||||||
|
@ -209,6 +213,10 @@
|
||||||
<source>Cannot convert this file format</source>
|
<source>Cannot convert this file format</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Unknown document format</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>JobsPage</name>
|
<name>JobsPage</name>
|
||||||
|
@ -271,6 +279,10 @@
|
||||||
<source>Print media</source>
|
<source>Print media</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Transfer format</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>utils</name>
|
<name>utils</name>
|
||||||
|
@ -350,5 +362,37 @@
|
||||||
<source>dots/cm</source>
|
<source>dots/cm</source>
|
||||||
<translation>点/厘米</translation>
|
<translation>点/厘米</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Auto-sense</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>PDF</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Postscript</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>PWG-raster</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>URF-raster</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>PNG</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>JPEG</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GIF</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|
|
@ -140,6 +140,10 @@
|
||||||
<source>Unsupported resolution (dpi)</source>
|
<source>Unsupported resolution (dpi)</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Unsupported target format</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>CoverPage</name>
|
<name>CoverPage</name>
|
||||||
|
@ -209,6 +213,10 @@
|
||||||
<source>Cannot convert this file format</source>
|
<source>Cannot convert this file format</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Unknown document format</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>JobsPage</name>
|
<name>JobsPage</name>
|
||||||
|
@ -271,6 +279,10 @@
|
||||||
<source>Print media</source>
|
<source>Print media</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Transfer format</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>utils</name>
|
<name>utils</name>
|
||||||
|
@ -350,5 +362,37 @@
|
||||||
<source>dots/cm</source>
|
<source>dots/cm</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Auto-sense</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>PDF</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Postscript</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>PWG-raster</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>URF-raster</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>PNG</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>JPEG</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GIF</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|
Loading…
Reference in a new issue